Hallo zusammen,
gibts in FHEM ne Möglichkeit zu prüfen, ob ein Device existiert? Ich habe einen (experimentellen) Aussenklimasensor, der an einem ESP8266 hängt der meistens schläft und alle 5 Minuten die Temperatur, Luftfeuchtigkeit und Batteriespannung sendet. Da ich momentan die Batterie leerlaufen lassen will ich alarmiert werden, sobald der ESP 10 Minuten nichts mehr von sich hat hören lassen. Das geht wunderbar damit:
define aussensensorPruefen notify AussenKlima:temperature:.* {\
fhem("defmod aussenSensorWarnung at +00:10 teleBot message Der Aussensensor hat seit 10 Minuten keine Daten mehr gesendet. Bitte Batterie prüfen!");;\
fhem("attr aussenSensorWarnung room Klima");;\
}
Nun gibts manchmal den Fall, dass der ESP kein Netz bekommt und sich wieder schlafen legt, aber nach 15 Minuten wieder sendet. Da würde ich gerne hinterherreichen, dass nun wieder etwas eingetroffen ist. Dies wollte ich so machen, dass ich prüfe, ob aussenSensorWarnung existiert (dieser wird ja gelöscht, wenn er auslöst). Ich hab's mitdefine aussensensorPruefen notify AussenKlima:temperature:.* { if (!defined($defs("aussenSensorWarnung"))){...
probiert, aber das geht nicht, da fhem $defs nicht kennt. Hat jemand eine Idee?
Danke und Gruss, Edi
Es gibt das monitoring Modul (https://fhem.de/commandref.html#monitoring) das im Prinzip genau das macht, was du willst... ist aber vielleicht ein bisschen viel für deinen Zweck...
Ansonsten würde mir spontan einfallen die devspec2array Funktion zu nutzen...
Probiere es mal mit
$defs{"aussenSensorWarnung"}
für die Überwachung existiert "watchdog", genau für den beschriebenen Fall. https://fhem.de/commandref_DE.html#watchdog
Zitat
Nun gibts manchmal den Fall, dass der ESP kein Netz bekommt und sich wieder schlafen legt, aber nach 15 Minuten wieder sendet. Da würde ich gerne hinterherreichen, dass nun wieder etwas eingetroffen ist. Dies wollte ich so machen, dass ich prüfe, ob aussenSensorWarnung existiert (dieser wird ja gelöscht, wenn er auslöst).
Kann man so machen. Man kann aber auch den Intervall auf zb 60min setzen, dann kannst Du sechs Nachrichten verpassen bevor der watchdog auslöst. Batterielaufzeit ist dann x minus 60 min. ...
Hallo zusammen,
herzlichen Dank, das mit $defs{"aussenSensorWarnung"} hat perfekt geklappt. Monitoring schaut mir ein wenig kompliziert aus, aber interessant. Da werde ich mich auf jeden Fall mal einarbeiten! Und den watchdog kannte ich auch noch nicht. Mal schauen, was sich damit anstellen lässt.
Schönen Abend zusammen,
Gruss, Edi
Monitoring ist im Prinzip auch nur ein aufgebohrter, globaler watchdog für eine Gruppe von Geräten.
Können wir dann auf gelöst setzen, oder? (Subject des ersten Posts ändern und [Gelöst] vorne dran schreiben)
Zitat von: KernSani am 15 Januar 2018, 19:41:27
Können wir dann auf gelöst setzen, oder? (Subject des ersten Posts ändern und [Gelöst] vorne dran schreiben)
Aber sicher. Und danke für die Anleitung. Ich habe nach nem Button gesucht :o ::) :P
Zitat von: eiten am 15 Januar 2018, 17:47:49
Hallo zusammen,
herzlichen Dank, das mit $defs{"aussenSensorWarnung"} hat perfekt geklappt. Monitoring schaut mir ein wenig kompliziert aus, aber interessant. Da werde ich mich auf jeden Fall mal einarbeiten! Und den watchdog kannte ich auch noch nicht. Mal schauen, was sich damit anstellen lässt.
Schönen Abend zusammen,
Gruss, Edi
Noch einfacher und "sicherer" geht es mit der Funktion:
IsDevice("aussenSensorWarnung")
Gruß
Dan