NEWS
MQTT Adapter SetState wird nicht verarbeitet
-
Hallo,
ich habe den MQTT Adapter installiert und sende damit Nachrichten an das Programm AlsavoCtrl von Strandborg in Github, um meine Pool Wärmepumpe zu steuern.
Das Topic zum Steuern Ein/Aus ist "mqtt.1.homie.alsavo.controls.power.set". Das ist ein Boolean Typ. Wenn ich den Wert manuell im Objekt Browser oder per Javascript auf "false" setze erwarte ich, dass die Pumpe ausgeschaltet wird. Das tut sie aber NUR wenn ich die Instanz mqtt.1 neustarten, im laufenden Betrieb funktioniert es nicht. Komisch...
Auf der Gegenseite kommt die Nachricht auch an und die Status Informationen von der Gegenseite werden auch sauber übertragen...
Wie kann ich mich dem Problem nähern?
Das Log der Gegenseite:
-
@vippis Wahrscheinlich schicktst Du den Wert aus Deinem JS nicht unbestätigt (ACK=false) und hast mit Retain rumgespielt. Ich empfehle Dir alle Haken zu deaktivieren in den mqtt-Einstellungen.
-
Ich löse gleich mal auf. Ja es funktioniert jetzt mit JS wenn ich sendTo nutze statt setState.
sendTo('mqtt.1', 'sendMessage2Client', { topic: 'homie/alsavo/controls/power/set', message: 'false', retain: false });
Funktioniert!
-
@vippis Das ist aber einfach nur ein alternativer Weg. Mit setState muss es genauso klappen. Teil gerne mal deinen Code und die Instanzeinstellungen.
-
Gerne, hier einmal die Objekte:
Hier die MQTT Einstellungen für Instanz mqtt.1:
Da ich per JS ohne Retain Flag sende, habe ich auch mal probiert, aber das funktioniert auch nicht.
Komisch ist auch, dass die Instanz die ganze Zeit das gelbe Symbol zeigt, das liegt wohl daran, dass das MQTT Format von AlsavoCtrl nicht ganz dem erwarteten Format des Adapters entspricht (Homie Konvention):
Die Connectet Liste ist leer:
-
Link zum Programm:
https://github.com/strandborg/AlsavoCtrl
Läuft bei mir auf dem PI als Docker Image.
-
@vippis lies dir noch mal den 2. Beitrag von @mickym durch.
Wenn du einSetState
an einem MQTT-Datenpunkt machst (also unterhalb vonmqtt.0.xxx
odermqtt.1.xxx
) und das mit dem Bestätigung / ACK Flag, passiert genau nichts. Du musst immer unbestätigt hineinschreiben. Dann reagiert der Adapter, sendet den Wert und schreibt den Wert noch mal bestätigt in den gleichen Datenpunkt (womit du überprüfen kannst das er das registriert und reagiert hat).Falls du Blockly nutzt musst du "steuere" nehmen, NICHT "aktualisiere"
Edit wegen Rechtschreibung