MQTT2_DEVICE verliert Verbindung

Begonnen von dirk_69, 15 August 2025, 15:07:24

Vorheriges Thema - Nächstes Thema

dirk_69

Hallo zusammen,
ich habe vor einiger Zeit von MQTT auf MQTT2 umgestellt und bin bis auf einige kleine fehlende Features (z.B. QOS) ziemlich zufrieden.
Nur verliert gelegentlich ein MQTT2_DEVICE seine Verbindung zum Rest der Welt. Das ist inzwichen 4mal vorgekommen.(sorry für die Leienhaften Aussagen ... die Zusammenhänge innerhalb der MQTT2 Welt sind mir noch etwas unklar)

Meine Umgebung:
MQTT2_DEVICE -> MQTT2_Client -> Mosquitto-Lokal

MQTT2_DEVICE(s)
- wurden alle automatisch angelegt
- betroffen sind sowohl fast unferänderte als auch umbenannte Geräte (um bestehende MQTT-Clients zu ersetzen)
- es kommen einfach keine Daten mehr am MQTT2_DEVICE an
- andere MQTT2_DEVICEs funktionieren weiterhin
- IODev ist "meinMQTT2Client"
- Gerätelisting ist angehängt

MQTT2_Client
- ist mit dem lokal installierten Mosquitto verbunden
- wird "Show MQTT traffic" aktiviert, ist eigehender Traffic für das "tote" MQTT2_DEVICE zu sehen
- Gerätelisting ist angehängt

