zigbee2mqtt mqtt v5

Begonnen von kl_ha, 14 Januar 2025, 16:52:45

Vorheriges Thema - Nächstes Thema

kl_ha

Moin

Ich habe Fhem und zigbee2mqtt im Docker Container zu laufen.
Seit einigen Tagen mault zigbee2mqtt rum, das er nur noch mqtt v5 laufen möchte.
Leider funktioniert mqtt2server nicht mit mqtt v5 weil es nur mqtt v4 unterstützt.
Nun muss ich wieder über mosquitto mir die Daten von zigbee2mqtt holen.

Meine Frage gibt es eine Möglichkeit, die Daten die über mosquitto laufen, so zu
konvertieren als wäre es eine Ausgabe/Eingabe von mqtt2server?

Wenn ja wie geht das oder gibt es da ein Tutorial? 

Gruß
Klaus

passibe

#1
Wo mault das?
Bei mir mault nix.

Starting Zigbee2MQTT without watchdog.
[2025-01-14 17:13:37] info:     z2m: Logging to console, file (filename: log.log)
[2025-01-14 17:13:37] info:     z2m: Starting Zigbee2MQTT version 2.0.0 (commit #060ae99cff715cc9ef6a0cfa7cae0cdcb17f0c8a)
[...]
[2025-01-14 17:13:37] info:     z2m: Connecting to MQTT server at mqtt://ha_fhem
[2025-01-14 17:13:37] info:     z2m: Connected to MQTT server

Mein MQTT2_SERVER sieht (ohne kosmetische Sachen wie icon, room, etc.) ganz einfach so aus:
defmod MQTT MQTT2_SERVER 1883 global
attr MQTT autocreate no

EDIT: Sehe grade, dass seit dem Update auf zigbee2mqtt v2 ganz unten in meiner configuration.yaml ein Eintrag "version: 4" aufgetaucht ist. Hab das nicht manuell hinzugefügt. Aber liegt dann wohl daran, dass ich davon, auch beim upgraden, nichts gemerkt habe.
Wieso das bei dir nicht automatisch passiert ist, keine Ahnung.


EDIT2: Ok nevermind, das "version" ist nicht unter "mqtt:". Das top-level-element "version" bezieht sich rein auf die Version der configuration.yaml und dient zur automatischen Migration, hat nichts mit MQTT zu tun und steht gerade nur zufällig auf 4 (siehe: https://www.zigbee2mqtt.io/guide/configuration/configuration-update.html)
Dann verstehe ich aber nicht, wieso bei mir nichts meckert. Meine mqtt-config sieht so aus:
mqtt:
  client_id: zigbee
  base_topic: z2m
  server: '!secret.yaml server'
  user: '!secret.yaml user'
  password: '!secret.yaml password'

EDIT3: version 4 ist der defaultwert. Deshalb habe ich keine Meldung/Warnung bekommen. Aus der Doku:
Zitat# Optional: MQTT protocol version (default: 4), set this to 5 if you
# use the 'retention' device specific configuration

rudolfkoenig

ZitatSeit einigen Tagen mault zigbee2mqtt rum, das er nur noch mqtt v5 laufen möchte.
Laut Doku: https://www.zigbee2mqtt.io/guide/configuration/mqtt.html kann man das ihm abgewoehnen, siehe das version Attribut.

ZitatMeine Frage gibt es eine Möglichkeit, die Daten die über mosquitto laufen, so zu
konvertieren als wäre es eine Ausgabe/Eingabe von mqtt2server?
Der MQTT2_SERVER verfuegt zusaetzlich ueber die MQTT ClientID, das wird in readingList automatisch eingepflegt.
Falls man die ClientIDs in allen readingList entfernt (in jeder Zeile alles bis zum und inklusive den ersten Doppelpunkt), dann sollte MQTT2_CLIENT als Ersatz fuer alle bekannten Geraete und Topics funktionieren. Es sei denn es existieren mehrere MQTT-Clients mit gleichem Topic.

Neue Readings bzw. neue Geraete konfiguriert man manuell oder man pflegt ein bridgeRegexp Attribut.
Beim MQTT2_SERVER entfaellt diese Aufgabe.



kl_ha

Wenn ich direkt an den mqtt2server der auf port 1887 läuft.

z2m: Connecting to MQTT server at mqtt://meine ip:1887

[2025-01-14 18:25:51] error: z2m: MQTT failed to connect, exiting... (Connection refused: Unacceptable protocol version)

Unter mosquitto habe ich da keine Probleme, der läuft über port 1883.

passibe

#4
Wenn du unter mqtt version: 4 einträgst, so wie unter dem Link aus Rudis Post vorgeschlagen, ändert sich dann was?

Sehe aber gerade, dass 4 ohnehin der defaultwert ist. Erklärt dann auch, wieso ich keine Meldung bekommen habe.

Ich denke, bei dir ist irgendetwas anderes falsch. Sicher, dass auf Port 1887 vom MQTT2_SERVER "gelauscht" wird? Was sagt
sudo ss -tlpn | grep LISTENKönnen sich andere MQTT-Geräte problemlos mit 1887/MQTT2_SERVER verbinden und Nachrichten übermitteln?

Sagt das FHEM-Log irgendwas, wenn du den MQTT2_SERVER auf verbose stellst und z2m neustartest?

Ist dein FHEM aktuell?

rudolfkoenig

ZitatConnection refused: Unacceptable protocol version

Das sagt mir, dass die TCP-Verbindung auf dem konfigurierten Port zustandegekommen ist, und der Client vom Server danach abgewiesen wurde, wegen der nicht unterstuetzten Protokollversion.

kl_ha

Hab Vergessen zu erwähnen das Fhem und zigbee2mqtt auf zwei verschiedenen Raspi's laufen.
Hat jahrelang gut geklappt.
Meine Shellys und andere Geräte laufen wunderbar über mqtt2_server Port 1887.
Bis vor einigen Tagen liefen die zigbee2mqtt Geräte auch wunderbar, bis ich dann ein Update(Image)
von zigbee2mqtt gemacht hatte.

passibe

Hast du denn sämtliche anderen Anpassungen wie unter https://github.com/Koenkk/zigbee2mqtt/discussions/24198 beschrieben vorgenommen?
Wobei, wenn es mit mosquitto funktioniert, sollte es ja eigentlich nicht daran liegen.

Gib uns doch mal
1. deine configuration.yaml (auszugsweise, z.B. ohne devices.)
2. noch, wie gesagt, die Logeinträge von MQTT2_SERVER (mit attr verbose 5), sowie der Vollständigkeit halber
3. ein list von deinem MQTT2_SERVER und
4. das vollständige Log von z2m, wenn es startet.