Home Assistant Automatisierung - Möglichkeiten & Basics
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. Mit Home Assistant konnte ich meine bisherige Mährobotersteuerung ablösen und zuletzt sogar meine Heizung steuern, um den Ertrag meiner PV-Anlage möglichst sinnvoll zu nutzen.
Kompliziert, oder lieber doch einfach?
Wenig ist oft mehr: Gute Automatisierungen sind vor allem einfach, logisch und dadurch selbsterklärend. Vorab ein paar Punkte, die ich in neuen Automatisierungen anders machen würde:
Lessens learned
- Ich würde nicht für jeden Trigger eine Automatisierung erstellen, z. B. kann das Ein- und Ausschalten eines Gerätes mit nur einer Automatisierung umgesetzt werden.
- Bedingungen im Bereich "Aber nur wenn (optional)" können ignoriert werden, diese sind nur selten sinnvoll …
- Eine Wiederholung des Triggers in den "Wenn-dann" - Aktionen kann meist eleganter gelöst werden.
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 (=Wenn) 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 könnte die Automatisierung noch auf bestimmte Bedingungen geprüft werden (Und wenn). Könnte, denn die "Und wenn"- Bedingungen sind in den Aktionen (Dann mache) meist besser aufgehoben.
Bedingungen in den Aktionen "Wenn-Dann" oder "Auswählen" bieten die gleiche Funktionalität und sind dabei wesentlich flexibler einsetzbar, siehe: Konzept: Auslöser, Bedingung, Aktionen.
Hier ein kurzer Überblick über die möglichen Auslöser für das Starten einer Automatisierung:
Auslöser: Wenn -> Automatisierung starten
Die Auslöser in den Automatisierungen machen zunächst nichts anders, als die Automatisierung zu starten.
Auslöser | Beschreibung |
---|---|
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. |
Entität / Numerischer Zustand | Löst aus, wenn der numerische Wert einer Entität über oder unter einem bestimmten Wert ist. |
Entität / Zustand | Löst aus, wenn sich der Zustand einer Entität ändert. |
Zeit und Ort / 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. |
Zeit und Ort / 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 |
Zeit und Ort / Zeit | Zeitauslöser, zu einer festen Zeit oder über einen Datums-/Zeit-Helfers. |
Zeit und Ort / Zeitraster |
Der Zeitmuster-Trigger löst aus, wenn die Stunde, Minute oder Sekunde der aktuellen Uhrzeit mit einem bestimmten Wert übereinstimmt. Dieser Auslöser ermöglicht auch das regelmässige Auslösen der Automatisierung, z.B. alle 5 Minuten: |
Zeit und Ort / 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. |
Andere Auslöser / Dauerhafte Benachrichtigung | Wenn eine dauerhafte Benachrichtigung hinzugefügt oder entfernt wird. |
Andere Auslöser / Ereignis | Wenn ein Ereignis empfangen wird |
Andere Auslöser / 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. |
Andere Auslöser / Home Assistant | Löst aus, wenn Home Assistant startet oder gestoppt wird. |
Andere Auslöser / MQTT | Löst aus, wenn eine MQTT-Nachricht empfangen wurde. |
Andere Auslöser / Satz | Wenn Assist einen Satz eines Sprachassistenten abgleicht |
Andere Auslöser / Tag | Löst aus, wenn ein Tag gescannt wird. |
Andere Auslöser / 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 |
Andere Auslöser / 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. |
Bedingungen (optional: Und wenn)
Optional kann die gestartete Automatisierung auf bestimmte Bedingungen überprüft werden.
Vorteil: In den Aktionen können die Bedingungen für jede Aktion einzeln festgelegt werden.
Bedingung | Beschreibung |
---|---|
Gerät | Überprüft, ob ein bestimmtes Gerät einen bestimmten Status oder einen bestimmten Wert besitzt. |
Entität / Numerischer Zustand | Überprüft den numerischen Wert einer Entität, ob dieser über oder unter einem bestimmten Wert ist. |
Entität / Zustand | Überprüft den Zustand einer Entität |
Zeit und Ort / Sonne |
Vor dem Sonnenauf- oder Untergang, oder nach dem Sonnenauf- oder Untergang. Optional: Vor Versatz (Offset) oder Nach Versatz (Offset): Format: HH:MM:SS |
Zeit und Ort / Zeit | Prüft auf eine feste Zeit oder über einen Datums-/Zeit-Helfers. |
Zeit und Ort / Zone | Überprüft, ob sich eine Entität mit Standort in einer Zone befindet oder nicht… |
Bausteine / Nicht | Mit Nicht kann eine der hier gelisteten Bedingungen überprüft werden, ob die Bedingung nicht erfüllt ist. |
Bausteine / Oder | Verknüpfen mehrere Bedingungen, wenn eine der Bedingungen erfüllt ist. |
Bausteine / Und | Verknüpfen mehrere Bedingungen, wenn mehrere Bedingungen erfüllt sind. |
Andere Bedingungen / Ausgelöst durch | Überprüft, ob die Automatisierung von einem bestimmten Auslöser (bestimmte Auslöser-ID) gestartet wurde. |
Andere Bedingungen / Template | Vorlage Bedingung, siehe auch Home Assistant Templates |
Treffen die hinterlegten Bedingungen zu, werden die definierten Aktionen ausgeführt:
Dann mache
Eine Aktion kann auf einem bestimmten Gerät oder einem bestimmten Service (Dienst) ausgeführt werden. Um den Zugang zu den möglichen Diensten zu vereinfachen, beinhaltet der Wizard "AKTION HINZUFÜGEN" jede Menge Shortcuts zu der dahinterliegenden Aktion: "Dienst ausführen". Eine bestimmte Logik für die Automatisierung, so wie Bedingungen oder zusätzliche Abfragen oder Entscheidungen können über die vorhandenen Bausteine abgebildet werden.
Aktionen
Aktion | Beschreibung |
---|---|
Gerät | Eine Aktion auf einem bestimmten Gerät ausführen, z.B. ein bestimmtes Gerät ein- oder ausschalten. |
Abdeckung | Shortcut zu "Dienst ausführen", "Cover": Neigung stoppen, Neigung umschalten, Neigungsposition einstellen, Öffnen, Öffnungswinkel, Position festlegen, Schließen, Stopp, Umschalten |
Benachrichtigung | Shortcut zu "Dienst ausführen", "Notify". Hier kann als Beispiel eine Benachrichtigung auf ein Handy geschickt werden. Voraussetzung: installierte Home Assistant App. |
Auswählen | Shortcut zu "Dienst ausführen", "Auswählen". |
Kamera | Shortcut zu "Dienst ausführen", "Camera". |
Licht | Shortcut zu "Dienst ausführen", "Light" |
Nummer | Shortcut zu "Dienst ausführen", "Number" |
Schalter | Shortcut zu "Dienst ausführen", "Switch" |
Staubsauger | Shortcut zu "Dienst ausführen", "Vacuum" |
Szene | Eine bestimmte Szene aktivieren; Shortcut zu "Dienst ausführen", "Scene" |
Taste | Shortcut zu "Dienst ausführen", "Button" |
Helfer | Shortcuts zu diversen anderen Diensten rund um bestehende Helfer, wie das Drücken einer Eingabetaste, das Auswählen einer Option eines Auswahlfeldes oder die Eingabe bestimmter Werte anderer Helfer. |
Bausteine |
Die Bausteine in den Aktionen, an dieser Stelle, oder über Dann mache: "+ BAUSTEIN HINZUFÜGEN" ausgewählt werden. |
Andere Aktionen | Dienst ausführen, Ereignis, Alarmanlage, Automatisierung, Backup, Command Line, Dauerhafte Benachrichtigung, FFmpeg, Geräte-Tracker, Home Assistant Cloud, Home Assistant Core Integration, Home Assistant Frontend, Klima, Konversation, Logbuch, Logger, Luftbefeuchter, Lüfter, Modbus, MQTT, Person, Rasenmäher, Recorder, Retry, Schloss, Sirene, Skript, Solarman, Statistics, System Log, Text, Text-to-speech (TTS), Update, Ventil, Water Heater, Wetter, Zigbee Home Automation, Zone, |
Bausteine
Baustein | Beschreibung |
---|---|
Auswählen | Eine oder mehrere Aktionen anhand einer oder mehrerer Bedingungen ausführen. (Die Aktion Auswählen kann dieselben Bedingungen verwenden, die auch in den globalen Bedingungen der Automatisierung vorhanden sind) |
Bedingung |
Die Bedingungen spiegeln im Wesentlichen die Bedingungen des Bereichs "Und wenn" wider und können alternativ an dieser Stelle eingesetzt werden. Mögliche Bedingungen: Ausgelöst durch, Geräte, nicht, Numerischer zustand, Oder, Sonne, Template, Und, Zeit, Zone, Zustand. |
Parallel laufen | Mehrere Aktionen gleichzeitig starten |
Stopp | Automatisierung stoppen |
Variablen definieren | Variablen definieren um diese zum Beispiel in einem Template zu verwenden. |
Warten auf ein Template | Warten auf ein Template: bis dieses als wahr ausgewertet wird. |
Warten auf den Ablauf der Zeit (Verzögerung) | Wartezeit für die Automatisierung. Damit die folgenden Aktionen verzögert gestartet werden. |
Ware 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. (Die Aktion Wenn-dann kann dieselben Bedingungen verwenden, die auch in den globalen Bedingungen der Automatisierung vorhanden sind) |
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:
Die Anzahl der gespeicherten Abläufe kann über die Variable stored_traces in der YAML-Datei angepasst werden:
trace:
stored_traces: 100
Beim Verwenden mehrerer Wenn-Bedingungen waren die Traces ursprünglich relativ schwer zu interpretieren, da es keinen Hinweis zur Bedingung oder deren Entitäten gab: Die Schrittdetails zeigten zwar das Ergebnis der Abfragen, gaben aber lediglich durch eine interne Nummerierung einen Hinweis darauf welche Bedingung zu dem Ergebnis geführt hat:
Neu: HA Automatisierung: Schrittdetails (Traces)
Meine Codeänderung wurde angenommen: In der aktuellen Home Assistant-Version werden jetzt zusätzliche Informationen zu den Schrittdetails in den Traces der Automatisierung angezeigt. ... weiterlesen
Mein Problem mit dem Konzept: Auslöser - Bedingung - Aktion
So einfach das Konzept der Home Assistant Automatisierungen auch ist, so unklar war für mich anfangs die Umsetzung in der Praxis. Mein anfängliches hadern mit den Automatisierungen kann an einem einfachen Beispiel beschrieben werden: mit einem Temperatursensor und einer Heizung. Fällt die Temperatur unter einen bestimmten Wert, soll die Heizung aktiviert und beim Erreichen einer bestimmten Zieltemperatur ausgeschaltet werden. Die Umsetzung benötigt für die beiden Temperaturwerte zwei Auslöser. Die zugehörigen Aktionen sind dann das Ein- und Ausschalten der Heizung. Damit die Auslöser die richtige Aktion starten, können zwei Automatisierungen erstellt werden: eine für das Einschalten, eine für das Ausschalten.
Alternativ könnten beide Auslöser und die zugehörigen Aktionen in einer Automatisierung hinterlegt werden. Nachdem beide Auslöser die Automatisierung lediglich starten, fehlt den Aktionen jetzt die Information, welche der beiden Aktionen gestartet werden soll. Eine Möglichkeit ist die Verwendung einer zusätzlichen Wenn-Dann Abfragen. Das "Wenn" in der Wenn-Dann Abfrage wiederholte in meinen ersten Automatisierungen nicht selten die Schwellwerte des Auslösers. z.B. Wenn die Temperatur höher als ein bestimmter Wert ist, habe ich die Temperaturwerte im Auslöser und "Wenn" in den Aktionen verwendet. Spätestens beim Einsatz von Bedingungen, wie zum Beispiel unterschiedliche Temperaturwerte für Tag und Nacht, könnte eine Automatisierung schnell mal unübersichtlich werden. Nachdem die Bedingungen für die komplette Automatisierung verwendet werden, ist der Bereich Bedingungen hier wenig hilfreich. Aber auch mehrere Automatisierungen für z.B. das Einschalten am Tag, Einschalten in der Nacht und Aus- und Einschalten am Tag machen die Umsetzung nicht wirklich übersichtlicher.
Mehrere Auslöser und Aktionen kombinieren? Mögliche Lösungsansätze im Überblick
- 👎Für jede Automatisierung nur eine Aktion:
Vorteil: Für jede Aktion können eigene Bedingungen und Auslöser verwendet werden.
Beispiel: Das Ein- und Ausschalten eines Geräts in getrennten Automatisierungen: Eine Automatisierung für das Einschalten und eine Automatisierung für das Ausschalten. - 👍 Auslöser mit IDs und ausgelöst in einer Wenn-Dann oder Auswählen - Aktion:
Wird einem Auslöser eine ID hinzugefügt, kann dieser in den Aktionen mit einer Wenn-Dann oder Auswählen-Aktion verknüpft werden. - 👍 Regelmäßiges Starten der Automatisierung über einen Zeitraster
Wird eine Automatisierung regelmäßig gestartet, kann die Logik komplett in den Aktionen abgebildet werden: Bestimmte Prüfungen mit Wenn-Dann oder Auswählen ermöglichen ein direktes und übersichtliches Verknüpfen der jeweiligen Aktion. - Eine weitere Möglichkeit wäre der Einsatz von Templates in den Auslösern, wodurch die Logik bereits beim Auslösen umgesetzt werden kann: Ein Update dazu folgt.
Ein- und Ausschalten: eine Automatisierung oder zwei?
Alternativ zu zwei Automatisierungen 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:
Regelmäßig auslösen und nur die Aktionen verwenden?
Um bei einer komplexeren Automatisierung die Übersicht zu bewahren, könnte diese regelmäßig gestartet und die Logik innerhalb der Aktionen abgebildet werden. Für diesen Ansatz kann als Trigger ein "Zeitraster" verwendet werden, z. B. um die Automatisierung alle 5 Minuten zu starten:
Wird die Automatisierung regelmäßig gestartet, können sämtliche Bedingungen direkt mit den Aktionen verknüpft werden, indem mehrere "Wenn-dann" oder "Auswählen" -Aktionen verwendet werden:
Der Nachteil bei der Verwendung eines Zeitrasters ist sicherlich die mögliche Verzögerung, bis die Automatisierung das nächste Mal gestartet wird. Bei zeitkritischen Aktionen könnte an dieser Stelle ein zusätzlicher Auslöser hinzugefügt werden. Ein weiterer Nachteil des Zeitrasters ist, dass mit jedem Auslösen ein neuer Eintrag in den Abläufen gespeichert wird, auch wenn sich an den Aktionen nichts geändert hat. Dennoch überwiegen die Vorteile eines Zeitrasters: Ein wesentlicher Vorteil ist, dass die Aktionen nicht von bestimmten Triggern abhängig sind. Werden in den Aktionen zum Beispiel bestimmte Zustände gesetzt, wie das Einschalten eines Relais oder Schalters, kann die Automatisierung zu jederzeit gestartet werden, auch wenn diese eine bestimmte Statusänderung verpasst haben sollte. Ohne einer Abhängigkeit zu den Triggern können die verwendeten Bedingungen in den Wenn-Dann-Aktionen zudem einfacher getestet werden:
Alternative Ansätze oder Gedanken können jederzeit gerne in den Kommentaren diskutiert werden ...
Alternativen?
Auch wenn eine zusätzliche Automatisierungs-Plattform, wie Node-Red, bei komplexeren Abläufen sicherlich eine bessere Übersicht bietet, versuche ich dennoch an den Home Assistant Automatisierungen festzuhalten, zugegeben: hauptsächlich um den Overhead und die zusätzliche Abhängigkeit eines weiteren Services zu vermeiden. Mit ein Grund ist auch, dass Home Assistant über dessen Mobile-App eine bessere Möglichkeit bietet die Automatisierungen auch am Handy zu optimieren.
Home Assistant: Steckdosen steuert Rasemähroboter
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... ... weiterlesen
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. ... weiterlesen
Heizung steuern: PV Überschuss > ESP32 & Home Assistant (1/2)
Nach ca. 20 Jahren konnte ich mit Home Assistant und einem ESP32 die Kontrolle über meine Wärmepumpe übernehmen. Um den erzeugten Strom meiner PV-Anlage tagsüber besser nutzen zu können, kam mir die Idee, die Heizung möglichst dann zu aktivieren, wenn die PV-Anlage gerade am meisten Strom liefert. Nachdem ich den Stromverbrauch und Temperaturwerte bereits in Home Assistant zur Verfügung hatte, fehlte nur noch die Möglichkeit aktiv in die Heizung einzugreifen. ... weiterlesen
Maximaler PV Eigenverbrauch der Wärmepumpe (2/2)
Meine Wärmepumpe war alles andere als Smart, bis ich sie mit einem ESP32 - Mikrocontroller verheiratet habe. Seit der Hochzeit wird sie von Home Assistant überwacht und über eine Automatisierung gesteuert. Kombiniert mit den Leistungsdaten der PV-Anlage ist Home Assistant in der Lage, den produzierten Strom möglichst direkt für das Heizen zu verwenden und somit den Eigenverbrauch zu steigern: ... weiterlesen
Home Assistant: PV Überschuss, Warmwasser: Heizstab
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 in der Regel keine Warmwasseraufbereitung notwendig. Sollte die Prognose für den erwarteten PV-Ertag für den folgenden Tag unter... ... weiterlesen
HA- Sensor unknown
Sollte in der Automatisierung ein nummerischer Vergleich: größer, oder kleiner als - verwendet werden, bleibt die Automatisierung stehen, wenn der Sensor aus irgendeinem Grund den Status "Unknown" besitzt: ... weiterlesen
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. Die Automatisierungen in Home-Assistant wirkten auf mich zunächst aufgeräumt und verständlich. Der Einsatz in der Praxis hatte dann ein paar Tücken. Einmal an den Gedanken gewähnt, den Bereich Bedingungen links liegenzulassen und die Logik mit Wenn-Dann oder Auswählen-Aktionen umzusetzen, bin ich mit Home Assistant in der Lage auch aufwendigere Automatisierungen übersichtlich und nachhaltig zusammenzustellen, als Beispiel die Übersteuerung meiner Heizung.
{{percentage}} % positiv