🌦️☀️ Automatisiere deine Markise mit Home Assistant und örtlichen Wetterdaten! ☁️🌬️

Viele Smart-Home-Systeme greifen auf allgemeine Wetterdaten zurück. Diese sind allerdings häufig ungenau oder zu weit vom eigenen Standort entfernt. Ich zeige dir, wie du die Daten einer örtlichen Wetterstation von einer Webseite ausliest und für deine Automatisierungen nutzen kannst – ganz einfach mit Home Assistant!

🔧 Voraussetzungen

Um das Ganze umzusetzen, benötigst du:

  • Eine installierte und eingerichtete Instanz von Home Assistant
  • Zugriff auf eine Webseite mit Wetterdaten einer lokalen Wetterstation
  • Grundkenntnisse in Automatisierungen und Template-Sensoren in Home Assistant

🧩 Wetterdaten abrufen – So funktioniert’s

Wir nutzen die Integration von Wetterdaten über RESTful Sensoren, um Informationen wie:

  • Regenstatus
  • Windgeschwindigkeit
  • Wetterlage (z.B. sonnig, bewölkt)
  • Temperatur

auszulesen. Diese Daten werden anschließend in eigene Sensoren überführt, die Home Assistant versteht und in Automatisierungen verwendet.

Zunächst müssen wir uns auf die Seite von Weather Underground begeben. Dort lasst euch den Quelltext anzeigen und kopiert diesen in einen Editor Tool ( z.B. von Windows).

Um den API Eintrag zu finden, sucht nach der Zeichenkette

https://api.weather.com/v2/pws/observations/current

Kopiert euch die gesamte Zeichenkette inklusive apiKey und stationId und passt den Inhalt wie folgt an.

https://api.weather.com/v2/pws/observations/current?apiKey=**deinAPI-KEY**&stationId=**deineStationID**&numericPrecision=decimal&format=json&units=m

die „**“ sind nur zur eindeutigen Identifizierung zu verstehen und nicht dem Key und der StationID hinzuzufügen!

Als nächstes geht mit dem Editor eurer Wahl ( z.B. File Editor oder Studio Code Server ) in eurer Home Assistant Instanz und fügt in der configuration.yaml einen neuen Rest Sensor ein.

rest:
  - resource: https://api.weather.com/v2/pws/observations/current?apiKey=**deinAPI-KEY**&stationId=**deineStationID**&numericPrecision=decimal&format=json&units=m
    scan_interval: 600 
    sensor:
      - name: Wetterstation Lahr
        unique_id: 82413cbe-2261-4d41-a7f4-c271cba75645 #hier musst du eine eigene eindeutige ID erstellen !
        value_template: >
          {{ value_json.observations[0].metric.temp }}
        json_attributes:
          - observations

Hinweis: Bitte geht nicht unter 600 Sekunden beim Scan Interval. In der Regel sehen es die Betreiber einer Website nicht gerne , wenn zu viele Abfragen von einer IP – Adresse kommen. Mit den 600 Sekunden solltet ihr auf der sicheren Seite sein.

⚙️ Automatisierung der Markise

Die Logik ist einfach:

  • Wenn es regnet oder starker Wind herrscht, fährt die Markise automatisch ein.
  • Bei Sonne und angenehmen Bedingungen fährt sie aus.

Die Automatisierung lässt sich natürlich noch weiter verfeinern – zum Beispiel durch Tageszeiten oder Anwesenheit.

Template Helfer Sensoren erstellen

Der nächste wichtige Schritt ist aus den Daten, die nun im Sensor Wetterstation Lahr (obervations) stehen alle relevanten Daten für eine Automatisierung auszulesen.

Dazu legt euch 4 Helfer an vom Typ Template Sensor

Hinweis: Bei mir habe ich die Wetterstation „’sensor.wetterstation_lahr“ genannt. Hier müsst ihr in allen Code Zeilen den von euch vergebenen Namen verwenden!

Wetterstation Lahr Windgeschwindigkeit

{{ state_attr('sensor.wetterstation_Lahr', 'observations')[0]['metric']['windSpeed'] }}

Einheit : km/h

Wetterstation Lahr Wetterlage

