Skripte in Home Assistant: Verwendung, Modi und praktische Beispiele

Letzte Aktualisierung: 17/03/2026
Autor: Holger
  • Mit Skripten in Home Assistant können Sie wiederverwendbare Aktionssequenzen definieren und so die Logik von ihrer Ausführung trennen.
  • Es gibt verschiedene Ausführungsmodi (einzeln, Neustart, in Warteschlange, parallel), die steuern, wie sich Skripte verhalten, wenn sie mehrmals aufgerufen werden.
  • Durch die Verwendung von Variablen und Feldern werden Skripte zu konfigurierbaren Bausteinen, die sich ideal für komplexe Integrationen und die Wiederverwendung eignen.
  • In Kombination mit Automatisierungen, Szenen, Gruppen und Zonen ermöglichen Skripte den Aufbau eines robusten, sicheren und wartungsfreundlichen Hausautomatisierungssystems.

Skripte in Home Assistant

Wenn Sie Home Assistant schon länger nutzen, kennen Sie wahrscheinlich bereits Automatisierungen, Szenen und Gruppen. Vielleicht sind Sie sich aber nicht ganz sicher, wofür Skripte in Home Assistant gedacht sind oder wann sich deren Einsatz lohnt . Das ist schade, denn richtig eingesetzt gehören sie zu den leistungsstärksten Werkzeugen, um das volle Potenzial Ihrer Hausautomation auszuschöpfen.

In diesem Artikel erklären wir Schritt für Schritt, was Skripte sind, wie sie sich von Automatisierungen unterscheiden, wie man sie sowohl über die grafische Oberfläche als auch mithilfe von YAML und der Skriptsyntax von Home Assistant konfiguriert , welche Ausführungsmodi es gibt, wie man Variablen übergibt, wie man auf die Fertigstellung wartet (oder nicht) und wie man sie in Szenen, Gruppen und Zonen integriert. Ziel ist es, dass Sie nach dem Lesen dieses Artikels ein klares und praktisches Verständnis für die Anwendung von Skripten in Ihrem täglichen Arbeitsablauf haben.

Was ist ein Skript in Home Assistant und wozu wird es verwendet?

In Home Assistant ist ein Skript im Grunde eine Abfolge von Aktionen, die in der von Ihnen festgelegten Reihenfolge ausgeführt werden . Sie werden nicht von selbst ausgelöst: Sie werden ausgeführt, wenn Sie sie über die Benutzeroberfläche, eine andere Automatisierung, ein anderes Skript oder einen Dienst „aktivieren“ (wenn Sie das Skript aufrufen).

Die Skriptintegration erstellt für jedes Skript eine Entität vom Typ script.your_name . Diese Entität verhält sich praktisch wie etwas, das Sie aktivieren, deaktivieren oder über Aktionen aufrufen können, genau wie ein Dienst wie light.turn_on oder switch.turn_off.

Das Tolle an Skripten ist, dass sie wiederkehrende Logik kapseln: Anstatt dieselbe Abfolge von Schritten in mehreren Automatisierungen zu kopieren , erstellt man ein wiederverwendbares Skript und ruft es von allen auf. Das vereinfacht die Konfiguration, reduziert Fehler und erleichtert die Systemwartung erheblich.

Ein einfaches Beispiel: Sie können ein Skript haben, das den "Nachtmodus" steuert (Licht ausschalten, Jalousien herunterlassen, Heizung anpassen und eine sanfte Lichtszene aktivieren) und dieses Skript dann von verschiedenen Automatisierungen aus aufrufen : wenn ein physischer Knopf gedrückt wird, wenn eine bestimmte Zeit erreicht ist oder wenn Sie feststellen, dass alle schlafen gegangen sind.

Aus technischer Sicht basieren die Skripte auf der YAML-basierten Skriptsyntax von Home Assistant – dem gleichen Prinzip wie bei Automatisierungen, jedoch ohne Auslöser. Sie legen fest, wann die Skripte ausgelöst werden; das Skript definiert lediglich, was und wie etwas passiert.

