Es gibt so einige Anwendungen, da wird man gerne dazu verleitet mit Verzögerungen zu arbeiten.
Diese haben leider einen großen Nachteil. Sollte während die Automatisierung noch dabei ist die Verzögerung abzuarbeiten Home Assistant aus welchem Grund auch immer neu gestartet werden, dann bricht die Automatisierung ab!
Ein Beispiel wäre z.B. Ein Gerät / Licht einzuschalten und nach 30 Minuten wieder ausschalten.
Wie man es nicht machen sollte, also unter Verwendung einer Verzögerung:
description: ""
mode: single
triggers:
- trigger: state
entity_id:
- switch.xyz
from: "off"
to: "on"
conditions: []
actions:
- delay:
hours: 0
minutes: 30
seconds: 0
milliseconds: 0
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.xyz
Mit Verwendung eines Timers (Helfer)
Der Auslöser Switch wird eingeschaltet startet einen 30 minütigen Timer.
Nach Ablauf des Timers wird der Switch ausgeschaltet. Damit der Timer einen Home Assistant Neustart überlebt, müsst Ihr die Option Wiederherstellen aktivieren.
Bedeutet dann, dass nach einem Neustart der Timer weiter läuft und auch das Ausschalten nach Ablauf auslösen kann. Sollte Home Assistant vor Ablauf des Timer ausfallen und erst nach Ablauf des Timers wieder online sein, wird die Automatisierung auch ausgeführt, auch wenn verspätet. Denn nach einem Neustart von Home Assistant der Zustand des Timers von unavailable
zu idle
wechselt.
description: ""
triggers:
- trigger: state
entity_id:
- timer.xyz
to: idle
id: ausschalten
- trigger: state
entity_id:
- switch.xyz
from: "off"
to: "on"
id: einschalten
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- einschalten
sequence:
- action: timer.start
metadata: {}
data:
duration: "00:30:00"
target:
entity_id: timer.xyz
- conditions:
- condition: trigger
id:
- ausschalten
sequence:
- action: switch.turn_off
metadata: {}
data: {}
target:
entity_id: switch.xyz
mode: single
Warten auf Auslöser ist ebenfalls eine Verzögerung die Ihr vermeiden solltet, wenn es möglich ist.
Wie mann es nicht machen sollte:
description: ""
mode: restart
triggers:
- trigger: state
entity_id:
- binary_sensor.motion
from: "off"
to: "on"
conditions: []
actions:
- action: light.turn_on
target:
entity_id: light.licht
data: {}
- wait_for_trigger:
- trigger: state
entity_id:
- binary_sensor.motion
from: "on"
to: "off"
for:
hours: 0
minutes: 5
seconds: 0
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.licht
Statt dessen sollten die Auslöser Bewegung an und Bewegung aus für 5 min verwendet werden.
Zusätzlich kann man auch den Zustand Licht in an für 10 min als Auslöser verwenden. Um sicherzustellen, das wenn das Licht mal nicht über den BM eingeschaltet wurde, das Licht auch ohne Bewegung nach 10 Minuten ausgeschaltet wird.
description: ""
mode: restart
triggers:
- trigger: state
entity_id:
- binary_sensor.motion
from: "off"
to: "on"
id: einschalten
- trigger: state
entity_id:
- binary_sensor.motion
from: "on"
to: "off"
id: ausschalten
for:
hours: 0
minutes: 5
seconds: 0
- trigger: state
entity_id:
- light.licht
to: "on"
for:
hours: 0
minutes: 10
seconds: 0
id: ausschalten
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- einschalten
sequence:
- action: light.turn_on
metadata: {}
data: {}
target:
entity_id: light.licht
- conditions:
- condition: trigger
id:
- ausschalten
- condition: state
entity_id: binary_sensor.motion
for:
hours: 0
minutes: 5
seconds: 0
state: "off"
sequence:
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.licht
Warten will ja bekanntlich keiner, also muten wir es der Automatisierung auch nicht zu.
Gruß
Osorkon