Hauptmenü

DOIF mit DeviceMonitor

Begonnen von raimundl, 27 Februar 2015, 20:34:28

Vorheriges Thema - Nächstes Thema

raimundl

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
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

Damian

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

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ioT4db

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
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

Damian

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.

 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ioT4db

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...
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ioT4db

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...
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ioT4db

#8
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
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

Damian

OK. Jetzt brauchen wir noch den Event-Monitor Output vom Ereignis:

health_state: alive

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ioT4db

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
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

Damian

tja, da muss ich leider passen, wenn der manuelle Trigger klappt !?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Teste mal

DOIF ([":health_state: alive"]) (setreading $SELF B_$DEVICE alive)

mit do always

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ioT4db

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
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

Damian

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" ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF