[solved] mqtt broker Problem mit "#"?

Hier bitte alles rein was Off-topic ist.

Moderatoren: Cyrelian, seppy

Antworten
Asus
Beiträge: 25
Registriert: 27. Dez 2018 22:31

[solved] mqtt broker Problem mit "#"?

Beitrag von Asus »

Hallo zusammen!

Ich bin auf ein Problem gestoßen, das ich im Moment noch nicht festmachen kann, woher es überhaupt kommt.
Ich lese einen Victron MPPT via ve.direct (text) ein. Das funktioniert alles bestens.
Victron an Arduino UNO und Software Serial. Debuggen mit Hardware Serial.

Jetzt schicke ich diese Daten via MQTT an den RasPi mit Openhab und Mosquitto.

Code: Alles auswählen

PV/stat/PID 0xA055
PV/stat/FW 154
PV/stat/SER HQ1810SGSW1
PV/stat/V 23770
PV/stat/I -110
PV/stat/VPV 10
PV/stat/PPV 0
PV/stat/CS 0
PV/stat/MPPT 0
PV/stat/OR 0x00000001
PV/stat/ERR 0
PV/stat/LOAD ON
PV/stat/IL 100
PV/stat/H19 1197
PV/stat/H20 0
PV/stat/H21 0
PV/stat/H22 21
PV/stat/H23 141
PV/stat/HSDS 35
Das wiederholt sich dann alle 10sec, die einzelnen Werte haben jeweils 1sec Verzögerung.

Speicher Überschneidungen, Memory overflow ... möchte ich im Moment als Ursache ausschalten.

So, was passiert?

Arduino schickt via MQTT die Werte. - alles bestens - bis....
Wenn die SERIAL NUMBER vom Victron herein kommt ist das SER# HQ1810SGSW1
Schicke ich das so via MQTT weiter, kommt das nie an? Zumindest sehe ich das am RaspPi, wo ich mich im Topic "PV/#" substribed habe, nicht.
Auch alle weiteren Werte kommen nicht an.
Erst wieder, wenn der Zyklus wieder von vorne startet (jedesmal mit reconnect, bin mir jedoch nicht sicher ob überhaupt deconnected war?)
gehts mit

Code: Alles auswählen

PV/stat/PID 0xA055
PV/stat/FW 154
wieder los. Bis zum Topic mit # (SER#) und dann steht wieder die MQTT Ausgabe. (Arduino arbeitet weiter, alle Werte kommen via hardware serial im debug auch weiterhin an)
Nehme ich das # aus dem Topicnamen, funktioniert alles absolut problemlos.

Frage:
* Wie kann ich ohne substrcribe überprüfen, was der broker aufnimmt?
* Kann ich überprüfen, was wirklich am Netzwerk gesendet wird?
* Ist es bekannt, das ein Topic kein # beinhalten darf?
* Wenn hier nicht der richtige Platz für diese Frage ist, wo sollte ich speziell fragen, da es mir keine OH relevante Frage zu sein scheint.

Danke euch fürs Lesen und vielleicht Antworten,
Andi
*
Zuletzt geändert von Asus am 16. Mär 2021 14:38, insgesamt 1-mal geändert.
Verwende openHAB 2.5.10-1 auf RasPi

Benutzeravatar
udo1toni
Beiträge: 13857
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: mqtt broker Problem mit "#"?

Beitrag von udo1toni »

Ein Topic darf kein # enthalten, das ist ein verbotenes Zeichen. Beim Subscribe bedeutet #, dass ab hier alles egal ist. Du kannst also PV/stat/# subscriben, um alle Topics unterhalb PV/stat/ zu empfangen. Das # muss allein stehen (also nach einem / oder auch komplett allein).
Gleiches gilt für das +, dies ist die Wildcard für eine einzelne Topic Ebene. Gegeben seien folgende Topics:

Code: Alles auswählen

gerät1/stat/POWER
gerät2/stat/POWER
gerät3/stat/POWER
gerät1/stat/INFO
gerät2/stat/INFO
gerät3/stat/INFO
gerät1/cmnd/POWER
gerät2/cmnd/POWER
gerät3/cmnd/POWER
gerät1/cmnd/set
gerät2/cmnd/set
gerät3/cmnd/set
Nun kann man mittels # alle Topics auf einen Schlag subscriben (das ist sehr praktisch bei Verwendung eines mqtt Sniffers wie mqtt.fx oder mqtt spy), genauso aber auch +/stat/POWER um die drei obersten Topics zu subscriben oder auch gerät1/+/POWER um sowohl die Befehle (cmnd) als auch den Zustand (stat) vom POWER-Kanal von gerät1 zu subscriben, oder gerät2/# um alles von gerät2 zu subscriben...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Asus
Beiträge: 25
Registriert: 27. Dez 2018 22:31

Re: mqtt broker Problem mit "#"?

Beitrag von Asus »

Danke udo1toni

Jetzt ist alle klar und erklärt. Habe mir das eh auch gedacht, aber schön ist es sicher zu sein.

Danke, solong!
Verwende openHAB 2.5.10-1 auf RasPi

Antworten