Alter des Readings überwachen

Begonnen von Bjoernar, 02 Juni 2021, 10:23:52

Vorheriges Thema - Nächstes Thema

Bjoernar

Hallo,

ich überwache mit doif das alter eines Readings um zu reagieren wenn keine Daten mehr kommen:

   
([device:reading:sec] < 30) (set keine_Daten 0)
DOELSE (set keine_Daten 1)


Funktioniert grundsätzlich auch, nur wird das doif natürlich nicht getriggert wenn keine Daten kommen und setzt dann natürlich auch nicht den Wert.

Muss ich das doif dann zyklisch mit einem AT triggern oder gibt es eine bessere Lösung?

Danke und Gruß
Björnar

Amenophis86

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

roedert

Eigentlich ist für sowas ein Watchdog perfekt:

defmod Watchdogname watchdog device:reading.* 00:01:00 SAME set keine_Daten 1

Wenn 1 Minute lang keine Daten kommen, wird ausgelöst


Bjoernar

Wie kommt der Wert dann wieder auf 0?

Zitat von: roedert am 02 Juni 2021, 13:04:15
Eigentlich ist für sowas ein Watchdog perfekt:

defmod Watchdogname watchdog device:reading.* 00:01:00 SAME set keine_Daten 1

Wenn 1 Minute lang keine Daten kommen, wird ausgelöst

roedert

Das SAME (also device:reading.*) setzt den Watchdog-Timer wieder auf 0 wenn es kommt.

Bjoernar

Ich meine "keine_Daten = 0"
Muss den Wert ja wieder zurückstellen.

Mach es jetzt mit einem doif und der Prüfung alle 5 min.
Ist vermutlich die einfachste Lösung.

([+00:05] and [device:reading:sec] > 180) (set keine_Daten 1)
DOELSE (set keine_Daten 0)


Zitat von: roedert am 02 Juni 2021, 13:14:34
Das SAME (also device:reading.*) setzt den Watchdog-Timer wieder auf 0 wenn es kommt.

roedert

Achso, jetzt hab ich die Frage verstanden, "keine_Daten" wird hier nicht wieder auf 0 gesetzt.
Ich habe das bei mir über ein Userreading im Device gelöst:


attr Werkstatt.Katzenklappe userReadings presence:heartbeat:.* {"present"}

defmod Werkstatt.Katzenklappe_wd watchdog Werkstatt.Katzenklappe:heartbeat.* 00:05:00 SAME setreading Werkstatt.Katzenklappe presence absent;; set TelegramBot msg Heartbeat Katzenklappe missing!


presence würde hier dem "keine_Daten" entsprechen, wenn 5 Minuten kein heartbeat kommt, wird es vom Watchdog auf absent gesetzt, wenn wieder Daten kommen, wird es vom userreading-attribut wieder auf present gesetzt