[Bugs] 00_MQTT2_SERVER / 10_MQTT2_DEVICE

Begonnen von betateilchen, 10 August 2018, 18:01:33

Vorheriges Thema - Nächstes Thema

schwatter

#90
Das sollte helfen:

falsch

on cmnd/sonoff11/POWER on\
off cmnd/sonoff11/POWER off


richtig

on cmnd/sonoff11/POWER on
off cmnd/sonoff11/POWER off


edit:

Außerdem konnte ich eben nachstellen, das z.B nach "POWER on" kein Leerzeichen sein darf.


schwatter

#91
Problem mit "state". Dieser ist immer "?.?.?."
Erst wenn z.B eine ReadingsVal gesetzt wird, habe ich meinen State.
Beabsichtigt oder Bug?

Zitatattr Mqttdevice stateFormat {ReadingsVal($name,"LWT","") eq "offline" ? "offline" : ReadingsVal($name,"POWER","")}

Außerdem besteht das LWT- Onlineproblem immer noch. Shutdown restart hilft weiterhin hier.

Danke hier, für die Module :)


SamNitro

Zitat von: schwatter am 23 August 2018, 18:44:32

Außerdem besteht das LWT- Onlineproblem immer noch. Shutdown restart hilft weiterhin hier.


Ja war bei mir leider auch, und mein Read Kontakt von der Garage gab keine Meldung weiter.
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

rudolfkoenig

#93
ZitatProblem mit "state". Dieser ist immer "?.?.?."
state wird nicht gesetzt, es sei denn der Benutzer hat es konfiguriert.
ZitatAußerdem besteht das LWT- Onlineproblem immer noch. Shutdown restart hilft weiterhin hier.
Was ist das "LWT-Onlineproblem?

Zu richtig vs. falsch: \ braucht man, wenn man fhem.cfg direkt editiert, oder in "raw definition". Sonst braucht mein kein \.

SamNitro

Zitat von: rudolfkoenig am 23 August 2018, 20:01:19
Was ist das "LWT-Onlineproblem?
Er meint den ganz normalen LWT Status ob das Gerät Online oder Offline ist.
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

rudolfkoenig

ZitatEr meint den ganz normalen LWT Status ob das Gerät Online oder Offline ist.
Das funktioniert bei mir, d.h. ich brauche ein "attr global verbose 5" FHEM-Log.

SamNitro

#96
Hatte jetzt mal eine alte Steckdose genommen mit einer alten Tasmota Firmware da schien es beim ersten mal zu gehen mit der neuen Firmware habe ich bei verbose 5 vom m2s diesen log:


