MQTT2_SERVER mit MQTT v5 Protokoll support ?

Begonnen von hasselh, 09 Juni 2024, 11:59:36

Vorheriges Thema - Nächstes Thema

hasselh

Hallo @rudolfkoenig

für meine Shellys hab ich bei mir den MQTT2_SERVER im Einsatz. Jetzt habe ich mir den Mitsubishi Electric Air-to-Air HVAC von ProtoART installiert und wollte den über MQTT in mein FHEM einbinden. Aber leider bekomme ich den nicht zum Laufen, da die Kommunikation bereits beim CONNECT fehlschlägt:

2024.06.09 09:50:54 4: Connection accepted from mqtt_192.169.0.124_59955
2024.06.09 09:50:54 5: in@192.169.0.124:59955 CONNECT: (16)(214)(1)(0)(4)MQTT(5)(206)'(16)B(17)(0)(0)(0)(10)'(0)(0)(4)(0)!(255)(255)"(0)(2)(25)(1)(23)(1)&(0)(5)board(0)(12)ClimaControl&(0)(1)u(0)(4)user&(0)(1)p(0)(8)password(0)(11)HVAC_117750T(24)(0)(0)(0)(10)(1)(1)(2)(0)(0)(0)(10)(8)(0)(14)/test/response(9)(0)(6)123456&(0)(5)board(0)(12)ClimaControl&(0)(1)u(0)(4)user&(0)(1)p(0)(8)password(0)(11)/topic/will(0)(12)i will leave(0)(5)admin(0)(3)...
2024.06.09 09:50:54 5: out@192.169.0.124:59955 CONNACK:  (2)(0)(1)
2024.06.09 09:51:09 4: Connection accepted from mqtt_192.169.0.124_59957
2024.06.09 09:51:09 5: in@192.169.0.124:59957 CONNECT: (16)(214)(1)(0)(4)MQTT(5)(206)'(16)B(17)(0)(0)(0)(10)'(0)(0)(4)(0)!(255)(255)"(0)(2)(25)(1)(23)(1)&(0)(5)board(0)(12)ClimaControl&(0)(1)u(0)(4)user&(0)(1)p(0)(8)password(0)(11)HVAC_117750T(24)(0)(0)(0)(10)(1)(1)(2)(0)(0)(0)(10)(8)(0)(14)/test/response(9)(0)(6)123456&(0)(5)board(0)(12)ClimaControl&(0)(1)u(0)(4)user&(0)(1)p(0)(8)password(0)(11)/topic/will(0)(12)i will leave(0)(5)admin(0)(3)...
2024.06.09 09:51:09 5: out@192.169.0.124:59957 CONNACK:  (2)(0)(1)
[...]

Die Logik dafür im 00_MQTT2_SERVER.pm ist:

    if($hash->{protoNum} > 4) {
      return MQTT2_SERVER_out($hash, pack("C*", 0x20, 2, 0, 1), $dump,
                                sub{ CommandDelete(undef, $hash->{NAME}); });
    }

Verstehe ich das richtig, dass MQTT v5 leider noch nicht im MQTT2_SERVER implementiert ist und ich für Clients die zwingend MQTT V5 verwenden, einen externen Broker (z.B. Mosquitto) vor das FHEM hängen muss ?

Gruss & Danke,  hasselh

rudolfkoenig


hasselh

Vielen lieben Dank @rudolfkoenig für diese super schnelle Antwort.

Ein kleiner Verbesserungsvorschlag, der mir die Fehlersuche sehr erleichtert hätte, wäre diese zusätzliche Zeile:

    if($hash->{protoNum} > 4) {
      Log3 $sname, 3, "$cname MQTT protocol v$hash->{protoNum} not Supported";
      return MQTT2_SERVER_out($hash, pack("C*", 0x20, 2, 0, 1), $dump,
                                sub{ CommandDelete(undef, $hash->{NAME}); });
    }

Gruss & Danke,  hasselh

rudolfkoenig

Danke fuer die Anregung, habs eingebaut.