Abfragen, wie lang ein Reading schon den jetzigen Status hat ?

Begonnen von gadget, 06 Februar 2024, 18:30:28

Vorheriges Thema - Nächstes Thema

rabehd

Zitat von: gadget am 06 Februar 2024, 18:30:28der zugehörige Sensor pollt den aktuellen Zustand alle 5 Minuten und aktualisiert den Timestamp des Readings.
Warum tut der Sensor das?
Welchen Wert hat den der Timestamp der letzten Abfrage für Dich?
Warum nicht der Timestamp der letzten Änderung?

Die Lösung ist immer so gut wie die Problembeschreibung.
Auch funktionierende Lösungen kann man hinterfragen.

Damian

#16
Wenn du beim Sensor "event-on-change-reading state" setzt, werden schon mal keine Events erzeugt, wenn der Zustand des Status beim Update gleich bleibt.

Damit sich auch der Zeitstempel des Status nicht ändert, musst du zusätzlich "timestamp-on-change-reading state" setzen.

Damit gibt es nur ein Event beim ersten "open" und auch der Zeitstempel bleibt gleich, solange es bei open bleibt, egal wie oft der Sensor "open" aktualisiert (der Status darf natürlich nicht zwischendurch wechseln)

Damit sollten meine beiden DOIF-Vorschläge funktionieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

fz55

Zitat von: gadget am 07 Februar 2024, 19:50:12Ich habe mit  timestamp-on-change-reading keinen Erfolg gehabt. Das entsprechende Reading wird dann überhaupt nicht mehr aktualisiert und zwar unabhängig davon was ich bei event-on-update-reading eintrage. Im DOIF ist dann [?device:reading:sec] immer 0.

event-on-update-reading sollte für das Reading nicht gesetzt werden sondern event-on-change-reading und timestamp-on-change-reading.

gadget

#18
Popcorn muss noch warten. Brauche erst wieder genug PV-Überschuss für den Real-Life Test ....  :)

gadget

Zitat von: fz55 am 07 Februar 2024, 22:58:23
Zitat von: gadget am 07 Februar 2024, 19:50:12Ich habe mit  timestamp-on-change-reading keinen Erfolg gehabt. Das entsprechende Reading wird dann überhaupt nicht mehr aktualisiert und zwar unabhängig davon was ich bei event-on-update-reading eintrage. Im DOIF ist dann [?device:reading:sec] immer 0.

event-on-update-reading sollte für das Reading nicht gesetzt werden sondern event-on-change-reading und timestamp-on-change-reading.
Sorry, mein Fehler. Hatte event-on-change-reading gesetzt, so wie es in der commandref beschrieben ist. War nur in meinem Post falsch.

gadget

Zitat von: Damian am 07 Februar 2024, 21:42:35Wenn du beim Sensor "event-on-change-reading state" setzt, werden schon mal keine Events erzeugt, wenn der Zustand des Status beim Update gleich bleibt.

Damit sich auch der Zeitstempel des Status nicht ändert, musst du zusätzlich "timestamp-on-change-reading state" setzen.

Damit gibt es nur ein Event beim ersten "open" und auch der Zeitstempel bleibt gleich, solange es bei open bleibt, egal wie oft der Sensor "open" aktualisiert (der Status darf natürlich nicht zwischendurch wechseln)

Damit sollten meine beiden DOIF-Vorschläge funktionieren.

Ja, das ist auch theoretisch alles richtig und wäre mir so am liebsten. In der Praxis hatte ich aber den Effekt, dass dann überhaupt kein Reading mehr Events erzeugt hat (und da gibt es wie gesagt echt viele bei der Wärmepumpe, Garagentor war ja nur Beispiel) und diverse andere Automationen / Grafiken / Überwachungsmechanismen rund um das Gerät nicht mehr funktioniert haben. Ich werde berichten, was dann letztendlich am besten funktiojiert hat wenn ich wieder genug PV-Überschuss habe für die Wärmepumpe. Mein Favorit ist aber derzeit der HourCounter.

gadget

Fazit nach einer Woche: Sowohl die Variante mit watchdog als auch der HourCounter funktionieren. Habe mich jetzt für den HC entschieden. Setze den Thread auf "gelöst". Danke an alle Beteiligten !