2018.08.23 21:59:23 4: m2s_192.168.1.20_55363 MQTT_FX_Client PINGREQ
2018.08.23 21:59:25 4: Connection accepted from m2s_192.168.1.40_14569
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 CONNECT V:4 keepAlive:15 LWT:tele/sonoff_test/LWT:Offline usr:DVES_USER
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH tele/sonoff_test/LWT:Online
2018.08.23 21:59:25 5: m2s: dispatch autocreate:DVES_9F4497:tele/sonoff_test/LWT:Online
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH cmnd/sonoff_test/POWER:
2018.08.23 21:59:25 5: m2s: dispatch autocreate:DVES_9F4497:cmnd/sonoff_test/POWER:
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 SUBSCRIBE
2018.08.23 21:59:25 4:   topic:cmnd/sonoff_test/# qos:0
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 SUBSCRIBE
2018.08.23 21:59:25 4:   topic:cmnd/sonoffs/# qos:0
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 SUBSCRIBE
2018.08.23 21:59:25 4:   topic:cmnd/DVES_9F4497/# qos:0
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH tele/sonoff_test/INFO1:{"Module":"Sonoff S2X","Version":"6.1.1","FallbackTopic":"DVES_9F4497","GroupTopic":"sonoffs"}
2018.08.23 21:59:25 5: m2s: dispatch autocreate:DVES_9F4497:tele/sonoff_test/INFO1:{"Module":"Sonoff S2X","Version":"6.1.1","FallbackTopic":"DVES_9F4497","GroupTopic":"sonoffs"}
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH tele/sonoff_test/INFO2:{"WebServerMode":"Admin","Hostname":"sonoff_test-1175","IPAddress":"192.168.1.40"}
2018.08.23 21:59:25 5: m2s: dispatch autocreate:DVES_9F4497:tele/sonoff_test/INFO2:{"WebServerMode":"Admin","Hostname":"sonoff_test-1175","IPAddress":"192.168.1.40"}
2018.08.23 21:59:25 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH tele/sonoff_test/INFO3:{"RestartReason":"Power on"}
2018.08.23 21:59:25 5: m2s: dispatch autocreate:DVES_9F4497:tele/sonoff_test/INFO3:{"RestartReason":"Power on"}
2018.08.23 21:59:25 5: m2s: dispatch autocreate:DVES_9F4497:tele/sonoff_test/LWT:Offline
2018.08.23 21:59:25 4: Connection closed for m2s_192.168.1.40_19298: Connection reset by peer
2018.08.23 21:59:27 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH stat/sonoff_test/RESULT:{"POWER":"OFF"}
2018.08.23 21:59:27 5: m2s: dispatch autocreate:DVES_9F4497:stat/sonoff_test/RESULT:{"POWER":"OFF"}
2018.08.23 21:59:27 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH stat/sonoff_test/POWER:OFF
2018.08.23 21:59:27 5: m2s: dispatch autocreate:DVES_9F4497:stat/sonoff_test/POWER:OFF
2018.08.23 21:59:34 4: m2s_192.168.1.40_14569 DVES_9F4497 PUBLISH tele/sonoff_test/STATE:{"Time":"2018-08-23T20:59:33","Uptime":"0T00:00:15","Vcc":3.178,"POWER":"OFF","Wifi":{"AP":1,"SSId":"PC","RSSI":100,"APMac":"E0:28:6D:24:E5:B0"}}
2018.08.23 21:59:34 5: m2s: dispatch autocreate:DVES_9F4497:tele/sonoff_test/STATE:{"Time":"2018-08-23T20:59:33","Uptime":"0T00:00:15","Vcc":3.178,"POWER":"OFF","Wifi":{"AP":1,"SSId":"PC","RSSI":100,"APMac":"E0:28:6D:24:E5:B0"}}
2018.08.23 21:59:40 4: m2s_192.168.1.40_14569 DVES_9F4497 PINGREQ
2018.08.23 21:59:55 4: m2s_192.168.1.40_14569 DVES_9F4497 PINGREQ
2018.08.23 22:00:10 4: m2s_192.168.1.40_14569 DVES_9F4497 PINGREQ



Als würden die Geräte einen Offline senden was sie aber beim Mosquitto nicht tun!


bei global verbose 5: (mein gerät heißt sonoff_test)
Siehe Anhang
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

rudolfkoenig

Zitat...da schien es beim ersten mal zu gehen...
Ich betrachte das Problem als nicht vorhanden, bis ein Log das Gegenteil beweist :)

SamNitro

Das einzige was ich anbieten kann ist der MQTT log bei einem Neustart des Device:

vom m2s Server:
pi@FHEM:~ $ mosquitto_sub -v -h localhost -p 1884 -t '+/sonoff_test/#'
tele/sonoff_test/LWT Offline
cmnd/sonoff_test/Restart 1
stat/sonoff_test/RESULT {"Restart":"Restarting"}
tele/sonoff_test/LWT Online
cmnd/sonoff_test/POWER (null)
tele/sonoff_test/INFO1 {"Module":"Sonoff S2X","Version":"6.1.1","FallbackTopic":"DVES_9F4497","GroupTopic":"sonoffs"}
tele/sonoff_test/INFO2 {"WebServerMode":"Admin","Hostname":"sonoff_test-1175","IPAddress":"192.168.1.40"}
tele/sonoff_test/INFO3 {"RestartReason":"Software/System restart"}
tele/sonoff_test/LWT Offline
stat/sonoff_test/RESULT {"POWER":"OFF"}
stat/sonoff_test/POWER OFF
tele/sonoff_test/STATE {"Time":"2018-08-24T09:59:20","Uptime":"0T00:00:15","Vcc":3.178,"POWER":"OFF","Wifi":{"AP":1,"SSId":"PC","RSSI":100,"APMac":"E0:28:6D:24:E5:B0"}}


