Home Assistant Automatisierung - Möglichkeiten & Grundlagen

Vom Steuern der Poolpumpe über die Heizung bis hin zum Mähroboter, Automatisierungen in Home Assistant bieten eine Möglichkeit die Dinge rund ums eigene Heim so richtig smart zu machen.

Anfangs habe ich mit den Automatisierungen in Home-Assistant nur eine Zeitschaltuhr für meine Poolpumpe abgelöst. Dazu habe ich zunächst eine Automatisierung für das Einschalten und eine für das Ausschalten erstellt: Klappt, aber irgendwie fühlen sich zwei Automatisierungen für das Steuern eines Geräts noch nicht ganz richtig an. Aus diesem Grund, aber auch weil sich in der Zwischenzeit anspruchsvollere Abläufe ergeben haben, habe ich mir die Möglichkeiten der Automatisierungen im Detail angesehen. Zuletzt konnte ich sogar meine bisherige Mährobotersteuerung mit einer Home Assistant-Automatisierung ablösen, siehe: Steuerung meines Mähroboters.

Automatisierung erstellen

Eine neue Automatisierung kann in den Einstellungen und "Automatisierungen & Szenen" hinzugefügt werden.

Das Konzept: Auslöser -> Bedingung -> Aktion

Automatisierungen werden durch einen oder mehrere hinterlegte Auslöser gestartet, als Beispiel zu einer bestimmten Zeit, oder wenn sich der Status eines Sensors oder Gerätes ändert. Vor dem Ausführen einer oder mehrerer Aktionen kann die Automatisierung noch auf bestimmte Bedingungen geprüft werden.

Hier ein kurzer Überblick über die möglichen Auslöser für das Starten einer Automatisierung:

Auslöser

Auslöser Beschreibung
Ereignis Das Herzstück des Home Assistant ist der Ereignisbus (event bus). Sämtliche Statusänderungen in Home-Assistant lösen entsprechende Events aus, welche als Auslöser für das Starten einer Automatisierung verwendet werden können.
Geolokalisierung Der Geolocation-Trigger wird ausgelöst, wenn eine Entität in einer Zone auftaucht oder aus ihr verschwindet. Als Beispiel, wenn ein Wetterereignis in der Zone in der sich Home Assistant befindet, eintritt. 
Gerät Löst aus, wenn sich der Status eines bestimmten Gerätes ändert, z. B. wenn ein Gerät aus- oder eingeschaltet wird, oder wenn sich ein bestimmter Wert z.B. die Temperatur eines Temperaturfühlers über oder unter einem vorgegebenen Wert befindet.
Home Assistant Löst aus, wenn Home Assistant startet oder gestoppt wird.
Kalender Kalenderentitäten können von anderen Integrationen genutzt und bereitgestellt zu werden. Kalenderauslöser ermöglichen die Automatisierung basierend auf dem Beginn oder Ende eines Ereignisses einer Kalenderentität. 
MQTT Löst aus, wenn eine MQTT-Nachricht empfangen wurde.
Numerischer Zustand Löst aus, wenn der numerische Wert einer Entität über oder unter einem bestimmten Wert ist.
Sonne Löst vor dem Sonnenauf- oder Untergang, oder nach dem Sonnenauf- oder Untergang aus.
Tag Löst aus, wenn ein Tag gescannt wird.
Template Löst aus, wenn eine Vorlage den Wert wahr enthält.
Webhook

Löst aus, wenn eine Webhook-Nutzlast auf dem Endpunkt /api/webhook/{ID} empfangen wurde. Die ID wird dabei beim Erstellen des Auslösers generiert:

Webhooks unterstützen HTTP POST-, PUT- und HEAD-Anfragen. Beim Aufruf des Webhook-Endpunkts können Formulardaten, JSON-Daten oder URL Query Parameter an das Template übertragen werden: trigger.data, trigger.json oder trigger.query.

Zeit Zeitauslöser, zu einer festen Zeit oder über einen Datums-/Zeit-Helfers.
Zeitraster Der Zeitmuster-Trigger löst aus, wenn die Stunde, Minute oder Sekunde der aktuellen Uhrzeit mit einem bestimmten Wert übereinstimmt.
Zone Löst aus, wenn eine Entität mit Standort eine Zone betritt oder verlässt. z.b. Device-Tracker Entitäten. Als Beispiel wenn ein WLAN-Gerät zu Hause ist oder Abwesend, siehe: ha-integrationen#device-tracker-openwrt.
Zustand Löst aus, wenn sich der Zustand einer Entität ändert.