{% set obs = state_attr('sensor.wetterstation_Lahr', 'observations')[0] %}
{% set radiation = obs['solarRadiation'] %}
{% set uv = obs['uv'] %}
{% set precip = obs['metric']['precipRate'] %}
{% if precip > 0 %}
   regen
{% elif radiation < 100 or uv <= 1 %}
   bewölkt
{% elif radiation < 500 or uv < 3 %}
   leicht bewölkt
{% else %}
   sonnig
{% endif %}

Einheit: keine

Wetterstation Lahr Temperatur

{{ state_attr('sensor.wetterstation_Lahr', 'observations')[0]['metric']['temp'] }}

Einheit: °C

Wetterstation Lahr Regen

{{ state_attr('sensor.wetterstation_Lahr', 'observations')[0]['metric']['precipRate'] > 0 }}

Einheit: keine

Automatisierung Markise steuern

Sobald

Und wenn

Dann

Gesamter Yaml Code

alias: Markise steuern
description: Steuert die Markise basierend auf den Wetterbedingungen
triggers:
  - entity_id: sensor.wetterstation_lahr_temperatur
    above: 18
    id: Temperatur hoch
    trigger: numeric_state
  - entity_id: sensor.wetterstation_lahr_temperatur
    below: 18.1
    id: Temperatur niedrig
    trigger: numeric_state
  - entity_id: sensor.wetterstation_lahr_wetterlage
    to: regen
    id: Regen
    trigger: state
  - entity_id: sensor.wetterstation_lahr_wetterlage
    to: sonnig
    id: Sonnig
    trigger: state
  - entity_id: sensor.wetterstation_lahr_wetterlage
    to: leicht bewölkt
    id: Leicht bewölkt
    trigger: state
  - entity_id: sensor.wetterstation_lahr_wetterlage
    to: bewölkt
    id: Bewölkt
    trigger: state
  - entity_id: sensor.wetterstation_lahr_windgeschwindigkeit
    above: 22
    id: Windgeschwindigkeit hoch
    trigger: numeric_state
  - entity_id: sensor.wetterstation_lahr_windgeschwindigkeit
    below: 22.1
    id: Windgeschwindigkeit niedrig
    trigger: numeric_state
conditions:
  - condition: time
    after: "10:00:00"
    before: "19:00:00"
actions:
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: state
                entity_id: sensor.wetterstation_lahr_wetterlage
                state: regen
              - condition: numeric_state
                entity_id: sensor.wetterstation_lahr_windgeschwindigkeit
                above: 22
              - condition: numeric_state
                entity_id: sensor.wetterstation_lahr_temperatur
                below: 18.1
        sequence:
          - entity_id: switch.markise_markise2
            action: switch.turn_on
            alias: Markise einfahren
        alias: Schlechte Wetterlage -> Markise einfahren
      - conditions:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.wetterstation_lahr_temperatur
                above: 18
              - condition: numeric_state
                entity_id: sensor.wetterstation_lahr_windgeschwindigkeit
                below: 22.1
              - condition: or
                conditions:
                  - condition: state
                    entity_id: sensor.wetterstation_lahr_wetterlage
                    state: sonnig
                  - condition: state
                    entity_id: sensor.wetterstation_lahr_wetterlage
                    state: leicht bewölkt
                  - condition: state
                    entity_id: sensor.wetterstation_lahr_wetterlage
                    state: bewölkt
            alias: Gute Wetterlage -> Markise ausfahren
        sequence:
          - entity_id: switch.markise
            action: switch.turn_on
            alias: Markise ausfahren
mode: single

Um die Markise um 19:00 Uhr generell wieder einzufahren habe ich eine separate Automatisierung erstellt. Es wäre auch möglich in jedem „Optionsblock“ die Bedingung zwischen 10:00 Uhr – 19:00 Uhr vorzuschalten, ich fand die Variante mit einer separaten Automatisierung in diesem Fall allerdings sinnvoller.

Automatisierung Markise um 19:00 Uhr einfahren

alias: Markise einfahren
description: ""
triggers:
  - trigger: time
    at: "19:00:00"
conditions: []
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.markise_markise2
mode: single

Hinweis: Wie schon im Video erwähnt, ist der Code nicht ausgiebig getestet. Gerne dürft ihr mir in den Youtube Kommentaren erweiterte Varianten oder angepassten Lösungen vorstellen, ich würde diese dann auf meiner Blog Seite veröffentlichen.