Mit einem Timer kann man in Home Assistant Automatisierungen noch benutzerfreundlicher machen. Anwendungsmöglichkeiten gibt es viele. Der typische Einschlaf-Timer, der z.B. nach 15 Minuten eine WLAN-Steckdose ausschaltet ist ebenso möglich, wie ein Timer, der nach einer bestimmten Zeit eine eingeschaltete Nachttischlampe ausschaltet. Genau dieses Beispiel zeige ich hier.
Inhaltsverzeichnis
1. Timer einrichten
Zuerst muss der Timer eingerichtet werden. Dies geht in der configuration.yaml. Wie man auf diese Datei zugreift, zeige ich hier. Ich habe den Timer „FlurLichtAus“ genannt, weil er genau das regeln soll. Die Dauer des Timers ist zum experimentieren mit 5 Sekunden festgelegt.
Wichtig: Die Benennung „FluLichtAus“ für den Timer funktioniert nicht. Ich habe ziemlich lange romprobiert, bis ich den Fehler gefunden habe. „flurlichtaus“ muss es heissen – das funktioniert.
# Timer erstellen
timer:
flurlichtaus:
duration: '00:00:05'
2. Automatisierung erstellen
Die Automatisierung soll folgendes tun: Das Licht im Flur wird durch Bewegung eingeschaltet – es handelt sich um einen Kronleuchter. Wenn keine Bewegung mehr registriert wird, soll das Licht erst nach 5 Minuten ausgeschaltet werden.
Zuerst brauchen wir eine Automation, die den Timer startet. Hier ist es der Xiaomi Bewegungssensor. Wenn er eine Bewegung erkennt, springt der Zustand auf „on“. Das führt dann dazu, dass die Automatisierung auslöst und den Timer „flurlichtaus“ startet. Ebenfalls soll natürlich das Licht eingeschaltet werden. Hier ein Kronleuchter mit 5 Philips Zhirui LED, die als group.kronleuchter zusammengefasst sind.
alias: flurlichtausTimerStart
trigger:
- entity_id: binary_sensor.xiaomibewegung
platform: state
to: 'on'
action:
- data:
brightness: 255
color_temp: 304
entity_id: group.kronleuchter
service: light.turn_on
- entity_id: timer.flurlichtaus
service: timer.start
Als nächstes muss nur noch erkannt werden, wenn der Timer abgelaufen ist. Auch löst man mit einer Automatisierung. Auslöser ist in diesem Fall das Event timer.finished – also der Ablauf des Timers. Dann soll der Kronleuchter wieder ausgeschaltet werden.
alias: flurlichtausTimerAbgelaufen
trigger:
- event_data:
entity_id: timer.flurlichtaus
event_type: timer.finished
platform: event
action:
- alias: ''
entity_id: group.kronleuchter
service: light.turn_off
3. Alternative für einen Timer
Je nachdem, was genau man umsetzen möchte, gibt es auch eine deutlich einfachere Alternative. Hier wird eine Automatisierung eingerichtet, die den Kronleuchter ausschaltet, sobald keine Bewegung mehr erkannt wird. Da dies aber eben häufig zu schnell geht, wird beim Auslöser eine Verzögerung eingebaut. Der Auslöser löst in diesem Fall erst aus, nachdem keine Bewegung mehr erkannt wird UND 5 Minuten vergangen sind.
- id: '1122334455011'
alias: KronleuchterAUSBew
trigger:
- entity_id: binary_sensor.xiaomibewegung
for: 0:05:00
platform: state
to: 'off'
condition: []
action:
- entity_id: group.kronleuchter
service: light.turn_off
4. Eingabefelder anlegen
Wenn man die Verzögerung ändern möchte, dann muss man dies aktuell durch eine Änderung in Automatisierung tun und dort den Wert an die gewünschte Dauer anpassen. Das ist zwar nicht sonderlich kompliziert, aber für einige Anwendungen ist es möglicherweise komfortabler, den Wert direkt im User Interface anzupassen. Das ist ebenfalls möglich.
Dazu werden in der configuration.yaml zwei Eingabefelder erstellt, da am Tag und in der Nacht das Licht im Flur unterschiedlich lang bei Bewegung eingeschaltet bleiben soll.
# Eingabefelder
input_number:
delaytag:
name: Verzögerung Tag
initial: 5
min: 0
max: 30
step: 1
delaynacht:
name: Verzögerung Nacht
initial: 5
min: 0
max: 30
step: 1
5. Eingabefelder in Lovelace anzeigen
Jetzt müssen die Eingabefelder in Lovelace angezeigt werden. Das sieht dann bei mir so aus:
Im RAW-Editor sieht die Karte wie folgt aus:
title: Haus
views:
- badges: []
cards:
- entities:
- entity: group.kronleuchter
- entity: input_number.delaytag
- entity: input_number.delaynacht
show_header_toggle: false
title: Licht Flur
type: entities
5. Eingabewert in die Automatisierung einbauen
Ich habe für Tag und Nacht zwei unterschiedliche Automatisierungen angelegt. Ich benutze die unter Punkt 3 gezeigte Alternative für einen Timer. Jetzt verzögert die LED im Flur beim Ausschalten um den jeweils im User Interface eingestellten Wert. In der Datei Automation.yaml sieht die Automatisierung dann so aus:
- id: '1122334455011'
alias: KronleuchterAUSBewTag
description: ''
trigger:
- entity_id: binary_sensor.xiaomibewegung1_2
for: 0:{{ states('input_number.delaytag') | int(0) }}:00
platform: state
to: 'off'
condition:
- after: '7:00'
before: '21:00'
condition: time
action:
- entity_id: group.kronleuchter
service: light.turn_off
- id: '1122334455012'
alias: KronleuchterAUSBewNacht
description: ''
trigger:
- entity_id: binary_sensor.xiaomibewegung1_2
for: 0:{{ states('input_number.delaynacht') | int(0) }}:00
platform: state
to: 'off'
condition:
- after: '21:00'
before: '7:00'
condition: time
action:
- entity_id: group.kronleuchter
service: light.turn_off
6. neues Icon
Zum Schluss habe ich mich noch am dem Standard Icon gestört. Mir gefällt ein Timer besser. Das lässt sich ebenfalls unkompliziert über die configuration.yaml lösen. Eine Codezeile ist zu ergänzen.
# Eingabefelder
input_number:
delaytag:
name: Verzögerung Tag
initial: 5
min: 0
max: 30
step: 1
icon: mdi:timer
Natürlich geht das auch über das User Interface. Dort können im Menü „Einstellungen“ und dann unter „Anpassungen“ die Anpassungen der Entität „Verzögerung Nacht“ geändert werden. Tatsächlich werden diese dann in die Datei customize.yaml geschrieben.
4 Antworten
Servus, eine sehr interessante möglichkeit seine Lichter anzupassen.
Was mir fehlt, wäre wie in HUE dieses stufenweise langsame ausschalten.
Kennst Du das? Das Licht schaltet nicht schlagartig aus sondern dimmt zuvor was weiß ich 5 Sekunden zuvor um die hälfte runter dann schaltet es fließend aus.
Das müsste doch auch irgendwie zu lösen sein oder?
MfG Robert
Gute Idee. Habe das immer mit einem delay gemacht. Bei deiner Art des zeitlichen Nachlaufs kann ich die Zeit variabel machen.
Gibt es auch die Möglichkeit die „Restlaufzeit“ aus zu geben?
Moin,
geht ganz einfach, den Service ‚Light.off‘ mit dem Parameter ‚transition: {dauer}‘ füttern, dann wird das Licht über die Dauer langsam runter gedimmt. Geht auch beim einschalten.
Hallo,
kann es sein das es mit der aktuellen Version so nicht mehr funktioniert da es scheinbar nur noch feste Zeitwerte eingetragen werden können?
Auch wenn ich die Werte in der Yaml eintrage kann ich zwar speichern beim nächsten öffnen sind die Werte aber nicht mehr vorhanden.