Hallo
ich habe das Problem das ich einen Watchdog benötige um zu erkennen wenn ein Rauchmelder seine Standardmeldungen nicht gesendet hat (also defekt ist)!
Allerdings möchte ich das diese Meldung für den betroffenen Melder täglich wiederholt wird.
ich möchte also den Watchdog manuell initialisieren sprich er ist aktiv und wartet die vorgegebene Zeit auf das Ereignis und reagiert entsprechend auf das Ausbleiben des Ereignisses.
bisher konnte ich nur über
-set defined den Watchdog aktiv setzten (er wartet dann jedoch auf das initialisierende Ereignis und würde nie einen fehlenden Rauchmelder melden, da dieses Ereignis ja nicht kommt).
-Trigger zwar das initialisierende Ereignis auslösen aber auch wenn der Melder "lebt" bekomme ich dann die Watchdog Meldung.
hat jemand ne Idee wie das mit möglichst wenig code zu bewerkstelligen ist?
Gruß
define at_raumelderstoerung_trigger at *09:00:00 trigger wd_hwr_melderstatus .
define noti_werk_rauchmelder notify werk_rauchalarm {\
if ("$EVENT" eq "RAUCHALARM") { DebianMail('derfuchss@icloud.com','RAUCHALARM Werkstatt',"$EVENT um $hms",'')}\
elsif ("$EVENT" eq "Batterie_NIEDRIG") { DebianMail('derfuchss@icloud.com','Rauchmelder STÖRUNG Werkstatt',"$EVENT festgestellt um $hms !",'')}\
elsif ("$EVENT" eq "Messkammerfehler") { DebianMail('derfuchss@icloud.com','Rauchmelder STÖRUNG Werkstatt',"$EVENT festgestellt um $hms !",'')}\
}
attr noti_werk_rauchmelder group Rauchmelder
attr noti_werk_rauchmelder room 99 System
define wd_werk_melderstatus watchdog werk_rauchalarm:Batterie_OK 14:00:00 SAME { DebianMail('derfuchss@icloud.com','Rauchmelder STÖRUNG Werkstatt',"Rauchmelder com Fehler! Festgestellt um $hms",'');;(setstate wd_werk_melderstatus defined)}
attr wd_werk_melderstatus group Rauchmelder
attr wd_werk_melderstatus room 99 System
define werk_rauchalarm EIB 6/0/8 6/1/8 6/2/8 #6/0/* Rauchalarm 6/1/* Batteriealarm 6/2/* Messkammeralarm
attr werk_rauchalarm EIBreadingRegex getG[1]:on.*/RAUCHALARM getG[1]:off.*/beendet getG[2]:on.*/Batterie_OK getG[2]:off.*/Batterie_NIEDRIG getG[3]:on.*/Messkammerfehler getG[3]:off.*/Messkammer_OK
attr werk_rauchalarm IODev KNX
attr werk_rauchalarm group Rauchmelder
attr werk_rauchalarm room 99 System
Hallo Jens
um was für einen Rauchmelder handelt es sich?
Homematic HM-Sec-SD?
Gruss
Sailor
Hi Jensmaier2,
schau dir mal dies hier an:
http://fhem.de/commandref_DE.html#DOIF_do_resetwait (http://fhem.de/commandref_DE.html#DOIF_do_resetwait)
lG
Wolfgang
Hallo Leutz
@ Sailor
nein es handelt sich um Hager TG510A KNX Rauchmelder.
@ Wolfgang
Danke für den Tipp mit doif, das sieht schonmal sehr vielversprechend aus.
Ich habe jedoch noch etwas Probleme mit dem Syntax.
folgender Syntax bedeutet nun also wenn der melder "werk_rauchalarm" nicht mindestens alle 86400sec ein Event generiert(beliebiges Reading) löst das DOIF aus und versendet die email!?
doresetwait resetet nach jeder doifauslösung das doif und wenn nicht erneut nach 86400sec ein Event durch den Rauchmelder ausgelöst wird, wird erneut eine Mail versendet!?
define rm_meldeverzug DOIF ([werk_rauchalarm])(DebianMail(derfuchss@icloud.com','Rauchmelder STÖRUNG Werkstatt',"Rauchmelder com Fehler! Festgestellt um $hms",'')
attr rm_meldeverzug wait 86400
attr rm_meldeverzug do resetwait
Gruß
Michael
Hallo Michael,
im Prinzip ja, aber:
Dein DebianMail Aufruf muss zusätzlich (wie immer) in {} -->({DebianMail . ...})
Wenn der Rauchmelder tot ist, wird so keine Mail weiter versendet, dazu könnte man repeatcmd setzen.
Der resetwait ist nur dafür, weil ja immer wieder nur ein event kommt, also es wird immer wieder wahr, aber nie "unwahr". Anders wenn der Zustand wechselt, man also jedesmal noch etwas abfragt.
Das Hauptproblem ist: Das Ganze läuft so nicht an, wenn der Rauchmelder schon tot ist beim start der Definition. Das DOIF fragt ja nicht zyklisch einen Status ab, sondern wartet auf Events, wenn der dann ausbleibt wird cmd1 ausgeführt. Aber wenn nie einer kommt? Nach Neustart von FHEM z.B.!
Dazu habe ich jetzt auch noch keine Idee. Der wait_timer müsste sich bei der Initialisierung des Moduls starten lassen, da weiß ich nicht wie.
Gruß Otto
Hallo Otto
wie wäre es mit einem manuell augelösten Event z.B. ein at das täglich um 9:00Uhr das doif triggert dann müsste wenn einer tot ist und 24h nichts sendet das doif auslösen und auch die Meldung dauerhaft wiederholen richtig?
Gruß
Michael
Ich befürchte ja, so etwas ist irgendwie "im Standard" vorgesehen und ich habe bloss keine Ahnung :-X
Ja, dass ginge auch ohne zusätzliches at mit ([9:00] or [werk_rauchalarm])
und dem attr rm_meldeverzug timerWithWait
Ohne das zusätzliche attr wirkt die Zeit nicht auf den wait_timer sondern sofort!
Vielen Dank,
dieses DOIF ist aber auch umfangreich ;)
also sollte das so passen oder !?
define rm_meldeverzug DOIF ([9:00] or [werk_rauchalarm])(DebianMail(derfuchss@icloud.com','Rauchmelder STÖRUNG Werkstatt',"Rauchmelder com Fehler! Festgestellt um $hms",'')
attr rm_meldeverzug wait 86400
attr rm_meldeverzug do resetwait
attr rm_meldeverzug timerWithWait
Gruß
Michael
Guten Abend Michael,
ich finde die Lösung mit 9:00 Uhr immer noch als Krücke und hoffe uns kommt da noch eine schönere Idee.
Aber ich habe das heute so mit einem Dummy probiert, ich denke das geht. Ich werde das für meine Melder auch mal so implementieren.
Vielleicht liest ja Damian mit und zeigt uns noch wie der wait_timer bei der Moduldefinition gestartet werden kann.
Gruß Otto
Guten Morgen Otto
Alo ich finde die Lösung elegant und codesparend :)
Danke nochmal für die Unterstützung.
Mir ist noch aufgefallen das 86400 (24 Stunden) zum Problem wird da das doif sonst ja zum Selbstläufer wird oder?
Gruß
Michael
hier nochmal der fertige code falls es sonst noch wer braucht.
define dachboden_rm_meldeverzug DOIF ([10:00] or [dachboden_rauchmelder])({DebianMail(derfuchss@icloud.com','Rauchmelder STÖRUNG Dachboden',"Rauchmelder Dachboden STÖRUNG um $hms",'')})
attr dachboden_rm_meldeverzug wait 82800
attr dachboden_rm_meldeverzug do resetwait
attr dachboden_rm_meldeverzug timerWithWait
Zitat von: Jensmaier2 am 28 Januar 2016, 08:34:51
Mir ist noch aufgefallen das 86400 (24 Stunden) zum Problem wird da das doif sonst ja zum Selbstläufer wird oder?
Guten Morgen Michael,
Du meinst wegen dem einmaligen Trigger am Tag?
Gruß Otto
Ja richtig egal ob der Rauchmelder lebt oder nicht das doif wird ja durch die Uhrzeit alle 24 "getriggert" und sobald die Wartezeit dann größer ist als 24 stunden wird es nie auslösen denke ich!?
Gruß
Michael
Ja.
Deswegen sage ich ja, ist das mit dem [9:00] eine Krücke.
Gruß Otto
Ok zum Glück senden die Melder alle 12h daher wird's zumindest gehen.
Gruß
Michael