FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: tomseitz320 am 30 September 2023, 16:57:41

Titel: MQTT and "do always"
Beitrag von: tomseitz320 am 30 September 2023, 16:57:41
Hi,
ich habe erfolgreich einen LoraWan-Bewegungsmelder eingebunden, der im 10-Minuten-Takt ein Signal abgibt ("Timer-Event") bzw. ein "Active".
Solange sich diese beiden abwechseln funktioniert alles. Wiederholte Meldungen werden aber nicht ins Test-Log geschrieben (wohl aber ins originale FileLog!).
Schlussendlich möchte ich mir eine Message schicken, wenn das Device "Dead" ist, also die regelmäßigen Meldungen ausbleiben.
Im Moment benutze ich dafür folgenden Code (Die Anweisung setreading MailboxMessages MailboxMessages Timer_Event bzw.Time_Change ist nur zum Test):
defmod Test_Mailbox_Time DOIF ([MQTT_Mailbox:received_at] ne ReadingsVal("received_at", "state", ""))\
{\
        fhem("defmod SkipDeadMessage at +00:30:00 setreading MailboxMessages MailboxMessages Mailbox_Is_Dead");;\
        fhem("setreading MailboxMessages MailboxMessages Time_Change");;\
        my $Time = ReadingsVal("MQTT_Mailbox","received_at","_");;\
my $Text1 = "Time_Change ";;\
my $Text2 = $Text1.$Time;;\
fhem("setreading MailboxMessages MailboxMessages $Text2");;\
fhem("set received_at $Time")\
}
Seit Nutzung des "Do always"-Attributes funktioniert das.
Ich würde aber lieber folgendermassen verfahren, um die Variablen zu sparen:
defmod Test_Mailbox_TimerEvent DOIF ([MQTT_Mailbox:uplink_message_decoded_payload_TX_Reason] eq "Timer_Event")\
{\
        fhem("defmod SkipDeadMessage at +00:30:00 setreading MailboxMessages MailboxMessages Mailbox_Is_Dead");;\
        fhem("setreading MailboxMessages MailboxMessages Timer_Event")\
}

Das wird aber trotz "Do always" nicht wiederholt ausgeführt, sondern erst nach einer Änderung der uplink message.
Warum, bzw. wie kann ich bei jedem(!!), auch ungeändertem Uplink den Code ausführen?
Titel: Aw: MQTT and "do always"
Beitrag von: betateilchen am 30 September 2023, 17:33:55
Falsches Forum. Das ist doch kein MQTT Problem, sondern ein Problem mit Deinem DOIF.

Warum überhaupt DOIF? Das was Du da tun möchtest,

Zitat von: tomseitz320 am 30 September 2023, 16:57:41Schlussendlich möchte ich mir eine Message schicken, wenn das Device "Dead" ist, also die regelmäßigen Meldungen ausbleiben.

klingt wie der klassische Anwendungsfall für ein watchdog device.