NEWS
MQTT Topic wird unterschiedlich gesendet
-
Hallo!
Ich hab MQTT Broker/Client als Client installiert und bei den "MQTT Einstellungen" unter "Prefix für alle Topics" iobroker/ eingestellt. "Publish nur bei Änderung" hab ich nicht ausgewählt, "Bekanntgeben eigene States beim Verbinden" schon.
Als MQTT-Server hab ich Mosquitto auf einem anderen Linuxrecher laufen und schaue dort mit "mosquitto_sub -v -t +/#" mit, was so alles an Topics daher kommt.
Nach einem Start oder Neustart werden die Topics dann in der Form "iobroker/xxx/yyy" ausgegeben, bei einem Update des zugehörigen Objects dann aber als "iobroker/iobroker/xxx/yyy".
Der Prefix wird also 2x vorgesetzt!
Hab ich jetzt irgend einen Verständnisfehler oder ist das ein Fehler vom MQTT?
Interessant ist übrigens auch, dass ioBroker in der Adapter-Liste als installierte Version 1.5.0 anzeigt, als Verfügbar aber 1.4.1
Sabine
-
oder ist das ein Fehler vom MQTT? `
ich arbeite mich gerade etwas in MQTT ein, aber mit prefixes habe ich noch nicht gearbeitet.Allerdings habe auch ich seltsame Dinge bemerkt.
viewtopic.php?f=22&t=12894&p=139601#p136762
Vielleicht lassen sich da ja die Issues eingrenzen.
Gruß
Rainer
-
Wenn ich Prefix leer lasse wird übrigens immer nur "xxx/yyy" gesendet. Schaut für mich also danach aus, dass beim Posten eines Updates der Prefix 2x vorgesetzt wird, beim Bekanntgeben der States beim Verbinden aber nur 1x.
lg, Sabine
-
Ich hab mir mal im Verzeichnis /opt/iobroker/node_modules/iobroker.mqtt/lib die beiden Programme client.js und common.js angeschaut.
In client.js in der function send2Server wird u.a.:
convertID2topic(obj._id, null, adapter.config.prefix, adapter.namespace); aufgerufen
und später dann:
client.publish(adapter.config.prefix + topic, null);
In der function publishAllStates wird aber:
client.publish(config.prefix + id.replace(/./g, '/'), state2string(states[id].val), function (err)
verwendet.
In common.js kommt in der function convertID2topic u.a. dann:
topic = prefix + id; vor.
D.h. bei send2Server wird erst durch convertID2topic der prefix vorgesetzt und dann beim publish nochmals.
Beim publishAllStates wird aber beim client.publish die id selber verwendet (das replace ersetzt nur . durch /).
Ich hab aber jetzt zu wenig Erfahrung mit Javascript, um da jetzt selber Änderungen durchzuführen, da ich ja auch nicht weis, warum der Autor das so programmiert hat.
lg, Sabine
-
Ich hab aber jetzt zu wenig Erfahrung mit Javascript, um da jetzt selber Änderungen durchzuführen, da ich ja auch nicht weis, warum der Autor das so programmiert hat. `
nach zu wenig Erfahrung sieht das aber nicht aus
Ich glaube den Inhalt Deines letzten Posts könntest Du als Issue beim Adapter melden.
-
nach zu wenig Erfahrung sieht das aber nicht aus
Ich glaube den Inhalt Deines letzten Posts könntest Du als Issue beim Adapter melden.
https://github.com/ioBroker/ioBroker.mqtt/issues `
Ich hab Erfahrung in diversen anderen Programmiersprachen, daher traue ich mir zu, auch JavaScript Programme zu lesen. Aber das jetzt selber Auszubessern ist dann doch eine ander Sache…Hab meine Postings aber mal zusammengefasst als Issue gemeldet.
lg, Sabine
-
The MQTT plugin works great but 1 downside is only being able to subscribe to 1 topic at a time. Could you add the ability to just keep adding as many as you want?
Thanks
-
You can use wildcards. Or I don't understand what you mean.