Moin zusammen,
ich stehe gerade auf dem Schlauch und glaube, dass ich zu kompliziert denke…
Also…Ich schalte im Badezimmer direkt an der Tür das Licht u.a. für die Dusche ein und aus. Weiterhin gibt es bei der Dusche noch einen Taster, wo ich das auch machen kann - klassische Wechselschaltung eben.
Nun ist es aber so, dass trotzdem öfters vergessen wird, das Licht in der Dusche auszuschalten. Dieses soll, wenn nicht über Taster manuell, nach 45 Minuten ausschalten. Den Timer möchte ich auf dem Dashboard mit anzeigen lassen.
Ich habe einen Timer-Helfer erstellt, den ich beim Einschalten starte und beim ausschalten beende. Soweit so gut. Allerdings passiert dann natürlich nichts. Was kann ich machen, damit das Licht am Ende des Timers erlischt? Muss ich zusätzlich zum Timer noch eine Verzögerung einbauen? Da die beiden Taster im Badezimmer unterschiedliche Automationen sind, würde die Verzögerung ja nur für den ersten Taster gelten, der diese aktiviert hat.
Oder mache ich einen Gedankenfehler und denke zu kompliziert?
Wenn Du es so machst, kannst Du Dir den Timer als Entity auf das Dashboard legen:
trigger:
- platform: state
entity_id:
- light.licht_bad
to: "on"
condition: []
action:
- service: timer.start
data: {}
target:
entity_id: timer.dein_timer
- wait_for_trigger:
- platform: state
entity_id:
- timer.dein_timer
to: idle
- service: light.turn_off
data: {}
target:
entity_id: light.licht_bad
mode: restart
Und damit überlebt das Ganze auch einen Restart von Home Assistant (der Timer muss auf “Wiederherstellen” gesetzt sein), außerdem wird der Timer beim manuellen Ausschalten des Lichts zurückgesetzt, damit er auf dem Dashboard nicht weiterläuft:
alias: Badlicht aus durch Timer
description: ""
trigger:
- platform: state
entity_id:
- light.licht_bad
to: "on"
id: Licht an
- platform: state
entity_id:
- timer.dein_timer
to: idle
id: Timer aus
- platform: state
entity_id:
- light.licht_bad
to: "off"
id: Licht aus
condition: []
action:
- if:
- condition: trigger
id:
- Licht an
then:
- service: timer.start
data: {}
target:
entity_id: timer.dein_timer
- if:
- condition: trigger
id:
- Timer aus
then:
- service: light.turn_off
data: {}
target:
entity_id: light.licht_bad
- if:
- condition: trigger
id:
- Licht aus
then:
- service: timer.finish
data: {}
target:
entity_id: timer.dein_timer
mode: restart
Ich hänge mich hier kurz dran:
Ist dieser YAML-Code ein Befehl dafür, dass nach einer bestimmten Zeit ein Zustand wieder beendet werden kann?
Was mich bei Automationen ja immer etwas wundert ist, dass ich in der Frontendansicht beim Trigger immer eine Zeitdauer eingeben kann, bei der “Dann-Option” Zeit bzw. eine Zeitdauer nicht bequem als Option hinzugefügt werden kann. Wenn ich es richtig verstehe, dann muss ich eben Kenntnisse in YAML haben und den Code entsprechend angeben oder muss mich umständlich mit “Helfern” oder aber einen zweiten Automation mit einem “Antiauslöser” behelfen. Da versuche ich die HA-Logik noch besser zu ergründen.