Moin zusammen,
bin relativ neu auf HA (15 Jahre FHEM) und probiere jetzt schon seit ein paar Tagen mit dem Helfer und Automationen herum. Und eine Sache klappt nicht.
Ich möchte eine Aktion ausführen (Weihnachtsbeleuchtung), die abhängig vom Sonnenuntergang ist, aber dies nur in einem festen Zeitfenster. Beispiel: 15:45 bis 16:30 Uhr, wenn der Sonnenuntergang vor 15:45 ist, soll die Aktion um 15:45 auslösen, wenn er nach 16:30 Uhr ist, um 16:30 Uhr.
Zuerst hatte ich es nur mit einer Automation versucht, die hat aber nie ausgelöst.
Folgender YAML-Code:
alias: Weihnachtsbeleuchtung_abends_on
description: >-
Schaltet Licht ein, zum Sonnenuntergang, aber frühestens um 15:45 und
spätestens um 16:30
triggers:
- at: >
{% set setting_dt = state_attr('sun.sun', 'next_setting') |
as_datetime | as_local %}
{% set adjusted_setting_dt = setting_dt - timedelta(seconds=606) %}
{% set adjusted_setting = adjusted_setting_dt.time() %}
{% set result_time = ([today_at('15:45').time(), adjusted_setting, today_at('16:30').time()] | sort)[1] %}
{{ result_time.strftime("%H:%M:%S") }}
trigger: time
conditions: []
actions:
- type: turn_on
device_id: xxxx-1
entity_id: xxxx-2
domain: switch
mode: single
Wenn ich den Template-Code (hinter dem at:) im Entwicklerwerkzeug/Template eingebe, erhalte ich dort als Ergebnis “15:51:04”. Das sieht für mich zunächst plausibel aus.
Ausgelöst, wird aber trotzdem nicht.
Danach habe ich es mit einem Helfer und einer Automation probiert. Geht auch nicht.
Den Helfer lege ich an mit “+ Helfer erstellen” → “Template” → “Sensor” und dort bei Zustand gebe ich den Code ein:
{% set sun_setting = state_attr('sun.sun', 'next_setting') | default(now().strftime("%Y-%m-%dT17:00:00+00:00")) %}
{% set setting_dt = sun_setting | as_datetime | as_local %}
{# Verschiebung um -606 Sekunden (ca. -10 Minuten) #}
{% set adjusted_setting_dt = setting_dt - timedelta(seconds=606) %}
{% set adjusted_setting = adjusted_setting_dt.time() %}
{# Logik zur Begrenzung auf 15:45:00 / 16:30:00 #}
{% set result_time = ([today_at('15:45:00').time(), adjusted_setting, today_at('16:30:00').time()] | sort)[1] %}
{{ result_time.strftime("%H:%M:%S") }}
Auch hier wird der Zustand korrekt berechnet (“15:51:04”), sehe ich in der Vorschau, ohne weitere Maßeinheit oder Geräteklasse. Auch in Entwicklerwerkzeuge/Zustände sehe ich diese Uhrzeit.
Dazu habe ich mir eine Automation angelegt:
alias: Weihnachtsstern_abends_on
description: >-
Schaltet Licht ein zur Zeit, die im Sensor berechnet wird (Begrenzung
15:45-16:30).
triggers:
- at: sensor.weihnachtsstern_einschaltzeit
trigger: time
conditions: []
actions:
- type: turn_on
device_id: xxxx-1
entity_id: xxxx-2
domain: switch
mode: single
Funktioniert auch nicht. Auch diese Automation wird nicht ausgelöst.
Ich bin jetzt etwas ratlos. Wo liegt mein Fehler?
Vielen Dank für Eure Mühe!
Axel