Unterschiede zwischen Skripten, Automatisierungen, Szenen, Gruppen und Zonen

Bei der ersten Nutzung von Home Assistant kann man leicht den Überblick über Skripte, Automatisierungen, Szenen, Gruppen und Zonen verlieren, da diese oft ähnliche Funktionen zu erfüllen scheinen. Tatsächlich hat aber jede dieser Komponenten eine ganz spezifische Rolle im Smart-Home-System.

Automatisierungen definieren das „Wann“: Sie verfügen über einen oder mehrere Auslöser (Zeit, Bewegungserkennung, Zustandsänderung, Ereignis usw.), optionale Bedingungen und eine Abfolge von Aktionen. Skripte hingegen definieren das „Was“ und das „Wie“ – also die Abfolge der Aktionen –, aber nicht, wann sie ausgeführt werden.

Szenen hingegen sind so konzipiert, dass sie eine Reihe von Geräten in einem bestimmten Endzustand belassen: welche Lichter eingeschaltet sind, mit welcher Helligkeit und Farbe, welche Jalousien hoch- oder heruntergefahren sind, welche Klimaanlage aktiv ist usw. Sie verfügen nicht über bedingte Logik oder Schleifen; sie "malen" einfach einen vordefinierten Zustand.

Gruppen und Zonen funktionieren anders: Eine Gruppe fasst ähnliche Einheiten zusammen (z. B. mehrere Lampen zu einer Gruppe) und ermöglicht das Ein- und Ausschalten wie bei einer einzelnen Einheit . Zonen werden typischerweise für Anwesenheitserkennung und Geolokalisierung verwendet (z. B. Heimzone, Arbeitszone, Fitnessstudiozone), sodass man feststellen kann, ob sich ein Gerät oder eine Person innerhalb oder außerhalb eines bestimmten Bereichs befindet.

Die häufig gestellte Frage lautet: „Was ist am besten geeignet: Gruppen, Zonen oder Szenen?“ Sie konkurrieren nicht miteinander, sondern ergänzen sich. Szenen definieren Zustände, Gruppen vereinfachen die gemeinsame Steuerung, und Zonen dienen der Standorterkennung . Skripte sind das wichtigste Werkzeug zur Orchestrierung komplexer Arbeitsabläufe, und Automatisierungen legen fest, wann diese ausgeführt werden.

  Die besten Eingabehilfen in Windows 11

Wann man ein Skript und wann man Automatisierung einsetzt.

Eine häufige Frage von Anfängern ist, wann man ein Skript verwenden und wann Automatisierung besser geeignet ist. Generell gilt: Automatisierung ist ideal, um auf Ereignisse zu reagieren (eine Tür öffnet sich, es wird dunkel, jemand kommt nach Hause), während Skripte perfekt geeignet sind, um die Logik zu kapseln, die als Reaktion auf diese Ereignisse ausgeführt werden soll.

Für einfache Aufgaben wie das Einschalten einer Lampe bei Bewegungserkennung reicht wahrscheinlich eine unkomplizierte Automatisierung mit ein oder zwei Aktionen aus. Werden die Aktionen jedoch komplexer und beinhalten mehrere Serviceaufrufe, Wartezeiten, interne Bedingungen usw., empfiehlt es sich, diesen Teil in ein separates Skript auszulagern und es von der Automatisierung aufrufen zu lassen.

Ein weiterer Anwendungsfall für Skripte ist die Wiederverwendung derselben Abfolge von Aktionen an mehreren Stellen. Anstatt diese Logik in drei separaten Automatisierungen zu replizieren, erstellen Sie ein Skript und rufen es von allen drei auf . Sollten Sie später Änderungen vornehmen wollen, aktualisieren Sie einfach das Skript – fertig.

