Automatisierung mit DWD-Tageshöchstwert

Ich hatte vor vielen Monaten über eine meiner Automatisierungen geschrieben, mit welcher ich an warmen Tagen die Rolläden morgens automatisch wieder etwas schließe, damit es drinnen nicht zu warm wird. Hierfür nutze ich die Integration OpenWeatherMap, welche (etwas versteckt) auch die Info mit liefert, mit welcher Höchsttemperatur an einem Tag zu rechnen ist.

Da es nun mehrfach Probleme mit der aktuellen Umsetzung dieser Automatisierung bei euch gegeben hat (obwohl die Automatisierung erst heute bei mir noch aktiv war) und der Wunsch nach einer Anleitung für die HACS-Integration zur Wettervorhersage vom DWD aufkam, habe ich meine bestehende Automatisierung einfach mit den von der DWD-Integration gebotenen Daten nachgebaut.

Der Sommer steht ja unmittelbar vor der Tür, also dürfte dies für euch nützlich sein 😉

Zu HACS und der Einrichtung der Integration selbst sage ich hier jedoch nichts mehr. Ich habe alle default-Einstellungen übernommen uns als Station eine uns relativ nahgelegene gewählt (diese wird einem im Idealfall ja auch vorgeschlagen).

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 410 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!

Meine Automatisierung funktioniert wie folgt:

  • Um X Uhr feuert die Automatisierung ab
  • Sofern die Condition erfüllt ist, dass es an dem Tag mindestens Y Grad warm werden soll
  • werden dann als Action die relevanten Rolläden wieder etwas geschlossen

Ich habe mich für diese Variante entschieden, da man so im Sommer beim Aufstehen und Frühstück noch Tageslicht hat und ggf. sogar gut durchlüften kann. Bevor es dann aber richtig warm wird (X Uhr), prüfen wir, ob es wärmer als Y Grad werden soll.

Tageshöchstwert von DWD auslesen

Wenn du DWD über HACS als Integration eingerichtet hast, solltest du eine neue Entität erhalten, welche mit weather. beginnt und dann gefolgt vom Namen/Ort der von dir gewählten Wetterstation ist. In meinem Fall ist die gewählte DWD-Station in Neunkirchen-Seelscheid Krawinkel, weshalb die entsprechende Entität bei mir weather.neunkirchen_seelscheid_krawinkel_daily heißt.

Suche ich diese Entität in den Entwicklerwerkzeugen unter Zustände, wird mir folgendes angezeigt:

Vorhersage-Attribut der DWD-Integration auslesen

Rechts im Bereich Attribute erhalten wir zahlreiche Informationen, die von uns genutzt werden können. Konkret interessiert uns der Block forecast, welcher von einer Aufzählung gefolgt wird. Je Tag (heute, morgen, übermorgen usw.) werden dann wiederum zahlreiche Vorhersagen gemacht, wie die temperature oder templow.

temperature steht für die Tageshöchsttemperatur und templow für die Tagestiefsttemperatur (gibt es dieses Wort?!?). Um den Wert eines solchen Attributes „auszulesen“, dient in Home Assistant folgender „Code“:

states.weather.neunkirchen_seelscheid_krawinkel_daily.attributes.forecast[0].temperature

Diesen „Code“ musst du um den Namen deiner Entität anpassen, also das neunkirchen_seelscheid_krawinkel austauschen. Mit .attributes greifen wir auf die Attribute zu und navigieren uns dann durch diese. forecast[0] bedeutet, dass wir die Werte vom ersten Eintrag unter forecast haben wollen (also heute). Wenn dich die Werte für morgen interessieren (also relativ betrachtet), kannst du diese über forecast[1] erreichen.

Unter Entwicklerwerkzeuge -> TEMPLATE kannst du ohne viel Aufwand überprüfen, ob dir eine Temperatur angezeigt wird. Hierfür musst du lediglich den „Code“ in {{ bzw. }} einpacken und das dann im Template-Editor eingeben. Das sollte dann wie folgt aussehen:

Test der Vorhersage des Tageshöchstwertes

Wenn der Zugriff auf solche Attribute für dich vollkommendes Neuland ist, kannst du dir diese Beitrag von vor einigen Wochen von mir hierzu anschauen: Attribute eines Sensors in Home Assistant nutzen

Code-Beispiel für eine Automatisierung

Nun haben wir eigentlich alles, was wir benötigen, um anhand des Temperatur-Tageshöchstwerte gem. DWD-Integration eine kleine Automatisierung zu basteln.

