NEWS
MQTT Adapter sendet gesetzte Zustände nicht
-
Hallo,
ich habe unter ioBroker den MQTT Adapter installiert, außerdem den Zigbee Adapter mit einem geflasheten CC2531 Stick. Wenn ich ein Topic publishe, z.B. unter /zigbee/BulbId/switch, dann schreibt ioBroker die korrekten Werte in die Datenpunkt variable unter Objekte. Side werden aber nicht zum Gerät übertragen. Wenn ich den Wert einmal anklicke und auf das Häkchen dahinter klicke, dann wird er korrekt gesendet.
Muss ich irgendwo im ZIgbee Adapter oder MQTT Adapter aktivieren, dass ioBroker die Werte nicht nur lokal im Raspberry Pi setzen, sondern auch an das Gerät senden soll?
Das setzen der Datenounkte per Blockly Script funktioniert.
VIelen Dank!
Achim -
Ich kann ein Blockly Script erstellen das auf Werte vom MQTT Adapter reagiert und in abhängigkeit davon die Werte im Zigbee adapter setzt. Dadurch kann ich dann meine Osram Lampe steuern. Es wäre natürlich eleganter wenn ich die Werte direkt per MQTT in den Zigbee Adapter schreiben könnte. Wie gesagt, in Iobroker werden sie korrekt aktualisiert, nur leider nicht an das Gerät übermittelt...
-
Der ZigBee-Adapter empfängt keine mqtt-topics,
Das kannst du tatsächlich nur mit einem Script lösen. -
Das ist ja ärgerlich! War mir eigentlich sicher, dass es bei einer alten Installation schon mal funktioniert hatte
Ich betreibe momentan 4 Osram ZIgbee Bulbs, die jeweils 4 Parameter haben. Muss ich dann per Blockly insgesamt 16 kleine Blöcke erstellen, oder geht das irgendwie generischer?
-
Warum willst du eigentlich MQTT nutzen?
Steuerst du von einem externen MQTT-Gerät?
-
Ich verwende zum Steuern eine selbst entwickelte App in der ich per Javascript MQTT Paho integriert habe.
-
Aha.
Der normale Weg, den ich in iobroker mit mqtt kenne ist so, dass der mqtt-Adapter die entsprechenden Topics empfängt und dazu einen Datenpunkt in Objekte - mqtt.0.topic... anlegt.
Das wird dann per Script überwacht und bearbeitet.Ein direktes Schreiben in einen Datenpunkt eines anderen Adapters habe ich noch nicht gesehen.
Wie du das am kürzesten in Blockly umsetzt, muss du testen.
Es lassen sich in einemTrigger ja mehrere Datenpunkte auf Änderung/Aktualisierung überwachen... -
Okay. Auf jeden Fall Danke schon mal für die Antwort.
Und ja, die Datenpunkte lassen sich direkt schreiben, also per Nachricht zu dem Topic "zigbee/0/BulbId/Parameter". Im MQTT Ordner landen sie dann nur, wenn BulbID oder Parameter unter /zigbee/0/* nicht existieren. Nur, obwohl die Werte dort korrekt aktualisiert werden, übermittelt sie der MQTT Adapter dann nicht ans Gerät. Aber wie gesagt, ich denke das hatte schon mal funktioniert...
-
Da fällt mir nur noch "Qualitätscode" ein.
Ist die Änderung durch MQTT eventuell nicht mik "ok" bestätigt? -
Ich denke, das müsste in den Einstellungen des MQTT-Adapters unter "Sende auch Zustände (ack=true)" einstellbar sein.
-
Das hatte ich auch vermutet, dass es über diese Option gesteuert wird. Das Aktivieren hat aber leider bei mir keine Funktion. Oder zumindest werden die Zustände auch wenn es aktiviert ist nicht an die Lampen gesendet...
-
Hast du mal versucht, das topic über einen anderen Client (evtl mqttFX?) zu senden?
Die Einstellung im mqtt-Adapter scheint sich wohl nur auf das Senden des ack an den mqtt-Broker auszuwirken.
-
Ich habe es jetzt unter Windows mit MQTTBox probiert. Das selbe Ergebnis: Zustand ändert sich im ioBroker, die Lampe bleibt unverändert.
-
Man kann auch in Objekte außerhalb von mqtt.0 publishen. Z.B nach alexa2.0/Echo-Devices/XXXX/Commands/speak
Die payload kommt an, wird angezeigt aber eben nicht ausgelöst. Scheint also ein generelles Verhalten zu sein. -
Ich habe es jetzt hinbekommen, die Zustände auf den Bulbs direkt zu setzen. Die Option "Unterschiedliche Namen für setzen und lesen" muss zusätzlich zu "Sende auch Zustände" aktiviert sein. Danach muss der Parameter unter dem Topic
"/zigbee/0/BulbId/ParameterId/set"
gesetzt werden.