Sie sind auch sehr nützlich bei der Interaktion mit externen Geräten oder komplexen Diensten, bei denen mehrere verkettete Schritte, Wiederholungsversuche, Wartezeiten oder Statusprüfungen erforderlich sind . Die zentrale Speicherung all dieser Vorgänge in einem Skript erleichtert das Debuggen und die Wartung des Systems erheblich.

Zusammenfassend lässt sich sagen: Wenn Ihr Hauptbedürfnis darin besteht, „wenn X passiert, tue etwas“, beginnen Sie mit der Automatisierung; wenn Sie hingegen „diesen Ablauf komplex gestalten“ und ihn von mehreren Stellen aus aufrufen können möchten, planen Sie ihn als Skript und verwenden Sie es wieder.

Möglichkeiten zur Skripterstellung: grafische Benutzeroberfläche und YAML

Home Assistant bietet zwei Möglichkeiten zur Skripterstellung: über die Weboberfläche (den integrierten Skripteditor) oder manuell in YAML-Dateien. Beide Optionen sind völlig legitim und funktionieren in der Regel gut zusammen, insbesondere wenn Sie visuelle Benutzerfreundlichkeit mit hoher Flexibilität kombinieren möchten.

In der Benutzeroberfläche können Sie im Bereich „Skripte“ ein neues Skript erstellen. Der Editor ermöglicht es Ihnen, Name, Beschreibung und Symbol festzulegen sowie Aktionen in Blockform hinzuzufügen (z. B. Licht einschalten, X Sekunden warten, einen Dienst aufrufen, eine Vorlage ausführen usw.). Für alle, die mit der YAML-Syntax noch nicht vertraut sind, ist diese Option besonders benutzerfreundlich und am wenigsten anfällig für Formatierungsfehler.

Wenn Sie die volle Kontrolle bevorzugen, können Sie die Skripte entweder in Ihrer configuration.yaml-Datei oder in einer separaten Datei, die Sie beispielsweise mit !include einbinden, schreiben und WSL für Ihre Skripte verwenden . In YAML definieren Sie Skriptalias, Sequenz, Modi, Felder und mehr und können die volle Leistungsfähigkeit der Skriptsyntax von Home Assistant nutzen, einschließlich Jinja-Vorlagen für komplexe Logik.

Unabhängig von der Methode verwendet Home Assistant intern dieselbe Ausführungslogik. Es gibt keinen Unterschied in der Funktionalität zwischen einem über die Benutzeroberfläche erstellten Skript und einem, das in reinem YAML definiert ist; der Unterschied liegt darin, dass die Benutzeroberfläche eine visuellere Umgebung bietet, während YAML eine direktere Kontrolle über den Text ermöglicht.

Wichtig ist zu verstehen, dass die "Sequenz" eines Skripts eine Liste von Aktionen in der richtigen Reihenfolge ist und dass viele der Automatisierungsoptionen, die Sie bereits kennen (wait_template, choose, repeat usw.), auch innerhalb von Skripten verfügbar sind, um sehr komplexe Automatisierungsabläufe zu erstellen.

Skriptausführungsmodi in Home Assistant

Einer der wichtigsten (und oft übersehenen) Aspekte von Skripten in Home Assistant ist ihr Ausführungsmodus. Dieser Modus bestimmt, wie sich das Skript verhält, wenn man versucht, es neu zu starten, während es bereits läuft . Dies geschieht häufig, wenn es von mehreren Automatisierungen aufgerufen wird oder wenn der Benutzer ungeduldig ist und es mehrmals hintereinander ausführt.

Home Assistant bietet vier Hauptmodi: Einzelmodus, Neustartmodus, Warteschlangenmodus und Parallelmodus . Jeder Modus hat seine spezifischen Anwendungsbereiche, und es ist wichtig, denjenigen auszuwählen, der Ihren Bedürfnissen am besten entspricht.

Der Einzelmodus ist am einfachsten: Läuft das Skript bereits und Sie versuchen, es erneut zu starten, wird kein neuer Durchlauf gestartet. Stattdessen gibt Home Assistant eine Warnung aus und ignoriert den Versuch. Dies ist nützlich, wenn es keinen Sinn macht, das Skript zu duplizieren , beispielsweise ein Skript zum „Ausschalten aller Geräte“, das Sie nicht mehrfach ausführen möchten.