Was wurde unternommen:
- Forum-Suche brachte nur wenige Treffer (z.B. https://forum.fhem.de/index.php?topic=140700.msg1333158#msg1333158 "CID muss weg aus der readingList!" ... ist bei mir nicht drin würde ich sagen)
- FHEM Neustart -> kein Erfolg
- IODev = meinMQTT2Client als Attribut gesetzt & FHEM Neustart -> kein Erfolg
- mit Verbose = 5 auf beiden Geräten habe ich nichts gefunden
- RAW-Konfig Sichern -> Gerät löschen -> wird automatisch neu angelegt -> RAW-Konfig wieder einspielen -> ERFOLG

Gern würde ich das Zusammenspiel von MQTT2_Client und MQTT2_Device verstehen und eine Lösung finden, ein "verlorenes" Gerät wieder neu zu "binden" ohne es zu löschen.
Ich hoffe hier kann mir jemand helfen...
Danke Dirk

GeräteListings:
meinMQTT2Client
Internals:
   BUF        0�␂!fhem/sensors/WeMos_S17/tele/STATE{"Time":"2025-08-15T09:54:49","Uptime":"50T00:48:14","UptimeSec":4322894,"Heap":20,"SleepMode":"Dynamic","Sleep":25,"LoadAvg":39,"MqttCount":11,"POWER":"OFF","Wifi":{"AP":1,"SSId":"STV","BSSId":"00:1A:8C:9F:44:45","Channel":1,"Mode":"11n","RSSI":74,"Signal":-63,"LinkCount":1,"Downtime":"0T00:00:04"}}0�␁"fhem/sensors/WeMos_S17/tele/SENSOR{"Time":"2025-08-15T09:54:49","DS18B20":{"Id":"0316A18AECFF","Temperature":27.2},"TempUnit":"C"}0\&fhem/sensors/tasmota_ORBIS/tele/SENSOR{"Time":"2025-08-15T09:54:50","SML":{"curr_w":-107}}0\&fhem/sensors/tasmota_ORBIS/tele/SENSOR{"Time":"2025-08-15T09:54:51","SML":{"curr_w":-107}}0\&fhem/sensors/tasmota_ORBIS/tele/SENSOR{"Time":"2025-08-15T09:54:53","SML":{"curr_w":-103}}
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        127.0.0.1:1883
   DeviceName 127.0.0.1:1883
   FD         195
   FUUID      60a41e64-f33f-cdbc-e86c-44848fb0aacec7e9
   NAME       meinMQTT2Client
   NR         359
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   meinMQTT2Client
   eventCount 369
   lastMsgTime 1755244495.24859
   nextOpenDelay 10
   nrConnects 91
   .attraggr:
   .attrminint:
   .clientArray:
     MQTT2_DEVICE
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2025-08-15 09:53:28   lastPublish     fhem/sensors/tasmota_ORBIS/tmp/watt:-106
     2025-08-15 09:41:22   state           opened
Attributes:
   autocreate complex

new_Tasmota_Refoss_POW10
Internals:
   CID        new_Tasmota_Refoss_POW10
   DEF        new_Tasmota_Refoss_POW10
   FUUID      6807f845-f33f-cdbc-10ee-d5163ce60cee5f99
   IODev      meinMQTT2Client
   NAME       MQTT2_new_Tasmota_Refoss_POW10
   NR         673
   STATE      aktuell: 0.0 W <br/>Tag: 0.00 Kw/h<br/>Gestern: 0.000 Kw/h
   TYPE       MQTT2_DEVICE
   .DT:
     DEVICETOPIC MQTT2_new_Tasmota_Refoss_POW10
   .attreocr:
     ENERGY_ApparentPower:5
     .*
   .attreour:
     Button1_Action
   .attrminint:
     ENERGY_ApparentPower:600
     ENERGY_.*:3600
   .userReadings:
     HASH(0x55a25463a2a0)
     HASH(0x55a254639eb0)
     HASH(0x55a254639ef8)
     HASH(0x55a2546991d0)
     HASH(0x55a2545eb3a8)
     HASH(0x55a2545eb318)
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Channel_5  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   READINGS:
     2025-06-11 15:59:34   ANALOG_Temperature 17.7
     2025-04-23 21:52:25   BASE            1
     2025-06-10 21:10:38   BootCount       13
     2025-05-30 14:07:49   Button1_Action  SINGLE
     2025-04-23 21:52:25   DeviceName      Tasmota_Refoss_POW10
     2025-06-11 15:59:34   ENERGY_ApparentPower 0
     2025-06-11 15:59:34   ENERGY_Current  0.000
     2025-06-11 15:59:34   ENERGY_Factor   0.00
     2025-06-11 15:59:34   ENERGY_Period   0
     2025-06-11 15:59:34   ENERGY_Power    0
     2025-06-11 15:59:34   ENERGY_ReactivePower 0
     2025-06-11 15:59:34   ENERGY_Today    0.000
     2025-06-11 15:59:34   ENERGY_Total    3.488
     2025-06-11 15:59:34   ENERGY_TotalStartTime 2023-08-31T20:38:10
     2025-06-11 15:59:34   ENERGY_Voltage  0
     2025-06-11 15:59:34   ENERGY_Yesterday 0.000
     2025-04-23 21:52:25   Emulation       0
     2025-04-23 21:52:25   FLAG            0
     2025-06-10 21:10:38   FallbackTopic   cmnd/DVES_547829_fb/
     2025-04-23 21:52:25   FriendlyName1   Tasmota_Refoss_POW10
     2025-04-23 21:52:25   FriendlyName2   
     2025-04-23 21:52:25   FriendlyName3   
     2025-04-23 21:52:25   FriendlyName4   
     2025-04-23 21:52:25   FriendlyName5   
     2025-04-23 21:52:25   FriendlyName6   
     2025-04-23 21:52:25   FriendlyName7   
     2025-04-23 21:52:25   FriendlyName8   
     2025-04-23 21:52:25   GPIO_1          0
     2025-04-23 21:52:25   GPIO_10         224
     2025-04-23 21:52:25   GPIO_11         0
     2025-04-23 21:52:25   GPIO_12         0
     2025-04-23 21:52:25   GPIO_13         0
     2025-04-23 21:52:25   GPIO_14         4736
     2025-04-23 21:52:25   GPIO_2          0
     2025-04-23 21:52:25   GPIO_3          0
     2025-04-23 21:52:25   GPIO_4          3104
     2025-04-23 21:52:25   GPIO_5          1
     2025-04-23 21:52:25   GPIO_6          32
     2025-04-23 21:52:25   GPIO_7          0
     2025-04-23 21:52:25   GPIO_8          0
     2025-04-23 21:52:25   GPIO_9          1
     2025-06-10 21:10:38   GroupTopic      fhem/sensors/tasmotas/cmnd/
     2025-06-11 15:59:34   Heap            23
     2025-06-10 21:10:38   Hostname        Tasmota-Refoss-POW10-6185
     2025-06-10 21:10:38   INFO1_Info1_FallbackTopic cmnd/DVES_547829_fb/
     2025-06-10 21:10:38   INFO1_Info1_GroupTopic fhem/sensors/tasmotas/cmnd/
     2025-06-10 21:10:38   INFO1_Info1_Module Refoss-P11
     2025-06-10 21:10:38   INFO1_Info1_Version 14.6.0(release-tasmota-4M)
     2025-06-10 21:10:38   INFO2_Info2_Hostname Tasmota-Refoss-POW10-6185
     2025-06-10 21:10:38   INFO2_Info2_IPAddress 192.168.0.152
     2025-06-10 21:10:38   INFO2_Info2_WebServerMode Admin
     2025-06-10 21:10:38   INFO3_Info3_BootCount 13
     2025-06-10 21:10:38   INFO3_Info3_RestartReason Power On
     2025-08-14 17:59:26   IODev           meinMQTT2Client
     2025-06-10 21:10:38   IPAddress       192.168.0.152
     2025-07-13 21:21:07   LWT             Offline
     2025-06-11 15:59:34   LoadAvg         19
     2025-06-10 21:10:38   Module          Refoss-P11
     2025-06-11 15:59:34   MqttCount       23
     2025-04-23 21:52:25   NAME            Refoss-P11
     2025-06-11 14:10:52   POWER           
     2025-05-17 14:31:18   POWER1          0
     2025-06-11 15:22:34   Power           0
     2025-06-10 21:10:38   RestartReason   Power On
     2025-04-23 21:52:25   SetOption128    off
     2025-04-23 21:52:25   SetOption3      on
     2025-06-11 15:59:34   Sleep           50
     2025-06-11 15:59:34   SleepMode       Dynamic
     2025-06-11 15:59:34   TempUnit        C
     2025-06-11 15:59:34   Time            2025-06-11T15:59:33
     2025-04-26 22:23:07   Timer10_Action  0
     ...
     2025-04-26 22:23:07   Timer9_Window   0
     2025-04-26 22:23:07   Timers          on
     2025-06-11 15:22:34   Today           0.000
     2025-06-11 15:22:34   Total           3.488
     2025-06-11 15:59:34   Uptime          0T18:49:14
     2025-06-11 15:59:34   UptimeSec       ???
     2025-06-10 21:10:38   Version         14.6.0(release-tasmota-4M)
     2025-04-23 21:52:25   WebPassword     ****
     2025-06-10 21:10:38   WebServerMode   Admin
     2025-06-11 15:59:34   Wifi_AP         2
     2025-06-11 15:59:34   Wifi_BSSId      06:1A:8C:D0:E7:61
     2025-06-11 15:59:34   Wifi_Channel    1
     2025-06-11 15:59:34   Wifi_Downtime   0T00:00:17
     2025-06-11 15:59:34   Wifi_LinkCount  1
     2025-06-11 15:59:34   Wifi_Mode       11n
     2025-06-11 15:59:34   Wifi_RSSI       46
     2025-06-11 15:59:34   Wifi_SSId       STV
     2025-06-11 15:59:34   Wifi_Signal     -77
     2025-06-11 15:22:34   Yesterday       0.000
     2025-07-18 10:26:54   activ           inactive
     2025-08-15 09:53:22   associatedWith  mein_MQTT2_DEVICE_2
     2025-07-18 10:26:54   state           inactive
     2025-05-30 14:07:49   tmp             SINGLE
     2025-06-11 15:59:34   uptime          67754
Attributes:
   DbLogInclude POWER,POWER1,Power,Yesterday,Today,uptime,Total
   IODev      meinMQTT2Client
   alias      Refoss_POW10 - PflanzenAufzucht
   event-min-interval ENERGY_ApparentPower:600,ENERGY_.*:3600
   event-on-change-reading ENERGY_ApparentPower:5,.*
   event-on-update-reading Button1_Action
   icon       measure_power
   jsonMap    POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 Channel_5:0 HSBColor:0 Color:0
   model      tasmota_basic_state_power1
   readingList fhem/sensors/Tasmota_Refoss_POW10/tele/LWT:.* LWT
fhem/sensors/Tasmota_Refoss_POW10/tele/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/tele/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/tele/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/tele/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/stat/POWER1:.* state
fhem/sensors/Tasmota_Refoss_POW10/stat/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/cmnd/POWER1:.* POWER1
fhem/sensors/Tasmota_Refoss_POW10/cmnd/POWER:.* POWER
fhem/sensors/Tasmota_Refoss_POW10/stat/POWER2:.* POWER2
fhem/sensors/Tasmota_Refoss_POW10/stat/POWER3:.* POWER3
fhem/sensors/Tasmota_Refoss_POW10/tele/INFO1:.* { json2nameValue($EVENT, 'INFO1_', $JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/tele/INFO2:.* { json2nameValue($EVENT, 'INFO2_', $JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/tele/INFO3:.* { json2nameValue($EVENT, 'INFO3_', $JSONMAP) }
fhem/sensors/Tasmota_Refoss_POW10/stat/UPGRADE:.* { json2nameValue($EVENT, 'UPGRADE_', $JSONMAP) }
   readingsWatcher 3600,???,UptimeSec
   room       6.2_Strom,8.2_ESP,MQTT2_DEVICE
   setList    off:noArg    fhem/sensors/Tasmota_Refoss_POW10/cmnd/POWER1 0
on:noArg     fhem/sensors/Tasmota_Refoss_POW10/cmnd/POWER1 1
toggle:noArg fhem/sensors/Tasmota_Refoss_POW10/cmnd/POWER1 2

   setStateList on off toggle
   stateFormat {sprintf("aktuell: %.1f W <br/>Tag: %.2f Kw/h<br/>Gestern: %.3f Kw/h", ReadingsVal($name,"ENERGY_Power",undef), ReadingsVal($name,"ENERGY_Today",undef), ReadingsVal($name,"ENERGY_Yesterday",undef))}
   userReadings tmp:Button1_Action.* {
  if(ReadingsVal("$NAME","Button1_action",0) eq "xxxDOUBLE" ) { fhem("set $NAME on-for-timer 3600") ; return "DOUBLE"} ;
  if(ReadingsVal("$NAME","Button1_Action",0) eq "SINGLE" ) { return "SINGLE"} ;
  if(ReadingsVal("$NAME","Button1_Action",0) eq "DOUBLE" ) { return "DOUBLE"} ;
  if(ReadingsVal("$NAME","Button1_Action",0) eq "TRIPLE" ) { return "TRIPLE"} ;
  return "keine Aktion erkannt";
},

uptime:UptimeSec:.* {ReadingsVal($NAME,"UptimeSec",0)},
Power:ENERGY_Power:.* {ReadingsVal($NAME,"ENERGY_Power",0)},
Today:ENERGY_Today:.* {ReadingsVal($NAME,"ENERGY_Today",0)},
Yesterday:ENERGY_Yesterday:.* {ReadingsVal($NAME,"ENERGY_Yesterday",0)},
Total:ENERGY_Total:.* {ReadingsVal($NAME,"ENERGY_Total",0)},

list TYPE=autocreate
Internals:
   FUUID      5c44d122-f33f-ed2c-aadb-6087bfce32d48acd
   NAME       autocreate
   NOTIFYDEV  global
   NR         40
   NTFY_ORDER 50-autocreate
   STATE      active
   TYPE       autocreate
   received:
     SD_UT:
        TC6861 97F_2:
         1755244131.03334 1
         1755244167.54018 1
Attributes:
   disable    0
   filelog    ./log/%NAME-%Y.log
   room       9.4_System -> Settings

Beta-User

BUF am IO sieht seltsam aus.

cmnd-Topics sollte man m.E. nicht abonnieren (Schleifengefahr!).

Ansonsten sollte das eigentlich klappen, wenn tatsächlich passende Topics kommen. Da das template anscheinend andere Topics (mit new_) gesehen hat, kann es sein, dass da mal was geändert wurde.
Unklar ist auch, ob mosquitto irgendwelche Alt-Daten gepuffert hatte (retain). Die kommen dann einmalig bei jeder neuen Verbindung....
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

ZitatBUF am IO sieht seltsam aus.
Finde ich auch.

Wenn bei Copy&Paste nichts schiefgegangen ist, dann kamen laut BUF Zeile zwei MQTT Publish Nachrichten, mit jeweils unerlaubter Nachrichtenlaenge (bei den Bytes 2-5 ist das oberste Bit jeweils gesetzt).
Eine kaputte Laenge sollte laut Programmcode zu einem Abbruch der Verbindung zu mosquitto fuehren, wobei BUF entfernt wird.
Damit haette man BUF aber uns nicht zeigen koennen. Doch ein Kopierfehler?


Ich wuerde testweise statt (mosquitto+MQTT2_CLIENT) den MQTT2_Server aktivieren.
Eine Fehlerquelle weniger.

dirk_69

Hallo,
Danke für eire Aufmerksamkeit.
Ich halte eine Copy&paste Fehler für Unwahrscheinlich aber nicht ausgeschlossen, da der ganze Block incl. "Internals" als ganzes kopiert wurde.
Ich zwischenzeitlich war das Internal "BUF" mal ganz weg, jetzt ist es wieder da, aber leer.
Aktuell ist/bleibt es leer. Trotzdem funktioniert das Device noch immer nicht.

im Event-log erhalte ich Einträge, wie für andere (funktionierende) Geräte auch:
2025.08.16 10:24:22 4: meinMQTT2Client received PUBLISH
2025.08.16 10:24:22 5: meinMQTT2Client: received PUBLISH (0),fhem/sensors/Tasmota_Refoss_POW10/tele/STATE{"Time":"2025-08-16T10:24:22","Uptime":"6T01:32:11","UptimeSec":523931,"Heap":23,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","Wifi":{"AP":2,"SSId":"STV","BSSId":"06:1A:8C:D0:E7:61","Channel":1,"Mode":"11n","RSSI":82,"Signal":-59,"LinkCount":1,"Downtime":"0T00:00:04"}}
2025.08.16 10:24:22 5: meinMQTT2Client: dispatch autocreate=complex\000meinMQTT2Client\000fhem/sensors/Tasmota_Refoss_POW10/tele/STATE\000{"Time":"2025-08-16T10:24:22","Uptime":"6T01:32:11","UptimeSec":523931,"Heap":23,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","Wifi":{"AP":2,"SSId":"STV","BSSId":"06:1A:8C:D0:E7:61","Channel":1,"Mode":"11n","RSSI":82,"Signal":-59,"LinkCount":1,"Downtime":"0T00:00:04"}}
2025.08.16 10:24:22 4: meinMQTT2Client received PUBLISH
2025.08.16 10:24:22 5: meinMQTT2Client: received PUBLISH (0)-fhem/sensors/Tasmota_Refoss_POW10/tele/SENSOR{"Time":"2025-08-16T10:24:22","ANALOG":{"Temperature":21.7},"ENERGY":{"TotalStartTime":"2023-08-31T20:38:10","Total":3.488,"Yesterday":0.000,"Today":0.000,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":0.00,"Voltage":0,"Current":0.000},"TempUnit":"C"}
2025.08.16 10:24:22 5: meinMQTT2Client: dispatch autocreate=complex\000meinMQTT2Client\000fhem/sensors/Tasmota_Refoss_POW10/tele/SENSOR\000{"Time":"2025-08-16T10:24:22","ANALOG":{"Temperature":21.7},"ENERGY":{"TotalStartTime":"2023-08-31T20:38:10","Total":3.488,"Yesterday":0.000,"Today":0.000,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":0.00,"Voltage":0,"Current":0.000},"TempUnit":"C"}
2025.08.16 10:24:22 4: meinMQTT2Client received PUBLISH
2025.08.16 10:24:22 5: meinMQTT2Client: received PUBLISH (0)&fhem/sensors/tasmota_ORBIS/tele/SENSOR{"Time":"2025-08-16T10:24:22","SML":{"curr_w":335}}
2025.08.16 10:24:22 5: meinMQTT2Client: dispatch autocreate=complex\000meinMQTT2Client\000fhem/sensors/tasmota_ORBIS/tele/SENSOR\000{"Time":"2025-08-16T10:24:22","SML":{"curr_w":335}}
2025.08.16 10:24:24 5: meinMQTT2Client: sending PINGREQ (192)(0)
2025.08.16 10:24:24 4: meinMQTT2Client received PINGRESP
2025.08.16 10:24:24 5: meinMQTT2Client: received PINGRESP

TomLee

#4
Hallo,

ZitatIch wuerde testweise statt (mosquitto+MQTT2_CLIENT) den MQTT2_Server aktivieren.
Eine Fehlerquelle weniger.

  • sudo systemctl stop mosquitto
  • define <name> MQTT2_SERVER 1883
  • ggf. Anmeldedaten anpassen (im Pow) oder am Server konfigurieren.

Verhält sich mit Verwendung des MQTT2_SERVER gleich?

Gruß Thomas


rudolfkoenig

Zitatim Event-log erhalte ich Einträge, wie für andere (funktionierende) Geräte auch:
Werden in diesem Fall die Readings fuer new_Tasmota_Refoss_POW10 aktualisiert?
Wenn nein, dann funktioniert die Verbindung zwischen FHEM und mosquitto, und das Problem ist irgendwo zwischen MQTT2_CLIENT und MQTT2_DEVICE zu suchen.


Zitatsudo systemctl stop mosquitto
define <name> MQTT2_SERVER 1883
ggf. Anmeldedaten anpassen (im Pow) oder am Server konfigurieren.
Damit das Senden (von FHEM Richtung Tasmota) funktioniert, sollte man zusaetzlich
- entweder delete meinMQTT2Client
- oder attr meinMQTT2Client disable 1; attr new_Tasmota_Refoss_POW10 IODev <MQTT2_SERVER Instanz>