Ich habe mir in letzter Zeit öfter angeschaut, wie ich meine Automationen in Home Assistant möglichst übersichtlich halten kann. Eine Sache, die mir dabei wahnsinnig geholfen hat, ist die Kombination aus Trigger-IDs und dem choose-Baustein. Ich erkläre dir das am Beispiel meiner Lavalampe im Esszimmer, denn die Automation dahinter macht genau das, was viele Leute mit drei oder vier separaten Automationen lösen würden. Bei mir ist das alles in einer einzigen.
Die Lampe schaltet sich 30 Minuten vor Sonnenuntergang ein, aber nur wenn ich zu Hause bin. Komme ich erst nach dem Sonnenuntergang nach Hause, wird sie nachgeholt. Und die Ausschaltzeit ist unter der Woche eine andere als am Wochenende. Klingt komplex, ist es aber eigentlich nicht.
Warum eine Automation statt mehrerer
Den meisten fällt zuerst ein, für jeden Auslöser eine eigene Automation zu bauen. Das funktioniert technisch, aber irgendwann hast du eine Liste mit zwanzig Automationen, von denen die Hälfte dasselbe Gerät steuert. Nach ein paar Monaten blickst du da selbst nicht mehr durch. Ich spreche aus Erfahrung.
Wenn alle Trigger dasselbe Gerät betreffen und dieselbe Logik teilen, gehören sie zusammen. Eine Automation, vier Trigger, ein choose-Block. Das ist übersichtlicher, leichter zu warten und du siehst auf einen Blick, was mit dem Gerät passiert.
Deswegen vergebe ich bei jeder Automation auch eine vernünftige Beschreibung. Wenn ich in zwei Monaten wieder reinschaue, möchte ich sofort verstehen, was diese Automation macht. Ohne den ganzen YAML-Code erst lesen zu müssen.
Die vier Trigger und ihre IDs
Der erste Trigger feuert 30 Minuten vor Sonnenuntergang. Der zweite, wenn ich nach Hause komme. Die beiden anderen sind einfache Zeitauslöser: einmal für 23 Uhr (Ausschaltzeit unter der Woche) und einmal für 1 Uhr nachts (Ausschaltzeit am Wochenende).
Jeder dieser Trigger bekommt eine eigene ID. Das ist der entscheidende Punkt, denn über diese IDs kann der choose-Baustein später unterscheiden, welcher Trigger die Automation ausgelöst hat.
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: timeDen choose-Baustein findest du in Home Assistant unter Aktion hinzufügen, dann Bausteine, dann Auswählen. Du brauchst dafür keine HACS-Erweiterungen, das ist alles an Bord.
Die vollständige Automation
Hier ist die komplette YAML-Konfiguration. Ersetze person.DEINE_PERSON durch deine eigene Person-Entity und switch.DEIN_SMART_PLUG durch die Entity-ID deines Smart Plugs.
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 Einschalt-Logik im Detail funktioniert
Der choose-Block hat drei Optionen. Die erste kümmert sich ums Einschalten, die beiden anderen ums Ausschalten zu unterschiedlichen Zeiten.
Für das Einschalten müssen alle drei Bedingungen gleichzeitig erfüllt sein. Erstens muss der Trigger sunset oder arrive_home gewesen sein. Zweitens muss die Person zu Hause sein. Drittens muss das Zeitfenster passen, und hier wird es ein bisschen interessant.
Das Zeitfenster ist als OR-Bedingung aufgebaut, weil es drei verschiedene Situationen geben kann. Entweder es ist ein Wochentag (Mo bis Do + So) und die Zeit liegt zwischen Sonnenuntergang minus 30 Minuten und 23 Uhr. Oder es ist Freitag oder Samstag und die Uhrzeit liegt nach Sonnenuntergang minus 30 Minuten bis Mitternacht. Oder es ist technisch bereits Samstag oder Sonntag und die Zeit liegt zwischen 0 und 1 Uhr nachts.
Dieser dritte Fall ist der, den viele vergessen. Wenn du am Freitagabend die Lampe um 23:30 Uhr noch einschalten willst, ist es technisch gesehen bereits Samstag. Der Samstag-Check im Zeitfenster fängt das ab.
Die Wochentag-Logik beim Ausschalten
Bei den Ausschalt-Optionen ist die Wochentag-Zuordnung genauso wichtig. Home Assistant bezieht sich dabei immer auf den aktuellen Kalendertag zum Zeitpunkt des Triggers.
Die Ausschaltzeit unter der Woche ist 23 Uhr. Dieser Trigger feuert an Sonntag bis Donnerstag. Am Wochenende, also Freitagabend und Samstagabend, ist die Ausschaltzeit erst 1 Uhr nachts. Dieser Trigger feuert technisch gesehen an Samstag und Sonntag, weil es zu diesem Zeitpunkt bereits der nächste Tag ist.
Das ist der Grund, warum off_weekend mit den Wochentagen sat und sun kombiniert wird, obwohl es sich gefühlt um Freitag- und Samstagnacht handelt.
mode: restart und was das bedeutet
Die Automation läuft im Modus restart. Das heißt: wenn die Automation durch den Sonnenuntergang-Trigger gestartet wurde und dann kurz darauf durch arrive_home erneut ausgelöst wird, fängt sie von vorne an. Das ist gewollt. So wird sichergestellt, dass die Lampe auf jeden Fall eingeschaltet wird, auch wenn sich die Trigger überschneiden.
Voraussetzungen und Anpassungen
Du brauchst ein schaltbares Gerät in Home Assistant, also einen Smart Plug oder eine smarte Lampe. Ich nutze dafür den Meross Matter WLAN Smart Plug, der tatsächlich richtig gut funktioniert und sich einwandfrei in Home Assistant einbinden lässt. Wenn du über den Meross Shop bestellst, gibt es mit dem Code AAT10 noch 10% Rabatt.
Außerdem brauchst du eine funktionierende Anwesenheitserkennung über eine person-Entity, zum Beispiel über die Home Assistant Companion App. Und Home Assistant muss deinen Standort kennen, damit der Sonnenuntergang korrekt berechnet wird. Das stellst du unter Einstellungen, System, Allgemein, Standort ein.
Wenn du mehrere Lampen gleichzeitig steuern möchtest, kannst du die entity_id in den Aktionen einfach als Liste schreiben:
target:
entity_id:
- switch.DEIN_SMART_PLUG
- switch.DEIN_ZWEITER_PLUG
- light.DEINE_LAMPEDie Ausschaltzeiten lassen sich natürlich auch anpassen. Der Versatz beim Sunset-Trigger, die Zeit für off_weekday und die Zeit für off_weekend sind alle frei wählbar.
Wenn du dir mein komplettes Setup in Ruhe angucken willst, findest du alle meine Automationen auf alles-automatisch.de/snippets zum direkten Rauskopieren. Ich versuche das immer aktuell zu halten.
Nutzt du den choose-Baustein in deinen Automationen auch schon? Oder hast du eine andere Herangehensweise, die du mir empfehlen würdest? Schreib es gerne in die Kommentare.