Im Neustartmodus wird die aktuelle Skriptausführung beim erneuten Ausführen sofort gestoppt und von vorn begonnen. Dieser Modus ist ideal, wenn der letzte Befehl Vorrang haben soll , beispielsweise bei einem Skript, das Beleuchtung und Raumklima anhand eines Profils anpasst und bei dem jeder neue Aufruf den vorherigen überschreiben soll.

  Epic Games Launcher verbraucht viele Ressourcen: echte Ursachen und Lösungen

Im Warteschlangenmodus werden Ausführungen in einer Warteschlange gespeichert: Jeder Aufruf, der während der Skriptausführung eingeht, wird in einer Warteschlange abgelegt und ausgeführt, sobald der vorherige abgeschlossen ist. Home Assistant stellt sicher, dass die Ausführungen in der Reihenfolge ihres Eingangs erfolgen. Dies ist besonders nützlich, wenn sich Aktionen nicht überschneiden sollen, aber dennoch alle verarbeitet werden müssen, beispielsweise bei der Steuerung desselben Geräts mit mehreren kurzen Anfragen.

Der Parallelmodus ermöglicht es, dass jeder neue Aufruf eine unabhängige Ausführung erzeugt, sodass mehrere Threads desselben Skripts gleichzeitig ausgeführt werden können . Dies sollte mit Bedacht eingesetzt werden, da es zu unerwartetem Verhalten führen kann, wenn alle Threads dieselben Entitäten bearbeiten. Für nicht blockierende Aufgaben oder solche, die auf unterschiedlichen Ressourcen operieren, ist dieser Modus jedoch sehr leistungsstark.

Variablen und Felder in Skripten verwenden

Skripte gewinnen an Flexibilität, wenn man ihnen Variablen übergibt. Anstatt eines festen Skripts kann man so etwas wie eine „Funktion“ verwenden, der man beispielsweise mitteilt, welches Licht eingeschaltet werden soll, welche Helligkeitsstufe verwendet werden soll oder wie lange ein Gerät aktiv bleiben soll.

Über die grafische Benutzeroberfläche erfolgt dies durch Hinzufügen von „Feldern“ zum Skript . Im Skripteditor können Sie das Dreipunktmenü öffnen und die Option „Felder hinzufügen“ auswählen, um benutzerdefinierte Einträge zu definieren . Dadurch öffnet sich der Bereich „Felder“, in dem Sie Name, Typ (Text, Zahl, Entitätsauswahl usw.) und weitere Optionen für jedes Feld konfigurieren können.

Diese Felder werden dann in den Skriptvorlagen mithilfe des von Ihnen definierten Schlüssels verwendet. Wenn Sie beispielsweise ein Feld namens „brightness_level“ (die korrekte Schreibweise ist natürlich besser) erstellen, können Sie innerhalb der Aktionen mit einer Vorlage darauf verweisen, die diesen Wert verwendet, um einen Dienst anzupassen , beispielsweise die Helligkeit einer Lampe.

Das Interessante daran ist, dass diese Felder als konfigurierbare Eingabefelder im Editor erscheinen , wenn dieses Skript in anderen Bereichen der Benutzeroberfläche verwendet wird (z. B. in einer Automatisierung) . Dadurch lässt sich dasselbe Skript mit unterschiedlichen Parametern wiederverwenden, ohne Logik zu duplizieren.

Zusätzlich zu den im Editor definierten Feldern können Sie Variablen innerhalb der Aktionsdaten an ein Skript übergeben , wenn Sie es aufrufen. Dies funktioniert sowohl beim direkten Aufruf der Entität `script.name` als auch bei Verwendung des Dienstes `script.turn_on`. Alle gesendeten Schlüssel stehen in den Skriptvorlagen als Variablen zur Verfügung, selbst wenn Sie sie nicht als Felder definiert haben.

