Automation, Szene, Skript: Home Assistant hat drei Werkzeuge, die sich auf den ersten Blick ähneln. Alle drei können Lichter schalten und Geräte steuern. Trotzdem haben sie klar getrennte Jobs, und wer sie richtig einsetzt, spart sich eine Menge Copy-Paste.
Im Video baue ich ein "Gute Nacht"-Skript und zeige, wie es sich aus Automationen, vom Dashboard und per Sprachassistent aufrufen lässt. Hier die Einordnung zum Nachlesen.
Drei Werkzeuge, drei Jobs
| Werkzeug | Was es ist | Wann du es nimmst |
|---|---|---|
| Automation | Auslöser + Bedingungen + Aktionen | Etwas soll von selbst passieren |
| Szene | Schnappschuss von Gerätezuständen | Mehrere Geräte sollen einen Zustand annehmen |
| Skript | Abfolge von Aktionen, ohne Auslöser | Ein Ablauf soll von überall startbar sein |
Die kürzeste Eselsbrücke: Eine Szene ist ein Foto, ein Skript ist ein Film, eine Automation ist der Bewegungsmelder, der die Kamera auslöst.
Szenen kennen keine Reihenfolge und keine Wartezeiten. Sie setzen Zustände, fertig. Sobald dein Ablauf ein "erst das, dann warten, dann das" enthält, brauchst du ein Skript.
Was ein Skript ausmacht
Ein Skript ist im Kern eine Automation ohne Trigger. Du definierst eine Sequenz von Aktionen, und die läuft, wenn irgendjemand das Skript aufruft. Wer das ist, spielt keine Rolle: eine Automation, ein Button im Dashboard, ein Sprachbefehl oder du selbst per Klick.
Genau darin liegt die Stärke. Mein "Gute Nacht"-Ablauf existiert genau einmal:
1script:
2 gute_nacht:
3 alias: "Gute Nacht"
4 sequence:
5 - service: cover.close_cover
6 target:
7 entity_id: all
8 - service: light.turn_off
9 target:
10 entity_id: all
11 - delay: "00:00:30"
12 - service: lock.lock
13 target:
14 entity_id: lock.haustuerRollläden zu, Lichter aus, eine halbe Minute Karenz, dann abschließen. Dieses Skript ruft bei mir eine Zeit-Automation um 23 Uhr auf. Daneben liegt es als Button im Schlafzimmer-Dashboard, falls ich früher ins Bett gehe. Und in den Ferien übernimmt eine zweite Automation, die später dran ist. Beide rufen dasselbe Skript auf. Ändere ich den Ablauf, ändere ich ihn an einer Stelle. Ohne Skript müsste ich dieselbe Aktionsliste in jeder Automation pflegen.
Statt all nimmst du als Ziel besser Bereiche oder Etagen, etwa "alle Abdeckungen im Erdgeschoss". Der Editor zeigt dir dabei direkt an, welche Entitäten sich hinter so einem Ziel verbergen. Das setzt voraus, dass deine Geräte sauber Räumen zugeordnet sind, mehr dazu im ABC-Video zu Räumen und Bereichen. Und es muss nicht bei Rollläden und Licht bleiben: Bei mir schaltet der Gute-Nacht-Ablauf auch die Apple TVs aus, und wer smarte Thermostate hat, fährt hier gleich die Heizung für die Nacht runter.
Anlegen geht über Einstellungen → Automationen & Szenen → Reiter Skripte, mit demselben Editor wie bei Automationen. Oder klassisch per YAML, wie oben. In der Automation taucht das Skript dann als ganz normale Aktion auf: Aktion hinzufügen, nach dem Skriptnamen suchen, fertig. Die Automation bleibt dadurch angenehm kurz und lesbar.
Felder: Skripte mit Parametern
Skripte können Eingabefelder definieren. Damit wird aus "Benachrichtigung an Daniel senden" ein allgemeines "Benachrichtigung senden", dem die aufrufende Automation Titel und Text mitgibt. Ein Skript, beliebig viele Einsatzorte.
Ein Beispiel: Du willst benachrichtigt werden, wenn jemand nach Hause kommt, und zwar mit Namen. Statt für jede Person eine eigene Aktionskette zu bauen, übergibst du den Namen als Feld:
1script:
2 ankunft_melden:
3 alias: "Ankunft melden"
4 fields:
5 person_name:
6 description: "Wer ist angekommen?"
7 example: "Daniel"
8 sequence:
9 - service: notify.mobile_app_daniel
10 data:
11 title: "Zuhause"
12 message: "{{ person_name }} ist gerade nach Hause gekommen."Die Automation für jede Person ruft das Skript auf und gibt nur noch den Namen mit. Willst du später die Formulierung ändern oder einen zweiten Empfänger ergänzen, passt du genau eine Stelle an.
Das ist der Schritt vom Kopieren zum Bauen von Bausteinen. Typische Kandidaten aus meinem Setup: eine Benachrichtigung mit einheitlichem Format, eine Lichtszene mit übergebener Helligkeit, eine Ansage auf den Lautsprechern. Oder Rollläden nach Himmelsrichtung: ein Skript "Ostseite runter", eins für die Westseite, eins für den Süden, und eine Automation fährt sie je nach Tageszeit unabhängig voneinander. Sobald du merkst, dass zwei Automationen fast dieselben Aktionen enthalten, ist das ein Hinweis: Da will ein Skript raus.
Wartezeiten und Reihenfolge
Skripte arbeiten ihre Sequenz von oben nach unten ab. Mit delay baust du feste Pausen ein, mit "Warten auf Auslöser" wartet das Skript auf ein Ereignis, etwa bis ein Sensor meldet, dass die Rollläden wirklich unten sind. Das macht Skripte zum richtigen Ort für alles, was eine Choreografie braucht.
Ein Wort zur Abgrenzung von Szenen: Beides kombinieren geht wunderbar. Ein Skript kann eine Szene aktivieren und danach weitermachen. Mein Filmabend-Skript schaltet erst die Lichtszene "Kino", wartet dann kurz und fährt anschließend die Leinwand runter. Die Szene kümmert sich um den Zustand, das Skript um den Ablauf drumherum.
Eine Sache noch: Ruft eine Automation ein Skript auf, wartet sie standardmäßig, bis das Skript durchgelaufen ist. Bei einem Skript mit langen Wartezeiten kann das überraschen. Wenn die Automation direkt weitermachen soll, starte das Skript stattdessen über script.turn_on.
Wie du Skripte aus Automationen heraus sinnvoll verkettest und wo Bedingungen ins Spiel kommen, vertieft der Automationen-Guide.
Skripte testen: Traces lesen lohnt sich
Bevor ein neues Skript in den Dauerbetrieb geht, führe es einmal von Hand aus. Im Skript-Editor klickst du dafür auf die drei Punkte und auf "Skript ausführen". Danach lohnt der Blick in die Traces: Dort siehst du Schritt für Schritt, was das Skript gemacht hat und wo es gehakt hat.
Bei mir kam beim Dreh des Videos prompt ein Fehler hoch: "Queue voll" im Gateway. Übersetzt: Die Hue Bridge war mit der Flut an gleichzeitigen Befehlen überfordert, weil das Skript alle Lichter auf einen Schlag schalten wollte. Ohne den Blick in die Traces hätte ich nur gemerkt, dass irgendwo eine Lampe anbleibt.
Die Lösung ist simpel: Befehle entzerren. Statt alle Lichter gleichzeitig schaltest du sie raumweise mit kurzen Pausen dazwischen:
1script:
2 lichter_aus_gestaffelt:
3 alias: "Lichter aus, nacheinander"
4 sequence:
5 - service: light.turn_off
6 target:
7 area_id: wohnzimmer
8 - delay: "00:00:02"
9 - service: light.turn_off
10 target:
11 area_id: kueche
12 - delay: "00:00:02"
13 - service: light.turn_off
14 target:
15 area_id: flurZwei Sekunden merkt abends niemand, aber die Bridge dankt es dir. Dieses Muster hilft generell, wenn Funk-Gateways viele Geräte gleichzeitig ansprechen sollen. Wenn ein Skript gar nicht erst startet, hilft der Troubleshooting-Guide weiter.
Häufige Fragen
Was ist der Unterschied zwischen Skript und Automation in Home Assistant?
Eine Automation startet von selbst, weil sie einen Auslöser hat: eine Uhrzeit, einen Sensorwert, ein Ereignis. Ein Skript hat keinen Auslöser, es ist nur die Abfolge von Aktionen und läuft erst, wenn etwas oder jemand es aufruft. In der Praxis ergänzen sich beide: Die Automation entscheidet wann, das Skript beschreibt was.
Wie starte ich ein Skript vom Dashboard aus?
Jedes Skript ist eine Entität und lässt sich wie ein Schalter aufs Dashboard legen. Am einfachsten nimmst du eine Tile- oder Button-Karte und wählst dein Skript als Entität aus, ein Tipp darauf startet den Ablauf. So wird aus dem Gute-Nacht-Skript ein Knopf neben dem Bett.
Warum führt mein Skript nicht alle Aktionen aus?
Schau in die Traces des Skripts, dort steht, an welchem Schritt es gescheitert ist. Häufige Ursachen: Ein Gateway wie die Hue Bridge ist mit zu vielen gleichzeitigen Befehlen überfordert, eine Entität ist gerade nicht verfügbar, oder ein "Warten auf Auslöser" läuft in einen Timeout. Kurze delay-Pausen zwischen den Aktionen lösen erstaunlich viele dieser Probleme.
Kann ich ein Skript per Sprachbefehl oder von außen starten?
Ja, das ist eine der Stärken von Skripten. Sprachassistenten können freigegebene Skripte direkt aufrufen, und über die API oder einen Webhook startest du sie auch von außerhalb, etwa aus anderen Tools. Wie das mit Webhooks und der REST-API funktioniert, zeige ich in einem eigenen ABC-Video.
