Zum Inhalt springen
Alles Automatisch

Home AssistantHome Assistant ABC

Trigger und Timing in Home Assistant: Automationen effizient steuern

· Aktualisiert am

Home Assistant ABC · Folge 20 von 26: T wie Trigger und Timing

Alle Folgen

Der Trigger ist die wichtigste Entscheidung in jeder Automation. Er legt fest, wann sie überhaupt anspringt. Home Assistant bietet dafür eine ganze Palette an Auslöser-Typen, und die Wahl des richtigen macht den Unterschied zwischen einer Automation, die zuverlässig läuft, und einer, die ständig zur falschen Zeit feuert.

Im Video gehe ich die wichtigsten Trigger-Typen einzeln durch und zeige, wie du sie im Editor einstellst. Hier die Übersicht zum Nachschlagen.

Die wichtigsten Trigger-Typen

TriggerFeuert wenn...Typischer Einsatz
Zeiteine feste Uhrzeit erreicht istRollläden um 7:00 hoch
Zeitmusterein Intervall abläuftAlle 15 Minuten Werte prüfen
SonneSonnenauf- oder -untergang eintrittAußenlicht abends an
Zustandeine Entity ihren Zustand wechseltBewegungsmelder springt auf "erkannt"
Numerischer Zustandein Wert eine Schwelle über- oder unterschreitetTemperatur fällt unter 18 Grad
Kalenderein Kalendereintrag startetErinnerung an Geburtstage
Zoneeine Person eine Zone betritt oder verlässtHeizung an, wenn du dich näherst

Das deckt schon den Großteil aller Automationen ab. Webhooks und Events kommen dazu, die behandle ich in einem eigenen Video.

Der Kalender-Trigger ist übrigens unterschätzter, als die Tabelle vermuten lässt. Mit einem angebundenen Google-Kalender, in dem nur Geburtstage stehen, baust du dir in fünf Minuten eine Erinnerung aufs Handy. Mein Tipp dazu: Stell den Versatz auf 48 Stunden vor Terminbeginn. Bei "Termin beginnt" ist es für ein Geschenk nämlich schon zu spät.

Und dann gibt es noch eine Reihe Spezialisten: den Satz-Trigger, der reagiert, wenn dein Sprachassistent einen bestimmten Satz erkennt. MQTT-Nachrichten als Auslöser. Sogar der Start oder das Herunterfahren von Home Assistant selbst kann eine Automation antreten lassen, praktisch für eine "System ist wieder da"-Benachrichtigung. Die Grenze ist hier wirklich deine Fantasie. Fast alles, was du dir ausdenken kannst, lässt sich mit der richtigen Trigger-Kombination bauen.

Sonnenstand: besser als feste Uhrzeiten

Feste Uhrzeiten sind verlockend einfach. Das Problem: "Licht an um 18:00" passt im Dezember, im Juni ist es da noch taghell. Der Sonnen-Trigger löst das, weil Home Assistant aus deinem Standort den tatsächlichen Sonnenuntergang berechnet.

Richtig praktisch wird er mit einem Offset. Eine halbe Stunde vor Sonnenuntergang ist es oft schon düster genug:

yaml
1automation:
2  - alias: "Außenlicht vor Sonnenuntergang"
3    triggers:
4      - trigger: sun
5        event: sunset
6        offset: "-00:30:00"
7    actions:
8      - action: light.turn_on
9        target:
10          entity_id: light.aussenlicht

Negativer Offset heißt vorher, positiver Offset nachher. Mehr zum Lesen und Schreiben solcher Blöcke findest du im YAML-Guide.

Der unterschätzte Klassiker: "für die Dauer von"

Zustands-Trigger haben eine Option, die viele übersehen: die Mindestdauer (for). Der Trigger feuert dann erst, wenn der Zustand eine bestimmte Zeit lang gehalten wurde.

Das Paradebeispiel ist das Fenster im Winter. "Benachrichtigung wenn Fenster offen" nervt bei jedem Stoßlüften. "Benachrichtigung wenn Fenster seit 10 Minuten offen" trifft genau die Fälle, in denen du es wirklich vergessen hast. Dasselbe Prinzip rettet Bewegungsmelder-Automationen: Licht aus, wenn 5 Minuten keine Bewegung mehr erkannt wurde, statt sofort beim ersten Stillsitzen.

Wichtig zu wissen: Wechselt der Zustand zwischendurch zurück, startet die Uhr neu. Genau das willst du in den meisten Fällen.

Timing in den Aktionen: warten statt zweiter Automation

Timing endet nicht beim Trigger. Auch mitten in einer Automation kannst du warten, und das spart dir oft eine komplette zweite Automation. Home Assistant kennt dafür drei Aktionen: eine feste Verzögerung (delay), das Warten auf einen Auslöser (wait_for_trigger) und das Warten auf ein Template.

Mein Lieblingsbeispiel ist das Lüften im Bad. Erste Idee: Rollladen hoch, 10 Minuten warten, Rollladen wieder runter. Funktioniert, ist aber dumm, denn die feste Zeit passt mal und mal nicht. Schlauer: warten, bis die Luftfeuchtigkeit tatsächlich gesunken ist, mit einer Obergrenze als Sicherheitsnetz.

yaml
1automation:
2  - alias: "Bad lüften nach dem Duschen"
3    triggers:
4      - trigger: numeric_state
5        entity_id: sensor.bad_luftfeuchtigkeit
6        above: 70
7    actions:
8      - action: cover.open_cover
9        target:
10          entity_id: cover.bad
11      - wait_for_trigger:
12          - trigger: numeric_state
13            entity_id: sensor.bad_luftfeuchtigkeit
14            below: 60
15        timeout: "00:30:00"
16        continue_on_timeout: true
17      - action: cover.close_cover
18        target:
19          entity_id: cover.bad

