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
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.'))
oh ja, die Endklammer war falsch; vielen lieben Dank.