Skripte aufrufen: script.NAME vs script.turn_on

In Home Assistant gibt es zwei Hauptmöglichkeiten, ein Skript von einer Aktion aus zu starten: durch direkten Aufruf der Skript-Entität (z. B. script.night_mode) oder durch Verwendung des generischen Dienstes script.turn_on und Übergabe der Entität als Ziel.

Auf den ersten Blick scheinen sie identisch, der entscheidende Unterschied liegt jedoch im Warteverhalten. Wenn Sie das Skript „direkt“ aufrufen (es also als Skriptaktion verwenden), wartet die aufrufende Automatisierung oder das aufrufende Skript, bis das aufgerufene Skript seine Ausführung abgeschlossen hat, bevor es mit den nächsten Schritten fortfährt.

In diesem Modus wird, falls das aufgerufene Skript aufgrund eines Fehlers abgebrochen wird, auch das aufrufende Skript oder die Automatisierung abgebrochen . Dies ist besonders nützlich, wenn sich alles wie ein einzelner Block verhalten soll: Entweder wird alles korrekt ausgeführt, oder die übergeordnete Aktion wird abgebrochen.

Wenn Sie jedoch den Dienst `script.turn_on` verwenden, um ein oder mehrere Skripte zu starten , wartet der Aufrufer nicht auf deren Beendigung. Er fordert lediglich deren Start (in der von Ihnen angegebenen Reihenfolge) an und fährt dann mit seinen eigenen Aktionen fort, ohne blockiert zu werden.

Im zweiten Fall wirken sich eventuelle Fehler in den aufgerufenen Skripten nicht auf das aufrufende Skript aus . Dies ermöglicht die Ausführung im Hintergrund: Sie starten ein Skript, das rechenintensive Aufgaben übernimmt (z. B. Daten protokolliert, mehrere Geräte steuert usw.), während Ihre Automatisierung ihre eigenen Aufgaben fortsetzt.

Ein interessantes Muster besteht darin, `script.turn_on` mit einem späteren Warten (z. B. mit `wait_template`) zu kombinieren, um abzuwarten, bis das Hintergrundskript einen bestimmten Zustand erreicht hat, ohne dass es zu einem Fehler kommt, der das gesamte System zum Absturz bringt . Dies ist eine subtile Methode, Prozesse zu entkoppeln und Ihr Hausautomationssystem robuster gegen gelegentliche Fehler zu machen.

  Lösung für das Problem, dass WhatsApp-Audios nicht mehr abgespielt werden

Skripte, Sicherheit und bewährte Verfahren

In komplexen Hausautomationssystemen dienen Skripte nicht nur dem Einschalten von Lichtern oder dem Bewegen von Jalousien; sie können auch auf sensible Geräte zugreifen, Daten offenlegen oder mit externen Diensten interagieren. Daher ist es unerlässlich, bei der Entwicklung von Skripten in Home Assistant bewährte Sicherheitspraktiken anzuwenden.

Wenn Ihre Skripte Verbindungen zu Remote-Diensten oder APIs herstellen oder Token und Anmeldeinformationen verarbeiten, empfiehlt es sich, die geheimen Optionen von Home Assistant zu verwenden, anstatt Passwörter oder API-Schlüssel direkt in der YAML-Datei fest zu kodieren . Dadurch bleibt Ihre Konfiguration übersichtlicher und Sie verhindern, dass sensible Informationen preisgegeben werden, wenn Sie Skriptausschnitte weitergeben.

Es empfiehlt sich außerdem, dass Ihre Skripte vor der Ausführung sensibler Aktionen eine Zustandsprüfung beinhalten. Beispielsweise können Sie überprüfen, ob sich ein Gerät im erwarteten Zustand befindet, bevor Sie es ändern, oder ob bestimmte Sicherheitsbedingungen erfüllt sind (niemand zu Hause, Türen verschlossen usw.), bevor Sie Befehle ausführen, die den physischen Zugriff beeinflussen.

