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
Schau mal hier: https://forum.fhem.de/index.php/topic,49408.0.html oder hier: https://forum.fhem.de/index.php/topic,83857.0.html
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
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
Das SAME (also device:reading.*) setzt den Watchdog-Timer wieder auf 0 wenn es kommt.
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.
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