Timer einrichten und Licht steuern

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.

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

  1. 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

  2. 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?

  3. 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.

  4. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert