FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: meier81 am 23 Mai 2017, 20:38:21

Titel: DOIF will einfach nicht
Beitrag von: meier81 am 23 Mai 2017, 20:38:21
Hallo,

muss euch jetzt um Rat fragen, ich komme selbst nicht mehr weiter. Habe folgendes Problem: Habe mir das Modul 98_DeviceMonitor installiert für die Ausfallüberwachung meiner Funkfühler, funzt einwandfrei (siehe Anhang).

Jetzt möchte ich eine Sammelmeldung erstellen, habe das ganze so probiert:


define Meldung dummy

define di_Warnung DOIF ([DeviceMonitor:Fuehler_Arbeitszimmer] eq "dead"\
or [DeviceMonitor:Fuehler_Bad] eq "dead"\
or [DeviceMonitor:Fuehler_Dachgeschoss] eq "dead"\
or [DeviceMonitor:Fuehler_Elias] eq "dead"\
or [DeviceMonitor:Fuehler_Keller] eq "dead"\
or [DeviceMonitor:Fuehler_Kueche] eq "dead"\
or [DeviceMonitor:Fuehler_Schlafzimmer] eq "dead"\
or [DeviceMonitor:Fuehler_Wohnzimmer] eq "dead")\
(set Meldung Warnung)\
DOELSE (set Meldung OK)

Das ganze funktioniert leider nicht, die Variable Meldung bleibt im Zustand ??? und wechselt auf keinen der Zustände.

Habe auch schon zum testen das ganze so probiert:


define di_Warnung DOIF (fhem("get DeviceMonitor dead_count",1) > 0) (set Meldung Warnung) DOELSE (set Meldung OK)


Funktioniert aber auch nicht. Ein "get DeviceMonitor dead_count" liefert aber die Antwort "0" bei keinem Ausfall und bei einem Ausfall die "1", geht also.

Habt ihr eine Idee was ich bei der DOIF Erstellung falsch mache?

Danke schon mal und Gruß

Markus
Titel: Antw:DOIF will einfach nicht
Beitrag von: Damian am 23 Mai 2017, 21:43:16
Offenbar produziert DeviceMonitor keine Events, daher wird dein Modul nicht getriggert und macht dann auch nichts.
Titel: Antw:DOIF will einfach nicht
Beitrag von: meier81 am 25 Mai 2017, 21:04:59
So, hab mal nachgeschaut, DeviceMonitor erzeugt definitiv Events:

2017-05-25 20:53:53 dummy Test health_state: dead

Hab mal weiter geschaut, das Reading HEALTH_STATE ist ja ein Internal Reading, hab deswegen beim DOIF zum testen folgendes geschrieben:


define DeviceMonitor DeviceMonitor
define Test dummy
attr Test device_timeout 1
define Warnung dummy
define di_Warnung DOIF ([Test:&HEALTH_STATE] eq "dead") (set Warnung ja) DOELSE (set Warnung nein)


Was ich komisch finde im Eventmonitor bekomme ich ja den oberen Eintrag, es werden folglich Events erzeugt. Die Ansicht der Internals unterscheidet sich aber. Bei den Internals des Dummys Test steht HEALTH_STATE dead mit dem Zeitstempel 2017-05-25 20:53:53, bei den Readings von DOIF steht e_Test_HEALTH_STATE alive mit dem gleichen Zeitstempel wie beim Dummy Test.

Sieht fast so aus als wird das Reading getriggert aber mit dem falschen Wert.

Habt ihr da eine Idee was ich noch testen könnte?
Titel: Antw:DOIF will einfach nicht
Beitrag von: Damian am 25 Mai 2017, 22:33:25
Der DeviceMonitor verhält sich offenbar nicht FHEM-konform. Internals erzeugen normalerweise keine Events, Events kommen normalerweise bei Veränderungen von Readings vor.

Du kannst aber immer auf Eventtrigger reagieren, die du im Eventmonitor siehst:

hier also:

DOIF ([Test:"health_state: dead"]) (set ...