Hauptmenü

DOIF will einfach nicht

Begonnen von meier81, 23 Mai 2017, 20:38:21

Vorheriges Thema - Nächstes Thema

meier81

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
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

Damian

Offenbar produziert DeviceMonitor keine Events, daher wird dein Modul nicht getriggert und macht dann auch nichts.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

meier81

#2
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?
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

Damian

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