Irgendwie stehe ich auf dem Schlauch. Ich würde gerne eine Automation triggern falls ein sensor in 24h nicht angewachsen ist (hier in dem Fall ein Verbrauchszähler).
Wie geht das denn, ohne größere Verrenkungen zu programmieren ?
Irgendwie stehe ich auf dem Schlauch. Ich würde gerne eine Automation triggern falls ein sensor in 24h nicht angewachsen ist (hier in dem Fall ein Verbrauchszähler).
Wie geht das denn, ohne größere Verrenkungen zu programmieren ?
Du könntest last_changed abfragen, wenn dir das reicht
trigger:
- platform: template
value_template: "{{ now() - states.sensor.xyz.last_changed >= timedelta (hours=24) }}"
Hallo,
einfach als Auslöser den Zustand nehmen (nicht numerischer Zustand) und im Feld ‘für’ 24 Stunden eintragen. Das bedeutet wenn sich der Status deiner Entität für 24 Stunden nicht ändert die Automation ausgelöst wird.
Cool danke erstmal für die Tipps.
Also du meinst einfach (etwa) so:
klingt zu einfach und genial um wahr zu sein - muss ich mal probieren.
Klappt vermutlich nicht für den initialen wert, oder? (also wenn ich die Automatisierung das erste mal starte)
Und bei HA Neustarts ? (Ich vermute die Zeit wird zurückgesetzt, und der trigger läuft nicht noch mal los)
Hi @sirector
Das geht so leider nicht, da der trigger nur ausgewertet wird, wenn eine der Entitäten ihren Zustand ändert.
(Die Bedingung ist also quasi nie erfüllt, da zur Auswertung xyz.last_changed immer = now() ist )
Man könnte eventuell eine regelmäßigen Automation (also alle 30min) machen. platform: time_pattern
und dann in conditions den test von dir …
Aber dann bekommt man so eine Nachricht ja alle 30min …
(Was macht last_changed bei einem Neustart?)
Warum genau soll das nicht funktionieren? Getriggert wird, wenn die Prüfung WAHR ist.
Kopier dir mal
{{ now() - states.sensor.xyz.last_changed >= timedelta (hours=24) }}
unter Entwicklerwerkzeuge - Vorlage und schaue was ausgegeben wird.
Das war doch deine Anforderung, oder habe ich etwas falsch verstanden?
Habe ich gemacht wie gesagt die Bedingung klappt ja auch. Aber der trigger / die Automation läuft nicht an, da ein template trigger nur ausgewertet wird wenn sich eine Entität in diesem template ändert!!!
D.h. wenn sich nix ändert läuft der trigger nie an, wenn sich xyz ändert wird er ausgewertet, aber nicht getriggert (da dann xyz.last_changed immer = now() )
Getestet:
Ich verstehe es wirklich nicht. Der Trigger löst aus, sobald sich der Status von FALSCH/FALSE auf WAHR/TRUE ändert. So steht es ja auch in deinem Screenshot.
Das Problem ist (sehe ich gerade), dass deine Ausgabe bereits WAHR ist und somit nicht mehr umspringt. Die letzte Änderung ist also schon länger als 2 Std. her. Ein Trigger triggert nur in dem Moment, wo dieser sich ändert. Also nicht vorher und auch nicht nachher.
Wenn der Zustand des input_number sich noch mal ändert, springt die Ausgabe auf FALSE. Dann kannst du warten bis es TRUE wird und getriggert wird. Zum Testen kannst du auch (minutes=5) nehmen anstatt (hours=2).
Du kannst mir glauben, ich habe das natürlich schon vorher gemacht bevor die Stunde um war.
Der trigger löst nie aus!
Wie du sagst ein template Trigger triggert wenn er wahr ist / wird. Aber ausgewertet / berechnet / upgedatet (nenn es wie du willst) ob das Template war oder falsch ist, wird das template nur (genau zu dem Zeitpunkt) wenn sich eine Entität da drin ändert.
Dein Beispiel würde nur funktionieren wenn der Wert des template ständig upgedatet / ausgewertet würde.
Ich glaube dann bin ich raus. Ich verstehe dich nicht wirklich.
Deine Abfrage ergibt jetzt false. Warte 2 Std. bis sie wahr wird, sofern sich die Entität nicht mehr ändert. Dann wird getriggert.
Edit:
Auf false springt die Ausgabe nur, wenn sich etwas ändert. Das ist richtig. Wenn sich nichts ändert, springt er aber automatisch auf wahr und das willst du doch wissen: Hat sich 2h nichts geändert"?
Moin Sirector, du hast recht es wird geschaltet. Danke für deine Hilfe.
Meine Versuche hatten nicht geklappt weil bei einem HA Neustart xxx.last_changed
aktualisiert wird. Das kommt bei mir als Neuling der gerade verschiedene Integrationen & Erweiterungen probiert öfter vor. Mit kürzeren Zeitspanne für den Test hats dann geklappt.
Das tut dem Anwendungsfall (Überwachung Solaranlage) den ich gerade habe aber keinen Abbruch, das geht auch wenn die Zeit bei jedem HA Neustart frisch beginnt.
Hier ist die last_changed Version übrigens besser, er steht ja nach jedem Neustart erstmal auf false, und wechselt dann nach der Zeitspanne. Das andere Beispiel mit “state tigger for 24h”, würde erst wieder anlaufen wenn dieser nach dem Neustart den state ändert. ( so mein Verständnis bisher )
Übrigens bin ich bei meiner Suche und Nachlesen warum der Tigger vermeintlich nicht so tut wie gewünscht auf eine Lösung gestoßen die Quasi in der Dokumentation steht:
Man findet dort bei trigger:
now() + x
setzt:
automation:
- trigger:
- platform: state
entity_id: binary_sensor.motion
to: "on"
action:
- service: climate.turn_on
target:
entity_id: climate.office
- service: input_datetime.set_datetime
target:
entity_id: input_datetime.turn_off_ac
data:
datetime: >
{{ (now().timestamp() + 2*60*60)
| timestamp_custom('%Y-%m-%d %H:%M:%S') }}
- trigger:
- platform: time
at: input_datetime.turn_off_ac
action:
- service: climate.turn_off
target:
entity_id: climate.office
Aber wie gesagt - für mein fall reicht das einfache last_changed liegt vor now-24h
Danke noch mal