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. Optional: Versatz (Offset): Format: HH:MM:SS Beispiel: Versatz (Offset): -02:00:00 = 2 Stunden vor dem Sonnenauf- oder Untergang; Beispiel: Versatz (Offset): 02:00:00 = 2 Stunden nach dem Sonnenauf- oder Untergang |
Tag | Löst aus, wenn ein Tag gescannt wird. |
Template |
Löst aus, wenn eine Vorlage den Wert wahr enthält. Z.B. wenn eine Entität grösser wird als eine andere: siehe auch: Home Assistant Templates / Statistik und Sensoren |
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. Optional: Vor Versatz (Offset) oder Nach Versatz (Offset): Format: HH:MM:SS |
Template | Vorlage Bedingung, siehe auch Home Assistant Templates / Statistik und Sensoren |
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 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)}}
Ein- und Ausschalten: eine Automation oder zwei?
Alternativ zu zwei Automationen für das Ein- und Ausschalten eines Gerätes kann in den Auslösern auch eine ID vergeben und in den Aktionen verwendet werden:
Mittels ID kann in den Aktionen reagiert werden, indem das Gerät in einer Wenn-Abfrage entsprechend Ein- oder Ausgeschaltet wird:
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 das Handy. Als Bedingung für den Start habe ich in der Automatisierung das Wetter abgefragt: Herangezogen werden die vergangenen Niederschlagswerte und eine Wettervorhersage:
Auslöser | Beschreibung |
---|---|
![]() |
Über 110 Watt vom Balkonkraftwerk: die Sonne scheint: In den Aktionen: Prüfen ob der Mäher starten soll und gegebenenfalls die Steckdose einschalten |
![]() |
Abends In den Aktionen: Prüfen ob der Mäher in der Ladestation ist und gegebenenfalls die Steckdose ausschalten, oder eine Benachrichtigung schicken. |
Aktionen:
|
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. Siehe auch: HA: Werte einer beliebigen WebGUI als Entitäten verwenden.
Balkonkraftwerk oder PV-Anlage Überschuss
Nicht immer, aber doch immer wieder - liefert mein Balkonkraftwerk an sonnigen Tagen einen Stromüberschuss. Damit ich diesen nicht verschenke, starte ich die Poolpumpe bei einem Überschuss und stoppe diese wieder, wenn kein überschüssiger Strom mehr zur Verfügung steht.
Auslöser | Beschreibung |
---|---|
![]() |
meter_power spiegelt die Daten des Smartmeters wider: negative Werte (-) bedeuten einen Stromüberschuss ID: Überschuss |
![]() |
meter_power = 0: kein Überschuss |
Aktionen:
|
Als Auslöser (Trigger) für das Einschalten verwende ich die Entität des Smartmeter für den Stromüberschuss (meter_power): einmal für das Einschalten, einmal für das Ausschalten. Wenn die Entität meter_power für 20 Minuten einen Stromüberschuss von mehr als 200 Watt liefert (-200Watt), löst der Trigger aus und startet die Pumpe in den Aktionen. Die 200 Watt entsprechen ca. dem Stromverbrauch der Pumpe. Damit die Automation in den Aktionen zwischen keinem und einem Überschuss reagieren kann, entscheidet die Wenn-Abfrage, ob die Pumpe ein- oder ausgeschaltet werden soll. Der Auslöser "When meter_power is below -200 for 20:00" besitzt dazu die ID "Überschuss", diese kann als Bedingung für die Wenn-Abfrage verwendet werden. Somit muss der Schwellwert für das Einschalten (-200Watt) nur einmalig im Auslöser definiert werden und nicht zusätzlich auch noch in der Wenn-Abfrage.
Automatisierung im Detail
alias: Überschuss PoolPumpe
description: ""
trigger:
- platform: numeric_state
entity_id: sensor.meter_power
for:
hours: 0
minutes: 20
seconds: 0
below: -200
id: Überschuss
- platform: numeric_state
entity_id: sensor.meter_power
for:
hours: 0
minutes: 0
seconds: 0
above: 0
condition: []
action:
- if:
- condition: trigger
id:
- Überschuss
then:
- type: turn_on
device_id: ???
entity_id: switch.poolpumpe_switch
domain: switch
else:
- type: turn_off
device_id: ???
entity_id: switch.poolpumpe_switch
domain: switch
mode: single
Heizung steuern - Warmwasser für den Folgetag aufbereiten
Neben der Steuerung meiner Wärmepumpe kann ich das Warmwasser alternativ über eine schaltbare Steckdose und einen Heizstab erhitzen. Nachdem meine Wärmepumpe das Wasser nur bis auf 50°C erwärmen kann, ermöglicht mir der Heizstab auch höhere Temperaturen zu erzeugen. Wird das Warmwasser an einem Tag mit ausreichend Sonnenschein um weitere 10°C erhitzt, ist am Folgetag keine Warmwasseraufbereitung notwendig. Sollte die Prognose für den erwarteten PV-Ertag für den folgenden Tag unter einen bestimmten Wert fallen, habe ich eine Automation zusammengestellt um das Warmwasser mit dem erzeugten PV-Strom mehr als gewöhnlich zu erhitzen. Hier die Automation in der Praxis:
Legende: Grün: PV Energieerzeugung, Rot: Verbrauch; Gelb: Wärmepumpe; Dunkelrot: Heizstab
Automation im Detail:
Auslöser | Beschreibung |
---|---|
![]() |
meter_power spiegelt die Daten des Smartmeters wider: negative Werte (-) bedeuten einen Stromüberschuss ID: Überschuss |
![]() |
Sollte das Warmwasser über 60°C heiß sein, sollte die entsprechende Aktion ausschalten: |
![]() |
kein PV-Strom Überschuss mehr |
Aktionen:
Aktionen: | ||
---|---|---|
|
YAML-Datei:
alias: "Überschuss: Heizstab Warmwasser"
description: ""
trigger:
- platform: numeric_state
entity_id: sensor.meter_power
for:
hours: 0
minutes: 6
seconds: 0
below: -3000
id: Überschuss
- platform: numeric_state
entity_id: sensor.heating_warmwasser
above: 60
- platform: numeric_state
entity_id: sensor.meter_power
above: 0
condition: []
action:
- if:
- condition: trigger
id:
- Überschuss
- condition: numeric_state
entity_id: sensor.heating_warmwasser
below: 60
above: 48
- condition: numeric_state
entity_id: sensor.pv_production_tomorrow
below: 20
then:
- type: turn_on
device_id: ???
entity_id: switch.warmwasser_switch
domain: switch
else:
- type: turn_off
device_id: ???
entity_id: switch.warmwasser_switch
domain: switch
mode: single
Um aktiv in die Steuerung meiner Heizung eingreifen zu können, verwende ich einen ESP32 und ein 4-Kanal-Relayboard, siehe: Heizung mit Home Assistant steuern
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.

{{percentage}} % positiv

DANKE für deine Bewertung!
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]