vom mosquitto Server:
pi@FHEM:~ $ mosquitto_sub -v -h localhost -p 1883 -t '+/sonoff_test/#'
tele/sonoff_test/LWT Online
cmnd/sonoff_test/Restart 1
stat/sonoff_test/RESULT {"Restart":"Restarting"}
tele/sonoff_test/LWT Online
cmnd/sonoff_test/POWER (null)
tele/sonoff_test/INFO1 {"Module":"Sonoff S2X","Version":"6.1.1","FallbackTopic":"DVES_9F4497","GroupTopic":"sonoffs"}
tele/sonoff_test/INFO2 {"WebServerMode":"Admin","Hostname":"sonoff_test-1175","IPAddress":"192.168.1.40"}
tele/sonoff_test/INFO3 {"RestartReason":"Software/System restart"}
stat/sonoff_test/RESULT {"POWER":"OFF"}
stat/sonoff_test/POWER OFF
tele/sonoff_test/STATE {"Time":"2018-08-24T10:07:13","Uptime":"0T00:00:15","Vcc":3.178,"POWER":"OFF","Wifi":{"AP":1,"SSId":"PC","RSSI":100,"APMac":"E0:28:6D:24:E5:B0"}}


Kann es sein das der die Offline Nachricht nicht überschreibt oder im Speicher behält?
Wenn ich FHEM Neustarte dann sind die Nachrichten fürs erste korrekt.
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

MarkusN

Ich habe ein ähnliches Problem, die meisten meiner Sonoffs zeigen im Reading LWT "offline" an, nur manchmal springen sie kurz auf online. Hier ein Beispiel aus dem Eventmonitor:

2018-08-24 13:35:29 MQTT2_SERVER mqtt_server nrclients: 6
2018-08-24 13:35:29 MQTT2_DEVICE sonoff4 LWT: Online
2018-08-24 13:35:29 MQTT2_DEVICE sonoff4 POWER:
2018-08-24 13:35:29 MQTT2_SERVER mqtt_server nrclients: 5
2018-08-24 13:35:29 MQTT2_DEVICE sonoff4 LWT: Offline
2018-08-24 13:35:30 MQTT2_DEVICE sonoff4 POWER: off


Hier sind zwei Dinge seltsam:
- MQTT2_SERVER meldet erst 6 devices (ich habe allerdings nur 5 MQTT2_DEVICE definiert), im weiteren Verlauf dann korrekterweise 5.
- Bevor das MQTT2_DEVICE auf offline geht kommt immer ein leeres POWER reading als Antwort.

rudolfkoenig

Zitat- MQTT2_SERVER meldet erst 6 devices (ich habe allerdings nur 5 MQTT2_DEVICE definiert), im weiteren Verlauf dann korrekterweise 5.
Achtung, das sind nicht 6 Geraete, sondern 6 bestehende Netzwerkverbindungen. Wenn z.Bsp. einer der Geraete meint, die Netzwerkverbindung waere kaputt, und oeffnet eine Neue, ohne die Alte zu schliessen, dann sind eine Zeit lang mehr Verbindungen als Geraete.

Zitat- Bevor das MQTT2_DEVICE auf offline geht kommt immer ein leeres POWER reading als Antwort.
Was ist eine "Antwort" in diesem Kontext?
Was ist der LWT der Verbindung (nicht Device!). Siehe "list TYPE=MQTT2_SERVER lwt"


ZitatKann es sein das der die Offline Nachricht nicht überschreibt oder im Speicher behält?
Ja, je nach Retain Flag Kombination. Z.Bsp. wenn das Geraet im CONNECT LWT als "Offline" ohne retain schickt und den gleichen Topic in darauffolgenden PUBLISH als "Online" mit retain, dann wird beim Verbindungsabbruch Offline gemeldet, aber neue MQTT-Clients bekommen Online.
Kannst du bitte die Ausgaben folgender Befehle hier anhaengen:list TYPE=MQTT2_SERVER lwt
list TYPE=MQTT2_SERVER cflags
list TYPE=MQTT2_SERVER RETAIN

SamNitro

list TYPE=MQTT2_SERVER lwt
m2s_192.168.1.40_20042     tele/sonoff_test/LWT:Offline

list TYPE=MQTT2_SERVER cflags
m2s_192.168.1.40_20042     238

