Home Assistant: Scripts vs. Automationen â Unterschied und Einsatz
Dieser Artikel kann Affiliate-Links enthalten. Wenn du ĂŒber diese Links einkaufst, erhalten wir möglicherweise eine kleine Provision â ohne Mehrkosten fĂŒr dich. Das hilft uns, weiterhin kostenlose Inhalte zu erstellen.
Wenn du in Home Assistant AblĂ€ufe automatisierst, begegnen dir zwei Werkzeuge: Automationen und Scripts. Auf den ersten Blick sehen sie Ă€hnlich aus, beide fĂŒhren Aktionen aus. Aber sie haben grundlegend unterschiedliche Aufgaben. Wer den Unterschied versteht, baut saubere, wartbare und fehlerfreie Automationen.
Der Grundunterschied: Trigger vs. Aufruf
Die Faustregel ist einfach:
- Automation = reagiert automatisch auf einen Trigger (Ereignis, Zustand, Zeit). Sie hat einen Auslöser, optionale Bedingungen und Aktionen. Eine Automation lÀuft von allein, wenn ihr Trigger feuert.
- Script = eine wiederverwendbare Aktionsfolge, die manuell oder von einer Automation aufgerufen wird. Ein Script hat keinen eigenen Trigger, es wartet darauf, aktiviert zu werden.
Stell dir eine Automation wie einen Sensor mit angeschlossener Maschine vor: Der Sensor (Trigger) startet die Maschine (Aktionen) automatisch. Ein Script ist die Maschine allein, jemand muss sie einschalten, aber du kannst sie an verschiedene Sensoren anschlieĂen.
Synology DS423+ fĂŒr Docker
Unsere Empfehlung passend zu diesem Thema
* Affiliate-Link, du zahlst nicht mehr, wir erhalten eine kleine Provision
Automation: Aufbau und Beispiel
Eine Automation besteht aus drei Teilen:
- Trigger: Was löst die Automation aus? (Zustandswechsel, Zeitpunkt, Event, Webhook, MQTT, Template ...)
- Conditions (optional): Unter welchen zusÀtzlichen Bedingungen soll sie laufen? (Tageszeit, Anwesenheit, Zustand eines anderen GerÀts ...)
- Actions: Was soll passieren? (Licht schalten, Nachricht senden, Service aufrufen ...)
Beispiel: Bewegungslicht im Flur
automation:
- alias: "Flur Bewegungslicht"
description: "Licht an bei Bewegung, aus nach 3 Minuten"
trigger:
- platform: state
entity_id: binary_sensor.flur_bewegung
to: "on"
condition:
- condition: numeric_state
entity_id: sensor.flur_helligkeit
below: 50
action:
- service: light.turn_on
target:
entity_id: light.flur
data:
brightness_pct: 80
color_temp_kelvin: 3000
- wait_for_trigger:
- platform: state
entity_id: binary_sensor.flur_bewegung
to: "off"
for: "00:03:00"
- service: light.turn_off
target:
entity_id: light.flur
data:
transition: 5
Diese Automation hat einen klaren Trigger (Bewegung), eine Bedingung (dunkel genug) und Aktionen (Licht an, warten, Licht aus). Sie lÀuft vollstÀndig automatisch.
Script: Aufbau und Beispiel
Ein Script hat keinen Trigger und keine Conditions. Es besteht nur aus einer Sequenz von Aktionen, optional mit Variablen fĂŒr FlexibilitĂ€t.
script:
tuerklingel_routine:
alias: "Tuerklingel-Routine"
description: "Benachrichtigung, Kamerabild, Flutlicht"
mode: single
sequence:
- service: light.turn_on
target:
entity_id: light.eingang_flutlicht
data:
brightness_pct: 100
- service: camera.snapshot
target:
entity_id: camera.haustuer
data:
filename: "/config/www/snapshots/tuerklingel_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg"
- service: notify.mobile_app_thorstens_iphone
data:
title: "Tuerklingel"
message: "Jemand steht vor der Tuer."
data:
image: "/local/snapshots/tuerklingel_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg"
- delay: "00:05:00"
- service: light.turn_off
target:
entity_id: light.eingang_flutlicht
Beispiel: TĂŒrklingel-Routine
Dieses Script kann jetzt von mehreren Stellen aufgerufen werden: von einer Automation (TĂŒrklingel-Sensor), von einem Dashboard-Button, von einem Sprachbefehl oder sogar von einem NFC-Tag. Die Logik ist einmal definiert und wird ĂŒberall wiederverwendet.
Die vier Script-Modes
Jedes Script hat einen Mode, der festlegt, was passiert, wenn das Script aufgerufen wird, obwohl es bereits lÀuft:
1. single (Standard)
Das Script lĂ€uft nur einmal gleichzeitig. Ein erneuter Aufruf wĂ€hrend der AusfĂŒhrung wird ignoriert und erzeugt eine Warnung im Log. Ideal fĂŒr Aktionen, die nicht unterbrochen werden dĂŒrfen (z. B. TĂŒrklingel-Routine).
script:
beispiel_single:
mode: single
sequence:
- service: light.turn_on
target:
entity_id: light.flur
- delay: "00:05:00"
- service: light.turn_off
target:
entity_id: light.flur
2. restart
Ein erneuter Aufruf stoppt die laufende Instanz und startet das Script von vorn. Perfekt fĂŒr zeitgesteuerte Aktionen, die bei erneutem Trigger zurĂŒckgesetzt werden sollen (z. B. Bewegungslicht mit Timer-Reset).
script:
flur_licht_timer:
mode: restart
sequence:
- service: light.turn_on
target:
entity_id: light.flur
- delay: "00:03:00"
- service: light.turn_off
target:
entity_id: light.flur
Jede neue Bewegung startet den 3-Minuten-Timer neu, ohne dass das Licht zwischendurch ausgeht.
3. queued
Erneute Aufrufe werden in eine Warteschlange gestellt und nacheinander abgearbeitet. NĂŒtzlich fĂŒr Aktionen, die sich nicht ĂŒberschneiden dĂŒrfen, aber alle ausgefĂŒhrt werden sollen (z. B. TTS-Durchsagen).
script:
tts_durchsage:
mode: queued
max: 5
fields:
nachricht:
description: "Text der Durchsage"
sequence:
- service: tts.speak
target:
entity_id: tts.piper
data:
media_player_entity_id: media_player.kueche
message: "{{ nachricht }}"
- delay: "00:00:03"
Mit max: 5 werden maximal 5 Durchsagen in die Warteschlange gestellt. Weitere Aufrufe werden verworfen.
4. parallel
Mehrere Instanzen laufen gleichzeitig. FĂŒr unabhĂ€ngige Aktionen, die sich nicht gegenseitig beeinflussen (z. B. Benachrichtigungen an verschiedene EmpfĂ€nger).
script:
benachrichtigung_senden:
mode: parallel
max: 10
fields:
titel:
description: "Titel der Nachricht"
text:
description: "Nachrichtentext"
sequence:
- service: notify.mobile_app_thorstens_iphone
data:
title: "{{ titel }}"
message: "{{ text }}"
single (den Standard) fĂŒr Bewegungslichter. Das fĂŒhrt dazu, dass der Timer nicht zurĂŒckgesetzt wird, wenn wĂ€hrend der Wartezeit erneut Bewegung erkannt wird, das Licht geht trotz Bewegung aus. Lösung: mode: restart fĂŒr alle zeitgesteuerten Aktionen, die bei erneutem Trigger neu starten sollen. Mehr zum Debuggen solcher Probleme findest du unter Automationen debuggen: Traces und Logs.Scripts aus Automationen aufrufen
Das wahre Potenzial von Scripts entfaltet sich, wenn du sie aus Automationen heraus aufrufst. Damit trennst du Auslöser (Automation) von Aktion (Script):
automation:
- alias: "Tuerklingel gedrueckt"
trigger:
- platform: state
entity_id: binary_sensor.tuerklingel
to: "on"
action:
- service: script.turn_on
target:
entity_id: script.tuerklingel_routine
- alias: "NFC-Tag Eingang gescannt"
trigger:
- platform: tag
tag_id: "nfc-tag-eingang-123"
action:
- service: script.turn_on
target:
entity_id: script.tuerklingel_routine
Beide Automationen lösen dasselbe Script aus. Wenn du die TĂŒrklingel-Routine Ă€ndern willst (z. B. einen zweiten Lautsprecher hinzufĂŒgen), musst du nur das Script anpassen, nicht beide Automationen.
Variables an Scripts ĂŒbergeben
Scripts können Variablen (Fields) akzeptieren, was sie noch flexibler
macht:
script:
licht_szene:
alias: "Licht-Szene setzen"
fields:
raum:
description: "Welcher Raum?"
helligkeit:
description: "Helligkeit in Prozent"
farbtemp:
description: "Farbtemperatur in Kelvin"
sequence:
- service: light.turn_on
target:
entity_id: "light.{{ raum }}"
data:
brightness_pct: "{{ helligkeit }}"
color_temp_kelvin: "{{ farbtemp }}"
automation:
- alias: "Abend-Szene Wohnzimmer"
trigger:
- platform: sun
event: sunset
action:
- service: script.licht_szene
data:
raum: "wohnzimmer"
helligkeit: 60
farbtemp: 2700
Blueprints: Automationen teilen und importieren
Ein Blueprint ist eine Vorlage fĂŒr eine Automation oder ein Script. Du definierst die Logik einmal und kannst sie mehrfach mit unterschiedlichen Parametern nutzen. Blueprints sind besonders nĂŒtzlich, wenn du die gleiche Automation in verschiedenen RĂ€umen verwenden willst.
Aus dem Bewegungslicht-Beispiel wird ein
Blueprint:
blueprint:
name: "Bewegungslicht mit Timer"
description: "Licht bei Bewegung an, nach X Minuten aus"
domain: automation
input:
bewegungsmelder:
name: "Bewegungsmelder"
selector:
entity:
domain: binary_sensor
licht:
name: "Licht"
selector:
entity:
domain: light
timer_minuten:
name: "Abschaltzeit (Minuten)"
default: 3
selector:
number:
min: 1
max: 30
trigger:
- platform: state
entity_id: !input bewegungsmelder
to: "on"
action:
- service: light.turn_on
target:
entity_id: !input licht
- wait_for_trigger:
- platform: state
entity_id: !input bewegungsmelder
to: "off"
for:
minutes: !input timer_minuten
- service: light.turn_off
target:
entity_id: !input licht
Diesen Blueprint kannst du jetzt fĂŒr jeden Raum einzeln einsetzen, mit unterschiedlichen Bewegungsmeldern, Lichtern und Abschaltzeiten. Mehr dazu im Ratgeber Home Assistant Blueprints: Automationen teilen und importieren.
Veröffentlicht durch die SmartHomePraxis-Redaktion. Veröffentlicht am 16. August 2026.
Verantwortlich i.S.d. § 18 MStV: siehe Impressum.
Fehler entdeckt oder ergÀnzende Erfahrung? korrektur@smarthomepraxis.de
Smart-Home-Tipps direkt ins Postfach
Neue Anleitungen, Vergleiche und Praxis-Tipps â kein Spam, jederzeit abbestellbar.
đ Gratis dazu: Smart-Home-Starter-Guide (PDF)
Das könnte dich auch interessieren
Presence Detection: Wer ist zuhause? Die besten Methoden
ZuverlĂ€ssige Anwesenheitserkennung ist die Basis fĂŒr smarte Automationen. Von Geofencing ĂŒber Router-Tracking bis mmWave-Sensoren: Alle Methoden im Vergleich mit Praxis-Tipps fĂŒr Home Assistant.
Home Assistant Automationen debuggen: Traces, Logs und Fehlersuche
Deine Automation löst nicht aus? Oder sie triggert, aber nichts passiert? Mit Traces, Logs und den Entwicklerwerkzeugen findest du den Fehler in wenigen Minuten. Schritt-fĂŒr-Schritt-Anleitung.
Halloween-Automationen mit Home Assistant: Gruselige Effekte selber bauen
Bewegungsgesteuerte Grusel-Sounds, LED-Blitzeffekte, Nebelmaschine per Automation und TĂŒrklingel-Schreckmoment: So machst du dein Smart Home Halloween-ready.