Wie bereits ausgeführt, wird diese Automatisierung immer zu einer bestimmten Uhrzeit prüfen starten, jedoch die Action nur auslösen, wenn die Kondition Temperatur-Tageshöchstwert > Y erfüllt wird.

Wenn du in Home Assistant eine neue Automatisierung anlegst und oben rechts bei den 3 Punkten Als YAML bearbeiten auswählst, solltest du den folgenden Code einfach einfügen können:

alias: 1-DWD-Test
description: ""
trigger:
  - platform: time
    at: "08:15:00"
condition:
  - condition: template
    value_template: >-
      {{
      states.weather.neunkirchen_seelscheid_krawinkel_daily.attributes.forecast[0].temperature|int
      > 21 }}
action:
  - service: cover.set_cover_position
    data: {}

Danach wählst du bei den 3 Punkten wieder Im visuellen Editor bearbeiten und schon wird das Code-Beispiel im Editor dargestellt und du kannst deine Action nach belieben ergänzen!

In meinem Code-Beispiel für die Automatisierung steht in Zeile 11 „> 21 }}“. Die 21 ist hierbei mein Temperatur-Schwellwert, ab welchem ich die Rolläden wieder etwas schließe. Diesen Wert kannst du nach deinem Belieben natürlich anpassen!

Rolläden je nach Sonnenstand wieder öffnen

Anhand des Code-Beispiels für eine Automatisierung, kannst du nun morgens die Rolläden wieder etwas schließen, wenn es am jeweiligen Tag zu warm wird. Die Rolläden dienen als Schutz vor der direkten Sonneneinstrahlung.

Sobald die Sonne „weg ist“, kann man dann die Rolläden auch wieder automatisch öffnen lassen. Mit „weg ist“ meine ich: Die Sonne wandert ja im Tagesverlauf. Und sofern Fenster etwas in Richtung Osten gerichtet sind, kann es ab Mittag/Nachmittag sein, dass die Sonne die Fenster gar nicht mehr erreicht. In einem solchen Fall wäre es schick, wenn die Rolläden sich automatisch wieder öffnen, wenn die Sonne nicht mehr auf die Fenster scheint.

In meinem Beitrag Automation anhand des aktuellen Sonnenstandes beschreibe ich, wie man in Home Assistant Automatisierungen anhand des aktuellen Sonnenstandes, also Azimut ausführen kann. Ggf. ist das für dich ja auch interessant, um die Automatisierung der Rolläden noch weiter zu perfektionieren! 😉

Update 08.04.2024

Durch Änderungen in Home Assistant werden bei Wetterdaten die Attribute nicht mehr wie in diesem Beitrag geschrieben automatisch geliefert. Diese müssen nun mittels Template generiert werden.

Hierfür ergänzt du in deiner configuration.yaml folgenden Code:

template:
  - trigger:
      - platform: time_pattern
        hours: /1
    action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.forecast_home
        data:
          type: daily
        response_variable: vorhersage
    sensor:
      - name: Wettervorhersage
        unique_id: weather_entity_forecast
        state: "{{ now().isoformat() }}"
        icon: mdi:calendar-range
        attributes:
          forecast: "{{ vorhersage['weather.forecast_home'].forecast }}"

Mit diesem Code (Neuladen der YAML-Dateien und Warten, bis X:00 Uhr erreicht wurde, da nur 1x/Stunde ausgeführt wird, nicht vergessen ;)) erhältst du einen neuen Sensor sensor.wettervorhersage, welche die im Beitrag beschriebenen Attribute wieder beinhalten sollte.

Vermutlich musst du aus meinem Code-Beispiel noch weather.forecast_home gegen deine passende Entität austauschen, damit du Daten erhältst!

Dieser Beitrag ist Teil einer Beitrags-Serie rund um Home Assistant.

Produktempfehlungen

