NEWS
[gelöst] MQTT topic auf server schreiben
-
Hallo Zusammen,
ich mache gerade meine ersten Gehversuche mit dem MQTT Client und OpenWB.
Ich will den SOC meines E-Autos auf die OpenWB schreiben. Via MQTT Explorer geht das wunderbar:
Nur via IObroker will es noch nicht. Das folgende Script läuft wunderbar durch:
sendTo('mqtt.0', 'sendMessage2Client', {topic:'openWB/set/vehicle/1/get/soc',message:"22"});
aber bei der OpenWB kommen die Werte nicht an.
Der MQTT Client ist connected und exakt gleich configuriert wie der MQTT Explorer
Ich habe schon sämtliche kombanationen im Client durchprobiert die mir eingefallen sind: mit SSL, mit Topic, MQTT-Versionen..
Auch am Escaping der "message" hab ich schon alles mögliche durch - mit "", '', ohne..
Ich bin ein wenig ratlos
-
@flachdachdecker
Der mqtt-client kann (zumindest hab ich dazu nichts gefunden) nicht mit sendTo arbeiten
Was aber klappt ist über die Objektdaten auf ein Topic zu senden.
Zahnrad und dann dort
die entsprechenden Einstellungen machen. -
@flachdachdecker sagte in MQTT topci auf server schreiben:
aber bei der OpenWB kommen die Werte nicht an.
Ich weiß nicht wie die Topics bei der OpenWB aufgebaut sind. Aber bist Du sicher, dass die darauf reagieren müsste? Das Topic klingt so, als ob der Wert nur zur Info da ist (
get
)EDIT: Verwirrend ist auch, dass Du Instanz-Einstellungen vom Adapter
mqtt-client
zeigst, aber ein sendTo anmqtt
machst. Das sind zwei verschiedene Adapter! Hast du vonmqtt
überhaupt eine Instanz?Ansonsten ist es so wie @wolfi913 schreibt. Legt Dir einen eigenen Datenpunkt unter
0_userdata.0
an und verknüpfe das Topic damit. Dann wird das gepublished wenn sich ein Wert ändert. -
@haus-automatisierung ja, das Topic heißt so bei OpenWB: "openWB/set/vehicle/1/get/soc" - wie gesagt - funktioniert ja via MQTT Explorer.
Gut aufgepasst - ja, den Fehler hab ich zwischenzeitlich auch schon gefunden - der Aufruf heitß jetztsendTo('mqtt-client.0', 'sendMessage2Client', {topic:'openWB/set/vehicle/1/get/soc',message:22});
Geholfen hat es leider nicht
-
@flachdachdecker sagte in MQTT topci auf server schreiben:
Gut aufgepasst - ja, den Fehler hab ich zwischenzeitlich auch schon gefunden - der Aufruf heitß jetzt
sendTo('mqtt-client.0', 'sendMessage2Client', {topic:'openWB/set/vehicle/1/get/soc',message:22});Geholfen hat es leider nicht
Du kannst nicht beliebige Nachrichten an beliebige Instanzen senden. Die muss auch verstehen was Du sendest. Ich glaube der
mqtt-client
Adapter hat die Messagebox nichtmal implementiert (und kann gar nicht mit sendTo angesprochen werden). -
@wolfi913 Das ist die Lösung für mein Problem - vielen Dank
Der Trick war mir noch gar nicht bekannt -
@haus-automatisierung ok, dann bin ich irgendwo falsch abgebogen.
Wie würde man das richtigerweise via JS machen? Welchem Adapter oder Herangehensweise empfiehlst du?Mein konkretes Problem hat @wolfi913 ja schon gelöst.
-
@flachdachdecker sagte in MQTT topci auf server schreiben:
Wie würde man das richtigerweise via JS machen? Welchem Adapter oder Herangehensweise empfiehlst du?
Hättest den MQTT-Adapter im Client-Modus genommen, hätte das genau so funktioniert. Oder Du hättest auch direkt die Zustände im Objektbaum schreiben können (falls abonniert).
Welcher Weg der "richtige" ist, kommt auf den Anwendungsfall an. Hättest Du jetzt noch 100 Datenpunkte zu erstellen, wäre der
mqtt-client
-Adapter wahrscheinlich nicht das richtige, weil zu viel Arbeit. -
@haus-automatisierung wunderbar - mit dem "MQTT Broker/Client"-Adapter hats funktioniert Danke!