Bedingung

Optional kann die gestartete Automatisierung auf bestimmte Bedingungen überprüft werden. 

Bedingung Beschreibung
Ausgelöst durch Überprüft, ob die Automatisierung von einem bestimmten Auslöser (bestimmte Auslöser-ID) gestartet wurde.
Gerät Überprüft, ob ein bestimmtes Gerät einen bestimmten Status oder einen bestimmten Wert besitzt.
Nicht Mit Nicht kann eine der hier gelisteten Bedingungen überprüft werden, ob die Bedingung nicht erfüllt ist.
Numerischer Zustand Überprüft den numerischen Wert einer Entität, ob dieser über oder unter einem bestimmten Wert ist.
Oder Verknüpfen mehrere Bedingungen, wenn eine der Bedingungen erfüllt ist.
Sonne Vor dem Sonnenauf- oder Untergang, oder nach dem Sonnenauf- oder Untergang.
Template Vorlage Bedingung
Und Verknüpfen mehrere Bedingungen, wenn mehrere Bedingungen erfüllt sind.
Zeit Prüft auf eine feste Zeit oder über einen Datums-/Zeit-Helfers.
Zone Überprüft, ob sich eine Entität mit Standort in einer Zone befindet oder nicht…
Zustand Überprüft den Zustand einer Entität

Treffen die hinterlegten Bedingungen zu, werden die definierten Aktionen ausgeführt:

Aktion

Aktion Beschreibung
Auswählen Eine oder mehrere Aktionen anhand einer oder mehrerer Bedingungen ausführen.
Bedingung Überprüfen, ob eine Einheit in einem bestimmten Zustand ist.
Dienst ausführen Einen bestimmten Dienst ausführen, als Beispiel eine Benachrichtigung auf ein Handy mit installierte Home Assistant App schicken. 
Ereignis Ein bestimmtes Event auslösen
Gerät Eine Aktion auf einem bestimmten Gerät ausführen, z.B. ein bestimmtes Gerät ein- oder ausschalten.
Medien abspielen  Abspielen von Medien auf einem Media Player
Parallel laufen Mehrere Aktionen gleichzeitig starten
Stopp Automatisierung stoppen
Szene Eine bestimmte Szene aktivieren
Warten auf den Ablauf der Zeit (Verzögerung) Wartezeit für die Automatisierung. Damit die folgenden Aktionen verzögert gestartet werden.
Warten auf eine Vorlage  Warten auf eine Vorlage, wenn diese erfüllt ist.
Warten auf einen Auslöser Auf einen Auslöser warten, inkl. Timeout.
Wenn-dann Wenn, dann, sonst (If-then, else). Wenn bestimmte Bedingungen erfüllt sind eine bestimmte Aktion starten, sonst eine bestimmte andere Aktion ausführen.
Wiederholen eine Aktion mehrfach wiederholen

YAML

Beim Erstellen einer Automatisierung im visuellen Editor wird im Hintergrund eine ein YAML-Text mit allen relevanten Informationen erstellt. Der YAML-Text kann in einem Text-Editor bearbeitet und angepasst werden. 

Abläufe

Neben dem Verlauf können die Abläufe von bereits ausgeführte Automatisierungen im Detail analysiert werden:

Sensor unknown

Sollte in der Automation ein nummerischer Vergleich: größer, oder kleiner als - verwendet werden, bleibt die Automation stehen, wenn der Sensor aus irgendeinem Grund den Status "Unknown" besitzt:

if/condition/3/entity_id/0
Executed: May 4, 2023 at 7:20:27 AM
Result:
result: false
message: value 'unknown' is non-numeric and treated as False

Abhilfe schafft die Verwendung eines "Value template" in der Automatisierung: 

{{states('sensor.rain_zamg_12') | round(2,default=0)}}

Praxis: Einsatzzweck Rasenmähroboter: Regen und Sonnensteuerung über eine Steckdose

