Hallo!
Habe den DeviceMonitor installiert. Wenn "Steckdose1" sich nicht innerhalb einer bestimmten Zeit meldet liefert er:
Steckdose1 health_state: dead
define Status DOIF ([Steckdose1:?dead]) (set Pushover1 msg 'Achtung' 'Ausfall' '' 0 '')
funktioniert!
Da aber der DeviceMonitor bei jeden überwachten Gerät bei Nichtmeldung
Device1 - Device 15 health_state: dead
liefert, soll DOIF nur "health_state" abfragen ob "dead".
define Status DOIF ([health_state:?dead]) (set Pushover1 msg 'Achtung' 'Ausfall' '' 0 '')
funktioniert nicht. "health_state" ist ja kein Device.
wie definiere ich das bitte richtig?
Danke und LG
Zitat von: raimundl am 27 Februar 2015, 20:34:28
Hallo!
Habe den DeviceMonitor installiert. Wenn "Steckdose1" sich nicht innerhalb einer bestimmten Zeit meldet liefert er:
Steckdose1 health_state: dead
define Status DOIF ([Steckdose1:?dead]) (set Pushover1 msg 'Achtung' 'Ausfall' '' 0 '')
funktioniert!
Da aber der DeviceMonitor bei jeden überwachten Gerät bei Nichtmeldung
Device1 - Device 15 health_state: dead
liefert, soll DOIF nur "health_state" abfragen ob "dead".
define Status DOIF ([health_state:?dead]) (set Pushover1 msg 'Achtung' 'Ausfall' '' 0 '')
funktioniert nicht. "health_state" ist ja kein Device.
wie definiere ich das bitte richtig?
Danke und LG
Bei DOIF musst du konkrete Device-Namen angeben. Verallgemeinern geht hier nicht. Wenn du es mit einer Zeile erledigen willst, musst du notify benutzen.
Gruß
Damian
Zitat von: Damian am 27 Februar 2015, 21:30:38
Bei DOIF musst du konkrete Device-Namen angeben. Verallgemeinern geht hier nicht. Wenn du es mit einer Zeile erledigen willst, musst du notify benutzen.
Gruß
Damian
Hallo Damian,
ich wärm das Thema nochmal auf. Müsste das nicht mittlerweile funktionieren?
Ich hab mir folgendes DOIF angelegt, welches auch auf ein "internal" reagiert, nur leider reagiert nur der erste Teil. Der DOELSEIF-Teil ist zwar ähnlich aufgebaut, macht aber keinen Mux!?
Hintergrund ist wie das Thema schon sagt, ich habe verwende das DeviceMonitor-Modul und möchte es für beliebige Devices abfragen:
Auszug aus meinem DEF des DOIFs:
([":health_state: dead"] and [?$SELF:B_$DEVICE] ne "dead") (set Pushover.D msg 'Health-Alarm' 'Gerät +++ $DEVICE +++ ist ausgefallen!' 'iPhone6s' 0 '', setreading $SELF B_$DEVICE dead)
DOELSEIF ([":health_state: alive"] and [?$SELF:B_$DEVICE] ne "alive") (setreading $SELF B_$DEVICE alive)
attr Do always > ist gesetzt
Der erste Teil reagiert wie gewünscht auf "dead" ich bekomme auch die Push-Nachricht. Nur wenn der internal "health_state" wieder "alive" ist, bekommt es das DOIF nicht mit.
Im EventMonitor werden beide internal-Änderungen angezeigt:
2017-02-17 11:00:07 dummy TestPush6 health_state: dead
2017-02-17 11:00:22 dummy TestPush6 on
2017-02-17 11:00:22 dummy TestPush6 health_state: alive
Oder reagiert DOIF doch nicht auf internals und der erste Teil funktioniert zufällig bzw. aus irgendeinem anderen Grund?
Danke schonmal für Eure Unterstützung...
Daniel
Zitat von: friesenjung am 17 Februar 2017, 11:04:35
Hallo Damian,
ich wärm das Thema nochmal auf. Müsste das nicht mittlerweile funktionieren?
Ich hab mir folgendes DOIF angelegt, welches auch auf ein "internal" reagiert, nur leider reagiert nur der erste Teil. Der DOELSEIF-Teil ist zwar ähnlich aufgebaut, macht aber keinen Mux!?
Hintergrund ist wie das Thema schon sagt, ich habe verwende das DeviceMonitor-Modul und möchte es für beliebige Devices abfragen:
Auszug aus meinem DEF des DOIFs:
([":health_state: dead"] and [?$SELF:B_$DEVICE] ne "dead") (set Pushover.D msg 'Health-Alarm' 'Gerät +++ $DEVICE +++ ist ausgefallen!' 'iPhone6s' 0 '', setreading $SELF B_$DEVICE dead)
DOELSEIF ([":health_state: alive"] and [?$SELF:B_$DEVICE] ne "alive") (setreading $SELF B_$DEVICE alive)
attr Do always > ist gesetzt
Der erste Teil reagiert wie gewünscht auf "dead" ich bekomme auch die Push-Nachricht. Nur wenn der internal "health_state" wieder "alive" ist, bekommt es das DOIF nicht mit.
Im EventMonitor werden beide internal-Änderungen angezeigt:
2017-02-17 11:00:07 dummy TestPush6 health_state: dead
2017-02-17 11:00:22 dummy TestPush6 on
2017-02-17 11:00:22 dummy TestPush6 health_state: alive
Oder reagiert DOIF doch nicht auf internals und der erste Teil funktioniert zufällig bzw. aus irgendeinem anderen Grund?
Danke schonmal für Eure Unterstützung...
Daniel
Du triggerst aber auf Ereignisse. Irgendwelche Internals kommen bei deiner Definition nicht vor. Die Definition sollte allerdings so funktionieren.
Zitat von: Damian am 17 Februar 2017, 11:36:06
Du triggerst aber auf Ereignisse. Irgendwelche Internals kommen bei deiner Definition nicht vor. Die Definition sollte allerdings so funktionieren.
Danke für die schnelle Antwort!
Ok, stimmt das sind Ereignisse. Aber würde DOIF mittlerweile auf internals reagieren?
Ich habs jetzt mal auf folgendes reduziert:
das funktioniert:
([":health_state: dead"]) (setreading $SELF B_$DEVICE test)
das funktioniert NICHT:
([":health_state: alive"]) (setreading $SELF B_$DEVICE test)
Obwohl die Ereignisse im Event monitor so erscheinen, bekommt es das DOIF bei ":health_state: alive" nicht mit.
Kann es sein, dass im Event monitor was kommt, aber das Modul trotzdem "irgendwas" nicht sendet, damit es das DOIF mitbekäme?
schon merkwürdig das ganze...
VG...
Zitat von: friesenjung am 17 Februar 2017, 13:02:47
Danke für die schnelle Antwort!
Ok, stimmt das sind Ereignisse. Aber würde DOIF mittlerweile auf internals reagieren?
Ich habs jetzt mal auf folgendes reduziert:
das funktioniert:
([":health_state: dead"]) (setreading $SELF B_$DEVICE test)
das funktioniert NICHT:
([":health_state: alive"]) (setreading $SELF B_$DEVICE test)
Obwohl die Ereignisse im Event monitor so erscheinen, bekommt es das DOIF bei ":health_state: alive" nicht mit.
Kann es sein, dass im Event monitor was kommt, aber das Modul trotzdem "irgendwas" nicht sendet, damit es das DOIF mitbekäme?
schon merkwürdig das ganze...
VG...
Ich weiß nicht, welche konkreten Internals du meinst. Abfragen kann man die mit &-Zeichen. Internals selbst ändern sich normalerweise nicht und produzieren auch keine Ereignisse - Aussnahme ist state, der ja an das Reading state gekoppelt ist.
mit
trigger test_dummy health_state: alive
wird bei mir:
([":health_state: alive"]) (setreading $SELF B_$DEVICE test)
ohne Probleme ausgeführt.
Zitat von: Damian am 17 Februar 2017, 15:04:14
Ich weiß nicht, welche konkreten Internals du meinst. Abfragen kann man die mit &-Zeichen. Internals selbst ändern sich normalerweise nicht und produzieren auch keine Ereignisse - Aussnahme ist state, der ja an das Reading state gekoppelt ist.
mit
trigger test_dummy health_state: alive
wird bei mir:
([":health_state: alive"]) (setreading $SELF B_$DEVICE test)
ohne Probleme ausgeführt.
ok, lassen wir mal internals außen vor.
Das Ereignis "alive" kommt je eigentlich vom DeviceMonitor, wenn das Device wieder aktiv ist.
Manuell mit
trigger test_dummy health_state: alive
funktioniert es bei mir auch!
Nur wenn das Device eben automatisch durch den DeviceMonitor wieder das Ereignis "alive" bekommt/gesetzt wird, dann funktioniert es nicht.
ratlos....
VG...
Zitat von: friesenjung am 17 Februar 2017, 15:51:12
ok, lassen wir mal internals außen vor.
Das Ereignis "alive" kommt je eigentlich vom DeviceMonitor, wenn das Device wieder aktiv ist.
Manuell mit trigger test_dummy health_state: alive
funktioniert es bei mir auch!
Nur wenn das Device eben automatisch durch den DeviceMonitor wieder das Ereignis "alive" bekommt/gesetzt wird, dann funktioniert es nicht.
ratlos....
VG...
Dann poste mal den eigentlichen Eintrag im Device-Monitor.
Zitat von: Damian am 17 Februar 2017, 15:53:16
Dann poste mal den eigentlichen Eintrag im Device-Monitor.
Hi, ist etwas später geworden...
Das Device, um das es sich handelt ist "Testpush6".
Also im DeviceMonitor steht folgendes:
Anlage: DeviceMonitor.JPG
Das dazugehörige Device, was überwacht wird, sieht so aus:
Anlage: Test_Device.JPG
Hoffe das ist was Du erwartet hast...
VG
Daniel
OK. Jetzt brauchen wir noch den Event-Monitor Output vom Ereignis:
health_state: alive
Zitat von: friesenjung am 17 Februar 2017, 11:04:35
...
Im EventMonitor werden beide internal-Änderungen angezeigt:
2017-02-17 11:00:07 dummy TestPush6 health_state: dead
2017-02-17 11:00:22 dummy TestPush6 on
2017-02-17 11:00:22 dummy TestPush6 health_state: alive
Hi, das ist der vom Beitrag weiter oben. Zeitstempel ist halt etwas jünger.
VG
Gesendet von iPhone mit Tapatalk
tja, da muss ich leider passen, wenn der manuelle Trigger klappt !?
Teste mal
DOIF ([":health_state: alive"]) (setreading $SELF B_$DEVICE alive)
mit do always
Danke für den Tipp, nur ist do always schon immer gesetzt :(
Scheint also irgendwas im DeviceMonitor-Modul nicht richtig zu triggern!? Andere Idee hab ich momentan auch nicht
Gesendet von iPhone mit Tapatalk
Zitat von: friesenjung am 18 Februar 2017, 11:06:17
Danke für den Tipp, nur ist do always schon immer gesetzt :(
Scheint also irgendwas im DeviceMonitor-Modul nicht richtig zu triggern!? Andere Idee hab ich momentan auch nicht
Gesendet von iPhone mit Tapatalk
Du könntest auch probieren das Reading abzufragen:
([myDeviceMonitor:Testpush6] eq "alive" ...
Zitat von: Damian am 18 Februar 2017, 11:19:41
Du könntest auch probieren das Reading abzufragen:
([myDeviceMonitor:Testpush6] eq "alive" ...
Nabend Damian,
selbst das geht nicht!
([myDeviceMonitor:TestPush6] eq "alive") (setreading $SELF B_TestPush6 test)
Mit jedem anderen Device geht es, nur dem DeviceMonitor nicht. Ich werd noch wahnsinnig :o
Mir scheint Du hast das Modul nicht laufen, oder?
Vielleicht nehm ich mal Kontakt zum Author auf. Ist ein "Dennis G".
Ich hab schon mal ins Modul geschaut, aber das ist mit meiner Minimal-Kenntnis von Perl aussichtslos. :-[
VG...
Zitat von: friesenjung am 18 Februar 2017, 21:53:42
Nabend Damian,
selbst das geht nicht!
([myDeviceMonitor:TestPush6] eq "alive") (setreading $SELF B_TestPush6 test)
Mit jedem anderen Device geht es, nur dem DeviceMonitor nicht. Ich werd noch wahnsinnig :o
Mir scheint Du hast das Modul nicht laufen, oder?
Vielleicht nehm ich mal Kontakt zum Author auf. Ist ein "Dennis G".
Ich hab schon mal ins Modul geschaut, aber das ist mit meiner Minimal-Kenntnis von Perl aussichtslos. :-[
VG...
Ich benutze DeviceMonitor nicht. Ich kenne das Modul gar nicht.
falls hier jemand mal stöbert, es gibt zu dem hier besprochenen alten DecviceMonitor mittlerweile eine gute, supportete Alternative...
https://forum.fhem.de/index.php/topic,68765.msg629378.html#msg629378
Hallo!
Ich nutze den DeviceMonitor State als Trigger, funktioniert sehr gut.
([":health_state: dead"] and [?$SELF:B_$DEVICE] ne "dead" and [DeviceMonitor_Name])
Grüße Tim