Hallo zusammen,
ich weiß nicht ob der Themen-Titel tatsächlich beschreibt, was ich suche…
Also: ich habe eine Automation, die jedes Mal, wenn etwas passiert, ein Script triggert. Also z.B. Fenster geht auf – Script auslösen. Jemand kommt nach Hause – Script auslösen. Und dann gibt es einen Trigger alle 15 Minuten – Script auslösen.
Kann man den “alle-15-Minuten-Trigger” durch das Auslösen der anderen Trigger auch zurücksetzen?
Ich meine, 13 Minuten vom 15-Minuten-Timer sind rum, ein Fenster geht auf, das Script wird ausgelöst, zwei Minuten später sind die 15 Minuten rum und das Script läuft wieder.
Ich hoffe ich habe einigermaßen rüberbringen können was ich suche…
Das geht über Timer-Helfer (siehe Timer - Home Assistant). Du könntest deinen 15 Minuten Trigger durch einen Timer ersetzen, den du nach Belieben steuern kannst. Über Einstellungen=>Geräte&Dienste=>Helfer einen Timer-Helfer erstellen (Laufzeit kann dabei angegeben werden).
Im Automationsbereich „Trigger“ kannst du auf die verschiedenen Timer-Events reagieren, z.B.
triggers:
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.timer_kueche_ttuer_licht
id: Timer_Kueche_TT_Finished
- trigger: event
event_type: timer.cancelled
event_data:
entity_id: timer.timer_kueche_ttuer_licht
id: Timer_Kueche_TT_Cancelled
enabled: false
.
.
.
man kann auf die verschiedene Events (timer.cancelled , timer.finished, timer.started, timer.restarted, timer.paused ) reagieren und die States auswerten (idle, active, paused). Wenn der Timer läuft, dann ist der State=active.
Beispiel:
- if:
- condition: and
conditions:
- condition: state
entity_id: timer.timer_kueche_ttuer_licht
state: active
- condition: state
entity_id: input_boolean.kueche_auto_licht_ttuer
state: "on"
then:
- action: timer.cancel
metadata: {}
data: {}
target:
entity_id: timer.timer_kueche_ttuer_licht
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.kuechenstation_neopixel_ws2812b_60_kueche
Man kann den Timer innerhalb der Automation stoppen, starten und auch eine neue Zeit vorgeben, z.B.
- action: timer.start
data:
duration: "20"
target:
entity_id: timer.timer_kueche_ttuer_licht
Okay, Danke!
Vermutlich hab ich nur die Hälfte verstanden, wenn überhaupt.
In deinem Beispiel hast du einen Timer “Küche Tür Licht”, den du ausschaltest, wenn das “Küche Auto Licht” an ist. Soweit richtig?
Die Beispiele sollten nur die Verwendung eines Timers (timer.timer_kueche_ttuer_licht) zeigen. Es sind Bruchstücke einer größeren Automation mit Bewegungsmelder, Helligkeitssensor, Türsensor…
“input_boolean.kueche_auto_licht_ttuer” ist hier nur ein Helfer-Schalter, der über die Oberfläche gesetzt wird und die gesamte Automation ein- bzw. ausschaltet.
Das Ganze beginnt so:
alias: Kueche_Auto_Licht_TTuer
triggers:
- trigger: state
entity_id:
- binary_sensor.tuer_geschlossen
from: "off"
to: "on"
id: Kuechentuer_geoeffnet
- trigger: state
entity_id:
- binary_sensor.kuechenstation_bewegungsmelder
to: "on"
id: Motion_Erkannt_Kueche
- trigger: event
event_type: timer.finished
event_data:
entity_id: timer.timer_kueche_ttuer_licht
id: Timer_Kueche_TT_Finished
.
.
.
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- Kuechentuer_geoeffnet
sequence:
- if:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.kueche_auto_licht_ttuer
state: "on"
- condition: numeric_state
entity_id: sensor.kuechenstation_kueche_helligkeit
below: 0.04
then:
- action: light.turn_on
metadata: {}
data:
rgb_color:
- 255
- 255
- 255
brightness_pct: 50
target:
entity_id: light.kuechenstation_neopixel_ws2812b_60_kueche
- action: timer.start
data:
duration: "30"
target:
entity_id: timer.timer_kueche_ttuer_licht
- conditions:
- condition: trigger
id:
- Motion_Erkannt_Kueche
sequence:
.
.
.
Begriffen.
Ein Timer ist eine Entität, die beim Timerablauf ihren Zustand zu “idle” ändert, dies löst das Skript aus und anschließend wird er (durch einen Trigger) neu gestartet.
Kommt etwas dazwischen, weil sich eine andere Entität ändert, löst dies den Restart des Timers aus.
Du hast mir geholfen, Danke!