Hallo Zusammen,
ich probiere jetzt schon einige Zeit eine Automation zu erstellen, welche im Auslöser per Template auslöst, wenn es X-Minuten vor einem eingestellten Wecker (Helper) ist.
Hier mein Code:
{{ now().timestamp() | timestamp_custom('%H:%M:%S') ==
(( state_attr('input_datetime.waketime_1', 'timestamp')) - 1800) | timestamp_custom('%H:%M:%S', false) and state('input_boolean.wakestatus_1') == 'on' }}
Jetzt wollte ich das noch austesten und habe folgendes im Entwicklertool ausprobiert:
{% set uhrzeit = '05:50:00' %}
{{ uhrzeit ==
(( state_attr('input_datetime.waketime_1', 'timestamp')) - 1800) | timestamp_custom('%H:%M:%S', false) and state('input_boolean.wakestatus_1') == 'on' }}
Mein input_datetime.waketime_1 steht auf 06:20:00 somit ist das ninus die 30 Minuten auch 05:50:00
Aber im Entwicklerwerkzeug bekomme ich mit dem Testcode diesen Fehler:
‘state’ is undefined
Wenn ich oben das set uhrzeit = auf z. B. 05:49:00 setze kommt keiner Fehler und er gibt mir was ja logisch ist false aus.
Was mache ich denn da falsch.
totow
29. Juli 2024 um 16:51
2
Moin,
ich habe mir für mein Handywecker einfach eine Atomation erstellt die bei Änderung gleich die andere Zeit in einen Helfer schreibt.
alias: Handy Wecker setzen.
description: ""
trigger:
- platform: state
entity_id:
- sensor.op7_next_alarm
condition: []
action:
- service: input_datetime.set_datetime
data:
timestamp: >
{{ ( state_attr('sensor.op7_next_alarm','Time in Milliseconds') / 1000 )
- 1800 }}
target:
entity_id: input_datetime.wercker_handy_op7
mode: single
vielleicht hilft dir das, funktioniert seit Monaten wen nicht sogar Jahren ohne Probleme.
LG
Tobi
Wird bei mir etwas schwierig, da es bei mir in der Familie mehrere Wecker gibt. Da müssste ich ja dann. noch prüfen ob der zu setzende Wecker abzüglich die X Minuten vor dem bereits im Helper ist.
totow
29. Juli 2024 um 16:58
4
Kannst doch auch mit einem 2. Helper arbeiten.
Den einen hast du in der UI wo du die Zeit einstellst.
Den andern passt du ähnlich meiner Automation gleich an und nutzt den als Auslöser.
LG
maxe
29. Juli 2024 um 17:49
5
Einfach im Auslöser “Wert-Template”
{{ as_timestamp(now(), default=0) >= as_timestamp(states('sensor.maxe_next_alarm'), default=0) - 1800 }}
Der Sensor ist aus der Companion-App auf dem Phone.
Funktioniert irgendwie nicht, da der Ausdruck
{{ as_timestamp(states('input_datetime.waketime_1'), default=0) - 1800 }}
immer den Wert -1800 zurück gibt und das Template somit immer TRUE zurückgibt.
Unter Verwendung eines input_datetime
, funktioniert zum Bsp. dieses Template als Trigger
10 Min (600s) vor input_datetime.waketime_1
{{ as_timestamp(now()) | timestamp_custom('%H:%M') == (as_timestamp(states('input_datetime.waketime_1) | today_at) - 600) | timestamp_custom('%H:%M')}}
Gruß
Osorkon
Also das sieht schon mal gut aus:
{{ as_timestamp(now()) | timestamp_custom('%H:%M') == (as_timestamp(states('input_datetime.waketime_1') | today_at) - 1800) | timestamp_custom('%H:%M') }}
Jetzt ist mir aber gerade noch eingefallen ich muss noch prüfen ob der Wecker überhaupt gestellt ist.
Das wollte ich jetzt mit diesem Code ergänzen:
and state('input_boolean.wakestatus_1') == 'on'
Also der ganze Code sieht dann so aus:
{{ as_timestamp(now()) | timestamp_custom('%H:%M') == (as_timestamp(states('input_datetime.waketime_1') | today_at) - 1800) | timestamp_custom('%H:%M') and state('input_boolean.wakestatus_1') == 'on' }}
Wenn ich diesen Code aber im Entwicklertool ausprobiere und die Weckzeit auf die aktuell Zeit +30 Minuten setze bekomme ich diesen Fehler:
‘state’ is undefined und das Ergebnise false, wäre ja dann aber eigentlich true
Irgendwas mache ich hier noch falsch, aber ich finde den Fehler nicht.
compoundbow83:
‘state’ is undefined
es muss ja auch states
lauten, da is ein s
zu wenig.
Du kannst die Bedingung input_boolean.wakestatus_1 == ON
auch ganz normal als Bedingung in der Automatisierung verwenden.
condition:
- condition: state
entity_id: input_boolean.wakestatus_1
state: "on"
Gruß
Osorkon
ohman wie blöd nur das S vergessen und nicht gesehen.
Dankeschön.
Ja mit der Bedingung wär natürlich auch gegangen, bei mir aber nicht. Ich habe mehrere Wecker (mehrere Personen) und da muss ich dann immer den passenden Wecker zur Zeit prüfen.
Aber damit klappt es glaube ich jetzt:
{{ as_timestamp(now()) | timestamp_custom('%H:%M') == (as_timestamp(states('input_datetime.waketime_1') | today_at) - 1800) | timestamp_custom('%H:%M') and states('input_boolean.wakestatus_1') == 'on' }}