FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Bjoernar am 02 Juni 2021, 10:23:52

Titel: Alter des Readings überwachen
Beitrag von: Bjoernar am 02 Juni 2021, 10:23:52
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
Titel: Antw:Alter des Readings überwachen
Beitrag von: Amenophis86 am 02 Juni 2021, 11:00:15
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
Titel: Antw:Alter des Readings überwachen
Beitrag 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

Titel: Antw:Alter des Readings überwachen
Beitrag von: Bjoernar am 02 Juni 2021, 13:12:00
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
Titel: Antw:Alter des Readings überwachen
Beitrag von: roedert am 02 Juni 2021, 13:14:34
Das SAME (also device:reading.*) setzt den Watchdog-Timer wieder auf 0 wenn es kommt.
Titel: Antw:Alter des Readings überwachen
Beitrag von: Bjoernar am 02 Juni 2021, 13:20:12
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.
Titel: Antw:Alter des Readings überwachen
Beitrag von: roedert am 02 Juni 2021, 13:23:33
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