[gelöst] MQTT publish timestamp mit {time}

Begonnen von Nielsiwilsi, 24 Juni 2020, 11:18:41

Vorheriges Thema - Nächstes Thema

Nielsiwilsi

Hallo Zusammen,

ich habe bei mir seltene unerklärliche Netzwerk-Zusammenbrüche. Dabei verlieren einige (50%) Netzgeräte die Verbindung. Unter anderem auch der FHEM <-> Mosquitto Link, beides auf einer Synology im Docker. Irgendwann finde ich den Fehler, aber dass soll jetzt nicht das Thema sein.
Im Log steht leider nur wenig. Es geht um 3:10 los und geht die restliche Nacht so weiter...
2020.06.24 03:10:45.520 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28940
2020.06.24 03:10:45.526 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28941
2020.06.24 03:10:45.531 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28942
2020.06.24 03:10:45.535 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28943
2020.06.24 03:10:45.540 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28944
2020.06.24 03:10:45.544 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28945
2020.06.24 03:10:45.548 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28946
2020.06.24 03:10:45.552 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28947
2020.06.24 03:10:45.557 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 28948
2020.06.24 03:13:27.867 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32212
2020.06.24 03:13:27.870 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32213
2020.06.24 03:13:27.873 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32214
2020.06.24 03:13:27.875 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32215
2020.06.24 03:13:27.878 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32216
2020.06.24 03:13:27.881 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32217
2020.06.24 03:13:27.883 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32218
2020.06.24 03:13:27.886 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32219
2020.06.24 03:13:27.889 1: Timeout for PRESENCE_DoLocalFunctionScan reached, terminated process 32220
2020.06.24 03:17:23.073 1: M2: Unhandled packet RESERVED_0, disconneting mqtt2_client
2020.06.24 03:19:24.013 1: Netatmo: DNS error, cannot resolve api.netatmo.com
2020.06.24 03:19:24.013 1: netatmo_D70_ee_50_04_c3_08: No access token was found! (requestDeviceReadings)
2020.06.24 03:20:34.020 1: Netatmo: DNS error, cannot resolve api.netatmo.com
2020.06.24 03:25:54.551 1: M2: Unhandled packet RESERVED_0, disconneting mqtt2_client
2020.06.24 03:25:54.554 1: M2: Unhandled packet RESERVED_0, disconneting mqtt2_client
2020.06.24 03:34:14.987 1: M2: Unhandled packet RESERVED_0, disconneting mqtt2_client
2020.06.24 03:34:14.989 1: M2: Unhandled packet RESERVED_0, disconneting mqtt2_client
2020.06.24 03:36:51.013 1: PROPLANTA Wetter_New: HtmlAcquire.590 Error: Can't get https://www.proplanta.de/Wetter/profi-wetter.php?SITEID=60&PLZ=Regensburg&STADT=Regensburg&WETTERaufrufen=stadt&Wtp=&SUCHE=Wetter&wT=0 -- 500 Can't connect to www.proplanta.de:443 (Temporary failure in name resolution)


Als Erstes habe ich mir jetzt das LWT eingerichtet, aber ich möchte mir auch noch ein timestamp senden, wann genau die Verbindung zusammen bricht.

defmod FEHM_send_timestamp at +*00:00:01 set mqtt2_client publish -r fhem/timestamp {time}

Was muss ich tun, damit {time} funktioniert?

VG
Niels


Beta-User

Zitat von: Nielsiwilsi am 24 Juni 2020, 11:18:41
defmod FEHM_send_timestamp at +*00:00:01 set mqtt2_client publish -r fhem/timestamp {time}

Was muss ich tun, damit {time} funktioniert?
Du versuchst hier normale Anweisungen und Perl-Code zu mischen, und das klappt hier - wie sonst auch - eben nicht...
Ungetestet könnte es so klappen:
defmod FEHM_send_timestamp at +*00:00:01 { fhem("set mqtt2_client publish -r fhem/timestamp ".time)}
Notfalls mußt du das Ergebnis von time vorneweg in eine Variable packen und dann diese in die fhem-Anweisung übernehmen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

Vmtl. wollte der TE perl in set magic verwenden, das geht aber nur mit {(...)}, d.h.
Zitatdefmod FEHM_send_timestamp at +*00:00:01 set mqtt2_client publish -r fhem/timestamp {(time)}
Wobei ich mich unwohl fuehle, wenn man Funktionen ohne Klammer aufruft, ich schreibe lieber time().

Nielsiwilsi

Mit dem Code von rudofkoenig getestet und es funktioniert, danke.