In komplexeren Umgebungen, in denen kundenspezifische Lösungen, künstliche Intelligenz oder Datenanalysesysteme integriert sind, ist Cybersicherheit von entscheidender Bedeutung. In solchen Szenarien ist es üblich, Home Assistant mit spezifischen Entwicklungen und Sicherheitsaudits zu kombinieren , entweder durch externe Anbieter oder Experten auf diesem Gebiet.

Parallel dazu ist es ratsam, Ihre Skripte und Automatisierungen regelmäßig zu überprüfen, um sicherzustellen, dass sie nicht veraltet sind, keine Verweise auf gelöschte Entitäten enthalten und keine unnötige Logik angesammelt wurde, die zu unerwartetem Verhalten führen könnte . Eine saubere und übersichtliche Grundlage ist der Schlüssel zu einer stabilen und sicheren Installation.

Skripte und Datenanalyse im Smart Home

Ein weiteres Anwendungsgebiet für Skripte ist die Datenerfassung und -verarbeitung. Home Assistant zeichnet zahlreiche Informationen über Energieverbrauch, Temperaturen, Gerätestatus, Anwesenheit usw. auf, und Skripte können als Bindeglied fungieren, um diese Daten vor dem Senden oder der Weiterverarbeitung aufzubereiten.

Sie können beispielsweise Skripte erstellen, die regelmäßig bestimmte Werte erfassen und an ein Business-Analytics-System wie ein Power BI-Dashboard oder ein anderes Visualisierungstool senden oder diese mit Python analysieren . Dadurch wird Ihr Hausautomationssystem zu einer Quelle für Echtzeitdaten zu Nutzungsgewohnheiten und Energieeffizienz und hilft Ihnen, fundiertere Entscheidungen zu treffen.

Kombiniert man dies mit fortschrittlicher Logik oder externen KI-Modellen, ergeben sich noch weitere Möglichkeiten: Ihre Skripte können Dienste aufrufen, die Muster analysieren, Anpassungen im Zeitplan vorschlagen oder Anomalien im Geräteverhalten erkennen . All dies lässt sich dann über Automatisierungen oder zusätzliche Skripte wieder in Home Assistant integrieren.

In solchen Szenarien bieten Softwareentwicklungsunternehmen häufig spezifische Lösungen an, die Home Assistant mit personalisierten Dashboards, Algorithmen zur Verbrauchsprognose oder intelligenten Alarmsystemen verbinden. Skripte dienen dabei als praktisches Mittel, über das Home Assistant mit diesem externen Ökosystem kommuniziert.

Das Interessante daran ist, dass man mit guter Planung sein Zuhause nicht nur komfortabler und automatisierter gestalten kann, sondern auch effizienter und transparenter in Bezug auf die Daten, wobei alles durch gut durchdachte Skripte und Automatisierungen orchestriert wird, die die Aktionen zum richtigen Zeitpunkt auslösen.

Nach all dem wird deutlich, dass Skripte in Home Assistant weit mehr als nur eine innovative Funktion sind: Sie sind das Schlüsselwerkzeug, um die komplexe Logik Ihres Systems zu strukturieren, Aktionen wiederzuverwenden, das „Was“ vom „Wann“ zu trennen, externe Dienste zu integrieren, Sicherheit zu gewährleisten und Daten für tiefergehende Analysen aufzubereiten. Mit einer sinnvollen Kombination aus Skripten, Automatisierungen, Szenen, Gruppen und Zonen entwickelt sich Ihr System von einer einfachen Ansammlung vernetzter Geräte zu einer kohärenten, flexiblen Hausautomatisierungsplattform, die mit Ihrem System mitwachsen kann, ohne unübersichtlich zu werden.

Erstellen und debuggen Sie Skripte Schritt für Schritt mit Copilot.
In Verbindung stehender Artikel:
Wie man mit Copilot Schritt für Schritt Skripte erstellt und debuggt.