Wie in einem früheren Beitrag erwähnt, steuere ich meinen Rasenmähroboter, einen Husqvarna Automower, liebevoll Oswald genannt, über eine steuerbare Steckdose. Das Prinzip dahinter ist, dass der Mäher erst startet wenn die Ladestation einen Strom von der Steckdose bekommt. Meine Beweggründe waren das Fehlen eines Regensensors und der Mangel an verfügbaren Steuermöglichkeiten, siehe: Steuern des Automowers mittels Steckdose - Regensensor? Einige Jahre lang habe ich für die Steuerung eine simple PHP-Seite verwendet, siehe: www.script-example.com/smartplug-steuerung und diese später mit dem PHP-Framework Laravel ersetzt. Nachdem in der Zwischenzeit mehr und mehr Automatisierungsaufgaben an Home-Assistant übertragen habe, war der Mähroboter ein weiterer logischer Schritt. Im Vergleich zu den früheren Lösungen ließ sich die Steuerung mit Home Assistant wesentlich schneller und einfacher umsetzen, zumal ich mich nicht um das Sammeln der Daten, die Auswertung und Anzeige kümmern muss. Die Logik für das Steuern konnte ich dabei von der Grundidee von den bestehenden Projekten übernehmen. Ich habe die Mähphase direkt in den Einstellungen des Geräts auf den Vormittag beschränkt, damit Oswald möglichst wenig stört. Home Assistant soll die Steckdose erst einschalten, wenn es nicht geregnet hat, die Wettervorhersage passt und die Sonne scheint, damit das Gerät nicht in Konflikt mit bestimmten nacht- oder dämmerungsaktiven Tieren kommt. 

Die Automatisierung im Detail

Als Auslöser dient, neben bestimmten Zeiten, die Stromerzeugung meines Balkonkraftwerks. Der Mäher startet vormittags, wenn die Sonne scheint und wird abends wieder deaktiviert, wenn sich der Mäher in der Ladestation befindet. Ob der Mäher wieder zurück in die Ladestation gefunden hat, kann ich am Stromverbrauch feststellen: Unter 3 Watt ist der Mäher vollgeladen und in der Station. Sollte der Mäher einmal nicht nach Hause finden, bekomme ich eine Benachrichtigung auf Handy. Als Bedingung für den Start habe ich in der Automatisierung das Wetter abgefragt: Herangezogen werden die vergangenen Niederschlagswerte und eine Wettervorhersage:

Hier der fertige Ablauf als YAML-Text:

[+]
alias: Oswald
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.balkonkw_total_ac_output_power_active
    above: 110
  - platform: time
    at: "18:00:00"
condition: []
action:
  - if:
      - condition: time
        before: "13:00:00"
        alias: Vormittag
    then:
      - if:
          - condition: numeric_state
            entity_id: sensor.balkonkw_total_ac_output_power_active
            above: 110
          - condition: device
            type: is_off
            device_id: ???
            entity_id: switch.oswald_switch
            domain: switch
          - condition: numeric_state
            entity_id: sensor.rain_zamg
            below: 1
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.openweathermap_forecast_precipitation
                below: 50
              - condition: numeric_state
                entity_id: sensor.openweathermap_forecast_precipitation
                below: 2
            alias: Wettervorhersage
        then:
          - type: turn_on
            device_id: ???
            entity_id: switch.oswald_switch
            domain: switch
          - service: notify.mobile_app_sm_??
            data:
              title: Es ist trocken und PV liefert -> Oswald ein
              message: "{{states('sensor.balkonkw_total_ac_output_power_active')}}Watt"
              alias: PV liefert? Einschalten?
        alias: Einschalten?
    else:
      - if:
          - condition: device
            type: is_on
            device_id: ???
            entity_id: switch.oswald_switch
            domain: switch
        then:
          - if:
              - condition: numeric_state
                entity_id: sensor.oswald_active_power
                below: 3
            then:
              - type: turn_off
                device_id: ???
                entity_id: switch.oswald_switch
                domain: switch
            else:
              - service: notify.mobile_app_sm_??
                data:
                  title: Oswald nicht ausgeschaltet
                  message: "Power: {{states('sensor.oswald_active_power')}}Watt"
        alias: "Abends: Ausschalten"
mode: single

Der Yaml-Text kann in eine leere Automatisierung kopiert und angepasst werden. Die historischen Niederschlagswerte, im Ablauf "sensor.rain_zamg" hohle ich dabei mittels curl von einer öffentlich zugänglichen Webseite, ähnlich dem Auslesen der PV-Werte meines Balkonkraftwerks: PV Balkonkraftwerk Inbetriebnahme und HA Integration

Fazit

Eine Smarthome-Lösung entfaltet ihr volles Potenzial erst durch die Möglichkeit bestimmte Geräte automatisch zu steuern. Durch das intelligente Steuern einzelner Geräte kann nicht nur der Komfort erhöht werden, es kann damit auch Strom gespart oder dieser sinnvoller eingesetzt werden. Beim Eintreten bestimmter Ereignisse kann zudem eine Alarmierung aufs Handy erfolgen. 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details