Mqtt2server mit Home Assistant Verbindungsprobleme

Begonnen von andre07, 29 September 2026, 12:43:34

Vorheriges Thema - Nächstes Thema

andre07

Hallo zusammen,

ich betreibe FHEM mit MQTT2_SERVER als zentralen Broker. Daran hängen u. a. Zigbee2MQTT 2.14.0 separat auf einem Raspberry Pi mehrere OpenMQTTGateways und seit Kurzem Home Assistant in version 2026.9.3.

Bis vor Kurzem hat Home Assistant die Zigbee2 MQTT-Geräte per Discovery gefunden und angezeigt. Nach einem Update des HA-Containers funktioniert das nicht mehr: Es werden keine Geräte mehr angelegt, und bereits bekannte Geräte stehen auf "nicht verfügbar".

Die Ursachen liegen wahrscheinlich daran das neue HA-Versionen sich automatisch mit MQTT 5 verbinden, sobald der Broker das im CONNACK akzeptiert. Eine manuelle Einstellung auf 3.1.1 wird von HA beim Verbinden wieder auf 5 hochgestuft. Mit MQTT 5 kann HA die vom MQTT2_SERVER weitergeleiteten PUBLISH-Pakete offenbar nicht verarbeiten.

Im HA-Log erscheint folgender Fehler (über 6,5 Mio. Mal innerhalb weniger Stunden):

Logger: homeassistant
Quelle: components/mqtt/client.py:615

Error doing job: Exception in callback MQTT._async_reader_callback()() (task: None)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/mqtt/client.py", line 615, in _async_reader_callback
    if (status := client.loop_read(MAX_PACKETS_TO_READ)) != 0:
  File "/usr/local/lib/python3.14/site-packages/paho/mqtt/client.py", line 2100, in loop_read
    rc = self._packet_read()
  File "/usr/local/lib/python3.14/site-packages/paho/mqtt/client.py", line 3142, in _packet_read
    rc = self._packet_handle()
  File "/usr/local/lib/python3.14/site-packages/paho/mqtt/client.py", line 3808, in _packet_handle
    return self._handle_publish()
  File "/usr/local/lib/python3.14/site-packages/paho/mqtt/client.py", line 4123, in _handle_publish
    props, props_len = message.properties.unpack(packet)
  File "/usr/local/lib/python3.14/site-packages/paho/mqtt/properties.py", line 410, in unpack
    attr_type = self.properties[identifier][0]
KeyError: 123

123 ist der ASCII-Code für "{", also das erste Zeichen der JSON-Payload. Meine Vermutung (ohne es im Detail geprüft zu haben): Im PUBLISH-Paket an einen MQTT-5-Client fehlt die Property-Length (bzw. sie wird anders kodiert), sodass paho den Beginn der Payload als Property-Identifier liest.

Zusätzlich meldet HA beim Verbinden:

Logger: homeassistant.components.mqtt.client
Quelle: components/mqtt/client.py:1205

Your MQTT broker reports it does not support Subscription Identifiers, see https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901092. Please use a supported MQTT broker; got broker properties: [SessionExpiryInterval : 0, MaximumQoS : 1, RetainAvailable : 0, SubscriptionIdentifierAvailable : 0, SharedSubscriptionAvailable : 0]

(RetainAvailable : 0 erscheint nur, solange respectRetain nicht gesetzt ist; mit "attr MQTTServer respectRetain 1" fehlt dieser Eintrag.)

Weitere Beobachtungen:
- FHEM selbst empfängt alle Zigbee2MQTT-Nachrichten einwandfrei.
- mosquitto_sub auf dem FHEM-Rechner empfängt die Zigbee2MQTT-Nachrichten vom MQTTServer sowohl mit "-V mqttv311" als auch mit "-V mqttv5" korrekt, inkl. der Discovery-Topics unter homeassistant/#.
- Nachrichten der OpenMQTTGateways kamen in HA teilweise an, die von Zigbee2MQTT nie.
- In dieser Zeit hatte FHEM Verbindungsprobleme und ist einmal eingefroren. Ich vermute einen Zusammenhang mit den ständigen Fehlern bzw. Neuverbindungen von HA, kann das aber nicht belegen.

Versionen:
- MQTT2_SERVER
- MQTT2_DEVICE: 0.305090/2025-11-09
- Home Assistant: core 2026.9.3, Python 3.14, paho-mqtt (aus dem HA-Container)
- Zigbee2MQTT: 2.14.0

Könnte es sich jemand das bitte einmal ansehen? Falls MQTT 5 im MQTT2_SERVER nur teilweise unterstützt wird, wäre alternativ eine Option hilfreich, mit der der Server MQTT-5-Verbindungen ablehnt. HA würde dann auf 3.1.1 zurückfallen. Wenn ich weitere Logs liefern soll vomMQTTServer, mache ich das gern.

Vielen Dank und viele Grüße
Andre

PeterLustig

Es wird Dir in der Sache nicht weiterhelfen, aber ich kann das Fehlerbild bestätigen.

Home Assistant meines Sohnes wollte sich nur noch per V5 mit meinem MQTT2_SERVER verbinden, die Vorgabe V3.1.1 hat sich immer wieder auf V5 geändert. Wir hatten die gleichen Fehlermeldungen zu den Subscription Identifiers.
Letztendlich konnte ich das Problem nur durch einen externen Broker (Eclipse Mosquitto) lösen. Allerdings auch mit den Nachteilen, auf z.B. autocreate usw zu verzichten.

rudolfkoenig

Kann bitte einer von euch testen, ob durch aendern der Zeile
    if($hash->{protoNum} < 3 || $hash->{protoNum} > 5) {
in FHEM/00_MQTT2_SERVER.pm in
    if($hash->{protoNum} < 3) {
und spezifizieren von 3.1.1 in HA das Problem geloest wird?
Wenn ja dann werde ich ein passendes Attribut einbauen.

Auch das eigentliche Problem will ich beheben, aber dazu brauche ich ein Testprogramm, am besten ohne dafuer HA aufsetzen und konfigurieren zu muessen.
Womoeglich reicht auch ein python Programm...