MQTT-Bug alle 2K+ CAMs

Hallo, nach einer längeren MQTT-Debug Sitzung ist mir folgender Fehler (im MQTT-Explorer verifiziert und reproduzierbar) aufgefallen:

Da ich einen externen MQTT-Broker benutze (Mosquitto), habe ich dort einen strukturierten Baum für MQTT-Geräte und HomeAssistant geschaffen. Die INSTAR CAMs sind dort ebenfalls über die ‚externe Broker‘ Konfiguration integriert. Als Klient-Konfiguration ist dort über die WebUI ‚MQTT-Topic-Prefix‘ = ‚myXYZ/cameras‘ und ‚MQTT-Klient-ID‘ = ‚CAM-4‘ eingetragen.
Das ganze funktioniert ‚lesend‘ soweit. Will ich jedoch z.B. einen (Schalter-) Wert über MQTT ändern, so sehe ich zwar den Baum-Eintrag im MQTT-Explorer auftauchen, aber die Kamera reagiert nicht. Publish Beispiel im MQTT-Explorer:
Topic: myXYZ/CAM-4/alarm/actions/enable
JSON: {‚val‘:‚1‘}

Es hat sich herausgestellt, dass der ‚MQTT-Topic-Prefix‘ keinen Unterpfad mit ‚/‘ enthalten darf !!

Mit der Eingabe ‚MQTT-Topic-Prefix‘ = ‚myXYZ‘ funktioniert dann auch der schreibende Zugriff auf die Kamera.

Mit dem Erhöhen der Zeichenanzahl auf 48 Zeichen im letzten Firmware-Update, sollte diese Fehlermeldung jetzt öfter auftauchen … Es wäre schön, wenn das ebenfalls kurzfristig gefixt werden könnte. DANKE!!

Danke schon mal für die Mitteilung Deiner Erkenntnisse hier im Forum. :+1:

EDIT: Da bei der ganzen MQTT-Programmierung ohnehin etliche Unterverzeichnisse und damit Slashes auf dem Schirm stehen, hätte man daran nicht gedacht.

Gerade getestet und kann das Problem nicht nachstellen. Wenn man es per CGI Befehl setzt, muss man den Slash natürlich encoden:

/param.cgi?cmd=setmqttattr&mq_prefix=hello%2Fworld%2Fcameras

Aber über die WebUI gehts direkt und ohne Probleme:

Es geht nicht um die CGI-Befehle, sondern um MQTT Publish Befehle - bitte meine Fehlerbeschreibung lesen - Danke !!!

Schon mal beim publishen anstelle „/“ „%2F“ eingetragen? Also Escape-Codes benutzt?

??? … Escape-Code für topic level seperator in MQTT Pfaden ???
Ich habe eine Integration für INSTAR 2k+ Kameras für Home Assistant geschrieben. Dort habe ich die Escape-Sequenz eingesetzt … hat zur Folge, dass die Kamera über MQTT als nicht mehr aktiv gemeldet wird … logisch: es wird ja über den selben ‚escapten‘ Pfad auch die Status-Abfrage generiert …

Hier mal ein Snapshot …

Auch per MQTT kann ich das Problem nicht nachstellen:

Hier wurde die mq_prefix Variable von cameras auf hello/world/cameras geändert. Der Broker startet daraufhin kurz neu und die Kamera ist im Anschluss über das neue Päfix online.

Wir haben allerdings ein Problem mit dem Mosquitto Broker festgestellt. Wenn man das Präfix des Kamera Clients ändert werden eingehende Befehle nicht mehr verarbeitet:

Wenn der externe Broker ein Mosquitto ist mal probieren ob das stoppen des Brokers, löschen der db Datei und erneute starten des Brokers das Problem löst.

Wir schauen gerade was dieses Problem mit dem internen Broker der Kamera verursacht.

Über virtuelle Maschine aufgesetzer ‚leerer‘ Mosquitto 2.011 (Debian) … dann die Kamera mit dem Mosquitto Broker verbunden (der Klient-Eintrag war schon mit Pfad-Angabe gesetzt) … alle MQTT Einträge liefen korrekt in den Broker … dann mit Topic: myHOME/cameras/CAM-4/alarm/actions/enable und JSON: {‚val‘:‚1‘} über den MQTT-Explorer gesendet … im Broker ist der Topic zu sehen, jedoch die Kamera schaltet die Alarm Einstellung nicht um …


Wird der Klient-Topic-Präfix auf ‚myHOME‘ umgestellt (im Broker wird ein neuer MQTT-Baum der Kamera erzeugt) und wird der Topic: myHOME/CAM-4/alarm/actions/enable und JSON: {‚val‘:‚1‘} über den MQTT-Explorer gesendet … funktioniert die Alarm-Einstellung …

Ist m.E. also kein Mosquitto Fehler …

Hierzu mal eine Ergänzung: Man kann den MQTT-Topic bei der 9420 in der Kamera offenbar nicht mit einem „/“ beginnen (genutzt externer Mosquitto). Status-Meldungen kommen zwar im Mosq an, zu senden geht aber gar nix. Hat mich ein paar Stunden gekostet. „/“ als erstes Zeichen entfernt, und schon kann man auch senden. Bei meiner älteren 8015 war das kein Problem…

2 „Gefällt mir“