Ich habe mir in letzter Zeit ein paar meiner Automationen noch mal genauer angeschaut und dabei festgestellt, dass eine davon eigentlich ein ziemlich gutes Beispiel dafür ist, wie man Automationen in Home Assistant sinnvoll strukturieren kann. Es geht um die Automation, die meine Lavalampe im Esszimmer steuert. Klingt erstmal simpel, steckt aber ein bisschen mehr drin als man denkt: Einschalten bei Sonnenuntergang, nachholen wenn ich nach Hause komme, und unterschiedliche Ausschaltzeiten für Wochentage und Wochenende. Das Ganze mit einer einzigen Automation.
Warum eine Automation statt vier
Man könnte jetzt natürlich hingehen und für jeden dieser Fälle eine eigene Automation schreiben. Einen Trigger für Sonnenuntergang, einen für Anwesenheit, einen für 23 Uhr und einen für 1 Uhr. Das würde technisch funktionieren, aber irgendwann hast du eine Automationsliste, durch die du selbst nach zwei Monaten nicht mehr durchblickst. Ich kenne das aus eigener Erfahrung.
Wenn alle diese Trigger dasselbe Gerät steuern, gehören sie auch zusammen. Das ist eigentlich das Grundprinzip. Eine Automation pro Gerät oder pro logischer Einheit, nicht eine Automation pro Ereignis.
Dazu kommt noch ein praktischer Grund: Eine gute Beschreibung in der Automation selbst spart dir später wahnsinnig viel Zeit. Ich schreibe mir da immer rein, was die Automation macht, wann sie feuert und was die Bedingungen sind. So verstehe ich auch nach einem halben Jahr sofort, was da passiert, ohne den YAML-Code lesen zu müssen.
Die vier Trigger und ihre IDs
Die Automation hat vier Auslöser. Jeder bekommt eine eigene Trigger-ID, weil wir die später in den Bedingungen brauchen. Das ist ein Konzept, das ich wahnsinnig praktisch finde: Du kannst damit in der choose-Aktion gezielt auf einzelne Trigger reagieren.
1triggers:
2 - event: sunset
3 offset: "-00:30:00"
4 id: sunset
5 trigger: sun
6 - entity_id: person.DEINE_PERSON
7 to: home
8 id: arrive_home
9 trigger: state
10 - at: "23:00:00"
11 id: off_weekday
12 trigger: time
13 - at: "01:00:00"
14 id: off_weekend
15 trigger: timeDer erste Trigger feuert 30 Minuten vor Sonnenuntergang. Home Assistant berechnet den Sonnenuntergang automatisch anhand des hinterlegten Standorts, du musst da nichts manuell einstellen. Der zweite Trigger reagiert auf Anwesenheit, also wenn die Person-Entity auf home wechselt. Die beiden Zeittrigger kümmern sich um das Ausschalten, einmal um 23 Uhr für Wochentage und einmal um 1 Uhr für das Wochenende.
Die vollständige Automation
Hier ist die komplette Automation am Stück. Entity-IDs musst du natürlich auf dein Setup anpassen: person.DEINE_PERSON gegen deine Person-Entity tauschen und switch.DEIN_SMART_PLUG gegen den echten Entity-Namen deines Schalters.
1alias: Lavalampe Esszimmer
2description: >-
3 Steuert die Lavalampe im Esszimmer (Meross Smart Plug Mini).
4
5 Einschalten: Jeden Tag 30 Minuten vor Sonnenuntergang, aber nur wenn
6 jemand zuhause ist.
7 Nachholen: Kommt jemand zwischen Sonnenuntergang-30min und der
8 Ausschaltzeit nach Hause, wird die Lampe nachträglich eingeschaltet.
9 Ausschalten: Unter der Woche (So–Do) um 23:00 Uhr, am Wochenende
10 (Fr/Sa-Nacht) um 01:00 Uhr.
11triggers:
12 - event: sunset
13 offset: "-00:30:00"
14 id: sunset
15 trigger: sun
16 - entity_id: person.DEINE_PERSON
17 to: home
18 id: arrive_home
19 trigger: state
20 - at: "23:00:00"
21 id: off_weekday
22 trigger: time
23 - at: "01:00:00"
24 id: off_weekend
25 trigger: time
26actions:
27 - choose:
28 - alias: Einschalten bei Sonnenuntergang oder Heimkommen
29 conditions:
30 - condition: trigger
31 id:
32 - sunset
33 - arrive_home
34 - condition: state
35 entity_id: person.DEINE_PERSON
36 state: home
37 - condition: or
38 conditions:
39 - alias: >-
40 Abend-Fenster: nach Sonnenuntergang-30min, vor Ausschaltzeit
41 (So-Do)
42 condition: and
43 conditions:
44 - condition: sun
45 after: sunset
46 after_offset: "-00:30:00"
47 - condition: time
48 before: "23:00:00"
49 weekday:
50 - mon
51 - tue
52 - wed
53 - thu
54 - sun
55 - alias: >-
56 Abend-Fenster: nach Sonnenuntergang-30min, Wochenende (Fr/Sa)
57 bis Mitternacht
58 condition: and
59 conditions:
60 - condition: sun
61 after: sunset
62 after_offset: "-00:30:00"
63 - condition: time
64 weekday:
65 - fri
66 - sat
67 - alias: "Spaetstunden-Fenster: 00:00-01:00 nach Fr/Sa-Abend"
68 condition: time
69 before: "01:00:00"
70 weekday:
71 - sat
72 - sun
73 sequence:
74 - target:
75 entity_id: switch.DEIN_SMART_PLUG
76 action: switch.turn_on
77 - alias: Ausschalten unter der Woche (So-Do um 23:00)
78 conditions:
79 - condition: trigger
80 id: off_weekday
81 - condition: time
82 weekday:
83 - sun
84 - mon
85 - tue
86 - wed
87 - thu
88 sequence:
89 - target:
90 entity_id: switch.DEIN_SMART_PLUG
91 action: switch.turn_off
92 - alias: Ausschalten am Wochenende (Sa/So um 01:00)
93 conditions:
94 - condition: trigger
95 id: off_weekend
96 - condition: time
97 weekday:
98 - sat
99 - sun
100 sequence:
101 - target:
102 entity_id: switch.DEIN_SMART_PLUG
103 action: switch.turn_off
104mode: restartWie die Choose-Logik funktioniert
Der choose-Baustein ist im Grunde ein Switch-Case aus der Programmierung. Home Assistant geht die Optionen von oben nach unten durch und führt die erste aus, deren Bedingungen alle erfüllt sind. Das macht ihn zum idealen Werkzeug, wenn ein und dieselbe Automation auf verschiedene Trigger unterschiedlich reagieren soll.
Die erste Option kümmert sich ums Einschalten. Sie feuert, wenn der Trigger entweder sunset oder arrive_home war, die Person zuhause ist, und das aktuelle Zeitfenster passt. Das Zeitfenster ist etwas aufwändiger aufgebaut, weil Wochentage und Wochenende unterschiedlich behandelt werden. Dazu gleich mehr.
Die zweite und dritte Option sind fürs Ausschalten. Hier prüft die Automation erstmal, durch welchen Trigger sie überhaupt ausgelöst wurde, und danach den Wochentag. So landen wir sicher im richtigen Ausschalt-Zweig.
Die Wochentag-Logik und warum sie nicht trivial ist
Das ist der Teil, der auf den ersten Blick ein bisschen verwirrend wirkt. Das Problem ist, dass Freitag-Nacht technisch schon Samstag ist, wenn es 1 Uhr morgens ist. Home Assistant rechnet mit dem aktuellen Kalendertag, nicht mit dem gefühlten Abend.
Deswegen braucht das Spaetstunden-Fenster zwischen Mitternacht und 1 Uhr die Wochentage sat und sun. Samstag für die Nacht nach Freitag, Sonntag für die Nacht nach Samstag. Die Tabelle macht das nochmal klarer:
Für Montag bis Donnerstag ist das einfach: Einschalten und Ausschalten passieren am selben Kalendertag um 23 Uhr. Für Freitag-Abend schaltet die Lampe am fri ein, aber das Ausschalten um 1 Uhr passiert bereits am sat. Für Samstag-Abend entsprechend: Einschalten am sat, Ausschalten am sun. Und Sonntag-Abend wird wieder um 23 Uhr ausgeschaltet, also alles am sun.
mode: restart und warum das hier Sinn ergibt
Die Automation läuft mit mode: restart. Das bedeutet: Wenn sie erneut ausgelöst wird, während sie noch läuft, wird der aktuelle Durchlauf abgebrochen und ein neuer gestartet. In diesem Fall ist das gewollt.
Stell dir vor, die Automation feuert um Sonnenuntergang-30min, aber du bist nicht zuhause. Die Einschalt-Bedingung schlägt fehl, nichts passiert. Kurz darauf kommst du nach Hause, der arrive_home-Trigger feuert, die Automation startet neu und diesmal ist die Bedingung erfüllt. Die Lampe geht an. Das ist genau das Nachholen, das ich oben beschrieben habe.
Mehrere Lampen steuern
Wenn du nicht nur eine Lampe, sondern mehrere Geräte gleichzeitig schalten möchtest, kannst du in der target-Sektion einfach eine Liste angeben:
target:
entity_id:
- switch.DEIN_SMART_PLUG
- switch.DEIN_ZWEITER_PLUG
- light.DEINE_LAMPEDas funktioniert für alle drei Aktionen in der Automation gleich. Einmal anpassen, fertig.
Was du dafür brauchst
Für diese Automation brauchst du kein HACS, keine Erweiterungen, nichts Externes. Alles läuft mit Bordmitteln. Du brauchst ein schaltbares Gerät in Home Assistant, also einen Smart Plug, eine smarte Lampe oder ähnliches. Dazu eine eingerichtete Person-Entity für die Anwesenheitserkennung, zum Beispiel über die Home Assistant Companion App. Und Home Assistant muss deinen Standort kennen, damit er den Sonnenuntergang berechnen kann. Das stellst du unter Einstellungen, System, Allgemein ein.
Für den Smart Plug selbst nutze ich übrigens den Meross Matter WLAN Smart Plug. Die Dinger funktionieren bei mir wirklich gut und ich finde sie nach wie vor wahnsinnig zuverlässig. Falls du dir einen holen möchtest, gibt es im Meross Shop mit dem Code AAT10 noch 10% Rabatt.
Machst du das bei dir ähnlich, also mehrere Trigger in einer Automation zusammenfassen? Oder baust du das lieber getrennt auf? Ich bin gespannt, wie ihr das handhabt.