list TYPE=MQTT2_SERVER RETAIN
m2s                  2018-08-24 18:57:43    {"tele/sonoff/LWT":"Offline","tele/sonoff_TV_IR_Reserve/LWT":"Offline","tele/sonoff_test/LWT":"Offline"}
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

rudolfkoenig

238 bedeutet Retain bei LWT, d.h. das LWT muesste beim Verbindungsabbruch andere Meldungen mit diesem Topic ueberschreiben, aber laut RETAIN gibt es keine Anderen.

Ich habe deinen alten FHEM-Log sorgfaeltiger durchgelesen:
Zitat2018.08.23 21:59:25 4: Connection accepted from m2s_192.168.1.40_14569
...
2018.08.23 21:59:25 4: Connection closed for m2s_192.168.1.40_19298: Connection reset by peer
=> Wichtig: 14569 != 19298. D.h. das Geraet mit der IP 192.168.1.40 hat eine zweite Verbindung aufgebaut, und danach die Erste zugemacht.
Beim jedem Disconnct sendet der MQTT2_SERVER das LWT, was hier vermutlich nicht so gewollt ist.

Ich muss noch darueber meditieren, wie man die zwei Verbindungen als "das gleiche Geraet" indentifizieren kann, vmtl. ueber clientID+IP. Oder nur clientID?
Wenn jemand die "richtige" Idee hat, der soll sich melden.

SamNitro

Bin da jetzt nicht so versiert, aber beides denke ich mal wird schwierig sein:

Die ClientID wird es bestimmt nur bei der Tasmota Firmware geben, aber was ist mit der EspEasy Firmware? Die habe ich zur Zeit leider nicht am laufen!
Die IP schwankt ab und zu mal (sollte aber eigentlich nicht passieren) je nachdem wie oft ein Neustart des Device durchgeführt wird. (Bei jeder Änderung der Einstellung)
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

supernova1963

Nur zur Info:

da ich sehr an diesem fhem <-> mqtt Ansatz mit großem Interesse verfolge, habe eins meiner ESPEasy devices mal umkonfiguriert (s.u.).
Es funktioniert soweit. ESPEasy sendet jedoch nicht ganz so viele Daten, wie tasmota.
Die Befehle "URL:<espeasyip>/json" bzw. "URL:<espeasyip>/sysinfo" sind leider scheinbar nur für HTTP verfügbar.

Ergebnis (list <device>):
Internals:
   CID        ESPClient_5C_CF_7F_1D_F3_63
   DEF        ESPClient_5C_CF_7F_1D_F3_63
   DEVICETOPIC MQTT2_ESPClient_5C_CF_7F_1D_F3_63
   IODev      mqttserver
   LASTInputDev mqttserver
   MSGCNT     28
   NAME       MQTT2_ESPClient_5C_CF_7F_1D_F3_63
   NR         109
   STATE      0
   TYPE       MQTT2_DEVICE
   mqttserver_MSGCNT 28
   mqttserver_TIME 2018-08-25 07:41:02
   OLDREADINGS:
   READINGS:
     2018-08-25 07:41:01   Empfang         -44
     2018-08-25 07:41:00   Online          6
     2018-08-25 07:41:02   Schalter        0
     2018-08-25 07:35:05   lwl             online
Attributes:
   IODev      mqttserver
   alias      Dunstabzugshaube
   devStateIcon 1:radio_checked@#e56524:off 0:radio_unchecked:on .*:message_attention@red
   readingList ESPClient_5C_CF_7F_1D_F3_63:/fhem/03_Kueche/Dunstabzugshaube/tele/lwl:.* lwl
ESPClient_5C_CF_7F_1D_F3_63:/fhem/03_Kueche/Dunstabzugshaube/Status/Online:.* Online
ESPClient_5C_CF_7F_1D_F3_63:/fhem/03_Kueche/Dunstabzugshaube/Status/Empfang:.* Empfang
ESPClient_5C_CF_7F_1D_F3_63:/fhem/03_Kueche/Dunstabzugshaube/Strom/Schalter:.* Schalter
   room       MQTT2_DEVICE
   setList    on /fhem/03_Kueche/Dunstabzugshaube/cmd GPIO,5,0
off /fhem/03_Kueche/Dunstabzugshaube/cmd GPIO,5,1
   stateFormat Schalter


Gernot