Hauptmenü

DOIF mit ReadingsAge

Begonnen von pallago, 31 Januar 2022, 23:00:43

Vorheriges Thema - Nächstes Thema

pallago

Hallo zusammen,
ich habe eine Frage bzgl. den DOIF Abfragen. Ich möchte eine Pushnachricht schicken, wenn das Gerät test_device_01 seit 30 sek (Testzwecke) keine Daten geschickt hat.
Das Pushen funktioniert; nur die IF-Abfrage nicht. Ich habe versucht es wie folgt umzusetzen:

define check_alive_test_device_01 DOIF ([22:51:00]) (IF (ReadingsAge("test_device_01","uplink_message_decoded_payload_t",0) > 30)) (set Pushnachricht msg message='Test Device 01 hat schon seit 30s keine Daten mehr geschickt.')

Im LogFile steht:
DOIF check_alive_test_device_01 error: IF (ReadingsAge("test_device_01","uplink_message_decoded_payload_t",0) > 30)(): IF: no commands: (ReadingsAge("test_device_01","uplink_message_decoded_payload_t",0) > 30)()


Ich verstehe nicht, wo der "command" fehlt; ist ReadingsAge kein command, sondern lediglich eine Funktion, die man für die IF-Abfrage nicht verwenden kann?

Zusammengebaut habe ich es mir von
https://forum.fhem.de/index.php?topic=83857.0
https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsAge
https://forum.fhem.de/index.php?topic=82242.0
http://fhem.de/commandref_DE.html#DOIF
https://forum.fhem.de/index.php?topic=91402.0
https://forum.fhem.de/index.php?topic=56955.0

Damian

define check_alive_test_device_01 DOIF ([22:51:00]) (IF (ReadingsAge("test_device_01","uplink_message_decoded_payload_t",0) > 30)) (set Pushnachricht msg message='Test Device 01 hat schon seit 30s keine Daten mehr geschickt.')

Wenn man sich den geklammerten Befehl anschaut:

(IF (ReadingsAge("test_device_01","uplink_message_decoded_payload_t",0) > 30))

dann wird man keinen Befehl zum Ausführen finden, die Puschnachricht kommt ja erst später in einem separaten Block.

Wahrscheinlich meinst du so etwas:

(IF (ReadingsAge("test_device_01","uplink_message_decoded_payload_t",0) > 30) (set Pushnachricht msg message='Test Device 01 hat schon seit 30s keine Daten mehr geschickt.'))

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

pallago

oh ja, die Endklammer war falsch; vielen lieben Dank.