9 Gedanken zu „Automatisierung mit DWD-Tageshöchstwert“

  1. Entweder bin ich blind, blöd, habe etwas falsch eingestellt, oder es hat sich was an der Integration geändert.
    Aber ich bekomme aus dem aktivierten _daily keine forecast Werte.

    Funktioniert das noch?

    Und OWM als alternativer schmeisst bei mir nur API KEy fehler, was aber scheinbar aktuell verbreitet ist

    Antworten
    • Ne, da hat sich tatsächlich etwas an Home Assistant zwischenzeitlich geändert. Hierzu werde ich die Tage mal etwas schreiben und ein Update hier verfassen.

      Auf die Schnell für dich aber schonmal folgender Hinweis:
      Man muss seit 2024.3 die im Beitrag genutzten Daten mittels Template generieren.

      Folgender Code in deiner configuration.yaml erzeugt dir einen neuen Sensor sensor.wettervorhersage, welcher dann wieder über die im Beitrag beschriebenen Attribute verfügt:


      template:
      - trigger:
      - platform: time_pattern
      hours: /1
      action:
      - service: weather.get_forecasts
      target:
      entity_id:
      - weather.forecast_home
      data:
      type: daily
      response_variable: vorhersage
      sensor:
      - name: Wettervorhersage
      unique_id: weather_entity_forecast
      state: "{{ now().isoformat() }}"
      icon: mdi:calendar-range
      attributes:
      forecast: "{{ vorhersage['weather.forecast_home'].forecast }}"

      Ggf. musst du hierbei weather.forecast_home gegen deine passende Entität tauschen!

      Antworten
      • Da das Code-Beispiel hier im Kommentar natürlich nicht schön formatiert dargestellt wird, habe ich diesen schnell hier im Beitrag ergänzt.

        Ich hoffe das hilft dir!

        Antworten
  2. Mega gut! Das hab ich gesucht.
    Geht auch mit der „OpenWeatherMap“ Integration von HA. Hier der Code zum Auslesen:

    {{ states.weather.forecast_home.attributes.forecast[0].temperature }}

    Habe mir damit ein extra Sensor erstellt. Vllt brauch man es an anderer Stelle nochmal.
    Sehr nice!
    Danke dir!

    Antworten
  3. Ja das Thema Rolladen hab ich bei mir auch noch nicht so richtig lösen können.

    Bei mir wäre das Problemzimmer das Kinderzimmer.
    ich würde gerne anhand des Azimuth das Rollo runter fahren lassen wenn es draußen wärmer ist als 20Grad und das Rollo oben ist.

    Aber was mache ich wenn das Kind zwischendurch ein Mittagsschläfchen macht und nach dem Mittagsschlaf das Rollo wieder oben bei 0% ist.
    Ich bräuchte irgendwie eine erneute Abfrage.:
    „Wenn Rollo in Azimuth Zeitraum seit 30 Minuten bei 0% steht löse Automation erneut aus.“
    Aber ich hab absolut keine Ahnung wie ich sowas umsetzen kann.

    ich bin mir gerade nicht mal sicher ob die Automation so schon funktionieren wird:
    alias: Kinderzimmer Rollo 60% Sonne
    description: „“
    trigger:
    – platform: numeric_state
    entity_id: sensor.sun_azimuth
    above: 210
    below: 300
    condition:
    – condition: and
    conditions:
    – condition: template
    value_template: >-
    {{ states.weather.luchow_daily.attributes.forecast[0].temperature|int
    > 20 }}
    – condition: state
    entity_id: cover.kinderzimmer_rollo
    attribute: current_position
    state: „0“
    action:
    – service: cover.set_cover_position
    data:
    position: 40
    target:
    entity_id: cover.kinderzimmer_rollo
    mode: single

    Antworten
    • Also zu deinem Beispiel:

      condition: state
      entity_id: cover.kinderzimmer_rollo
      attribute: current_position
      state: „0“

      Hier würde ich nicht auf state: „0“ (Achtung mit Anführungszeichen oben und unten!) prüfen, sondern auf state: ‚open‘.

      Und dann brauchst du ja noch eine zweite Automation, die ein zweites Mal (oder noch häufiger ;)) auslöst, wenn der Mittagsschlaf vorbei ist. Hier würde ich als Trigger „state: ‚open'“ und als conditions dann

      • Deine Prüfung des sensor.sun_azimuth
      • Deine Prüfung auf die Tageshöchsttemperatur
      • Und zusätzlich die Prüfung, ob der Rolladen für 30 Minuten offen ist

      Wenn du dabei Hilfe brauchst, lass‘ es mich wissen 😉

      Antworten
  4. ich hab bei mir die entity soweit angepasst und wenn ich diese nun im Template anzeigen lassen will kommt ein Fehler

    CODE: {{ states.weather.nuernberg.attributes.forecast[0].temperature }}

    FEHLER: UndefinedError: ‚None‘ has no attribute ‚attributes‘

    Antworten
    • Gibt es denn eine Entität weather.nuernberg? Hast du das mal unter „Zustände“ geprüft? Ggf. ist bei dir eine andere Benamsung erfolgt?

      Antworten

Schreibe einen Kommentar