Die Automation öffnet den Rollladen, wartet bis die Luftfeuchtigkeit unter 60 Prozent fällt und schließt ihn dann. Spätestens nach 30 Minuten geht es dank timeout auch ohne weiter. So baust du Timing dynamisch ein, statt feste Zeiten zu raten.

Eine Stolperfalle dabei: Wird die Automation während der Wartezeit erneut ausgelöst, startet sie standardmäßig von vorn, und die Uhr beginnt neu zu laufen. Bei langen Wartezeiten lohnt es sich, das im Kopf zu behalten. Verhindern kannst du Doppelstarts mit einem Input-Helfer als Sperre: Helfer am Anfang auf "an" setzen, als Bedingung prüfen, am Ende wieder auf "aus" setzen. Das Zurücksetzen am Ende ist der Schritt, den man gern vergisst. Frag mich, woher ich das weiß.

Wenn Geräte nicht hinterherkommen

Manchmal brauchst du eine Verzögerung aus einem ganz profanen Grund: Die Hardware kommt nicht mit. Mir ist das mit der Philips-Hue-Bridge passiert. "Schalte alle Lichter im Bereich aus", und die Bridge meldete sinngemäß zurück, ihre Warteschlange sei voll, mehr Befehle nimmt sie gerade nicht an.

Die Lösung ist unspektakulär: die Befehle in kleinen Häppchen schicken, mit kurzen Pausen dazwischen.

yaml
1actions:
2  - action: light.turn_off
3    target:
4      entity_id:
5        - light.decke
6        - light.stehlampe
7  - delay: "00:00:02"
8  - action: light.turn_off
9    target:
10      entity_id:
11        - light.regal
12        - light.vitrine

Zwei Sekunden merkt im Alltag niemand, aber die Bridge atmet durch. Falls bei dir also gelegentlich einzelne Lampen "vergessen" werden, probier das aus, bevor du den Fehler woanders suchst.

Zeitmuster mit Vorsicht

Der Zeitmuster-Trigger startet Automationen in festen Intervallen, etwa alle 5 Minuten. Klingt nützlich, ist aber oft ein Zeichen für einen Umweg. Wenn du alle 5 Minuten prüfst, ob die Temperatur unter 18 Grad liegt, nimm stattdessen direkt den numerischen Zustands-Trigger. Der feuert genau im richtigen Moment, ohne Dauerschleife.

Sinnvoll bleibt das Zeitmuster für Dinge, die wirklich periodisch passieren müssen: Daten von einer externen Quelle abrufen oder regelmäßige Status-Reports.

Mehrere Trigger kombinieren

Eine Automation kann beliebig viele Trigger haben, sie laufen als Oder-Verknüpfung. Feuert irgendeiner, startet die Automation. Damit ersetzt eine Automation "Rollläden steuern" mit zwei Triggern (Sonnenaufgang, Sonnenuntergang) zwei einzelne Automationen. Welcher Trigger gefeuert hat, findest du über Trigger-IDs heraus. Das zeige ich im Extras-Video, die Grundlagen dazu stehen im Automationen-Guide.

Beim Testen hilft der Verlauf der Automation: Dort steht, wann sie gefeuert hat und durch welchen Trigger. Wenn eine Automation gar nicht anspringt, prüfe zuerst, ob die Entity im Trigger noch existiert. Nach dem Austausch eines Geräts ändern sich Entity-Namen gerne mal, und der alte Trigger zeigt dann ins Leere.

Mein Rat für den Anfang: Starte mit Zustands- und Sonnen-Triggern. Die decken 80 Prozent ab, und die Mindestdauer-Option löst die meisten "feuert zu oft"-Probleme von selbst.

Häufige Fragen

Warum löst meine Automation nicht aus?

Die drei häufigsten Gründe: Die Automation ist deaktiviert, die Entity im Trigger existiert nicht mehr, oder eine Bedingung blockiert den Durchlauf. Schau zuerst in den Verlauf der Automation, dort siehst du jeden Start samt Trigger. Steht da gar nichts, liegt das Problem beim Trigger selbst, nicht bei den Aktionen.

Kann eine Automation mehrere Trigger haben?

Ja, beliebig viele. Sie sind als Oder-Verknüpfung geschaltet: Sobald einer feuert, läuft die Automation. Über Trigger-IDs kannst du innerhalb der Automation unterscheiden, welcher Auslöser es war, und je nachdem verschiedene Aktionen ausführen.

Was ist der Unterschied zwischen Trigger und Bedingung?

Der Trigger ist der Startschuss, er reagiert auf ein Ereignis im Moment seines Eintretens. Die Bedingung ist ein Türsteher, der danach prüft, ob die Lage gerade passt, etwa "nur wenn es dunkel ist". Eine Bedingung allein startet nie eine Automation, sie kann sie nur durchlassen oder stoppen.

Wie verhindere ich, dass eine Automation doppelt läuft?

Für einfache Fälle reicht die Mindestdauer im Trigger, dann feuert er nicht bei jedem kurzen Zustandswechsel. Bei Automationen mit Wartezeiten hilft ein Schalter-Helfer als Sperre: am Anfang setzen, als Bedingung abfragen, am Ende zurücksetzen. Vergiss das Zurücksetzen nicht, sonst läuft die Automation nie wieder.

Weiterführende Inhalte

Diskussion im Forum

Hast du Fragen oder Ideen zu diesem Thema?

Diskutiere im Forum

Video teilen

Community

Unterstütze den Kanal

Hat dir der Beitrag geholfen? Es gibt zwei Wege, etwas zurückzugeben.