NEWS
Mit js an internen MQTT broker publishen
-
Hallo zusammen,
ich habe den internen iobroker.MQTT als Broker installiert und würde nun gerne aus JS heraus auf ein (noch nicht) bestehendes Topic publishen und dieses somit erstellen. "SetState" entfällt ja somit und "setObject" ist mir hierfür zu komplex.
Mein Weg war daher über
sendTo('mqtt.0', 'sendMessage2Client', {topic: 'SmartHome/Text', message: message});
In meinen Test war es nun aber immer so, dass die Funktion zwar die Werte an die Clienten verteilt, der Wert im Broker selber aber nicht aktualisiert wird. Es scheint für mich also eine Art Bypass zu sein.
Frage: Ist diese Annahme korrekt? Gibt es eine sinnvolle Alternative um an den Broker zu publishen und dieser verteilt diese dann weiter?
PS: Kann man eigentlich die Kommandos für die "sendTo"-Funktion der einzelnen Adapter irgendwo konkret nachschlagen? Haben die eine feste Position im Adapter-Quellcode, so dass man die erkennt?
Besten Dank und Grüße
TobyK -
@TobyK sagte in Mit js an internen MQTT broker publishen:
Gibt es eine sinnvolle Alternative um an den Broker zu publishen und dieser verteilt diese dann weiter?
Du hast es oben erwähnt: setState respektive createState. Es kann aber sein, dass der Adapter danach neu gestartet werden muss. Grundsätzlich gibt es ja wahrscheinlich nicht beliebig viele States, also würde ich die einfach einmal erstellen und dann aus dem JavaScript setzen.
PS: Kann man eigentlich die Kommandos für die "sendTo"-Funktion der einzelnen Adapter irgendwo konkret nachschlagen? Haben die eine feste Position im Adapter-Quellcode, so dass man die erkennt?
Etwas in der Art
adapter.on('message, ...);
wird es immer sein. Je nachdem ob der Adapter in JS oder TS geschrieben ist und ob Klassen oder Funktionen verwendet werden, kann es sein, dass es dannthis.on('message', ...)
ist. Beispiele:Danach wirst du dich allerdings immer durch den Code hangeln müssen (in beiden Fällen oben wird dann ja eine weitere Methode/Funktion aufgerufen).
-
Danke für die Antwort,
ich hatte schon vermutet, dass es derzeit keinen einfachen Weg als Einzeiler gibt. Hätte halt gerne einfach nur den Wert gepublished. Ich werde versuchen mir einen Workaround zu basteln.