MQTT send command
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: MQTT send command
Die Einheit sollte openHAB eigentlich nicht mit senden.
Hast Du den Channel mit einem Number:Temperature Item gekoppelt?
Hast Du den Channel mit einem Number:Temperature Item gekoppelt?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 17
- Registriert: 19. Dez 2022 17:56
Re: MQTT send command
Das Item ist wie folgt angelegt:
Name Schlafzimmer_Heizung_Temperatur_SOLL
Label Temperatur SOLL
Type Number
Unit °C
State Description Pattern %.0f %unit%
Profile Standard
Name Schlafzimmer_Heizung_Temperatur_SOLL
Label Temperatur SOLL
Type Number
Unit °C
State Description Pattern %.0f %unit%
Profile Standard
OPENHAB 4.2 per Docker Container (x64)
-
- Beiträge: 17
- Registriert: 19. Dez 2022 17:56
Re: MQTT send command
Hat sich erledigt. Hatte das falsche Item angelegt. Dennoch danke für die zahlreichen Tipps.
OPENHAB 4.2 per Docker Container (x64)
-
- Beiträge: 66
- Registriert: 26. Nov 2020 08:00
Re: MQTT send command
Hallo,
ich bin am verzweifeln. Status bekomme ich ohne weiteres hin für eine Steckdose
MQTT Command Topic
tele/Tasmota_Zigbee_3_0/POWER
MQTT State Topic
cmnd/Tasmota_Zigbee_3_0/POWER
Incoming Value Transformations
JSONPATH:ZbReceived.0x9C59.Power
Outgoing Value Transformation
JSONPATH:ZbSend.0x9C59.Power
Leider Bekomme ich mit dem Switch im Openhab die Steckdose nicht geschaltet. Den Status zeigt er mir aber richtig an, wenn ich an der Steckdose selbst Schalte.
Wo ist mein Denkfehler?
ich bin am verzweifeln. Status bekomme ich ohne weiteres hin für eine Steckdose
MQTT Command Topic
tele/Tasmota_Zigbee_3_0/POWER
MQTT State Topic
cmnd/Tasmota_Zigbee_3_0/POWER
Incoming Value Transformations
JSONPATH:ZbReceived.0x9C59.Power
Outgoing Value Transformation
JSONPATH:ZbSend.0x9C59.Power
Leider Bekomme ich mit dem Switch im Openhab die Steckdose nicht geschaltet. Den Status zeigt er mir aber richtig an, wenn ich an der Steckdose selbst Schalte.
Wo ist mein Denkfehler?
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: MQTT send command
Ja, kein Wunder, Du hast die beiden Topics vertauscht. cmnd ist der command-Zweig der Befehle, tele ist der zyklische Status.
Kannst Du bitte mal aus der MainUI heraus auf das Thing wechseln (Administration -> Things -> das Thing), dort auf die Code-Ansicht umschalten und den gesamten Code hier (als Code markiert!) einfügen? Passworte und IDs kannst Du gerne herauslöschen, falls da etwas im Code auftaucht.
Ach so... Die outgoing Value Transformation ist hier verkehrt. JSONPATH ist ein "Oneway" Binding, es kann decodieren, aber nicht encodieren.
Stattdessen musst Du über das outgoing Value Format das gesamte zu sendende JSON Objekt zusammenbauen, so:
Wobei der Endpoint noch zu klären wäre...
Kannst Du bitte mal aus der MainUI heraus auf das Thing wechseln (Administration -> Things -> das Thing), dort auf die Code-Ansicht umschalten und den gesamten Code hier (als Code markiert!) einfügen? Passworte und IDs kannst Du gerne herauslöschen, falls da etwas im Code auftaucht.
Ach so... Die outgoing Value Transformation ist hier verkehrt. JSONPATH ist ein "Oneway" Binding, es kann decodieren, aber nicht encodieren.
Stattdessen musst Du über das outgoing Value Format das gesamte zu sendende JSON Objekt zusammenbauen, so:
Code: Alles auswählen
formatBeforePublish: 'ZbSend { "Device":"0x9C59", "Endpoint":"0x03", "Send":{"Power":"%s"} }'
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 66
- Registriert: 26. Nov 2020 08:00
Re: MQTT send command
...sorry ich hab es hier im Forum falsch.
auf der Konsole vom Zigbee2MQTT --> 17:50:04.283 MQT: tele/Tasmota_Zigbee_3_0/SENSOR = {"ZbReceived":{"0x9C59":{"Device":"0x9C59","Name":"SD_Infrarotbild","RMSVoltage":233,"Endpoint":1,"LinkQuality":144}}}
Code: Alles auswählen
id: SD_Infrarotbild
channelTypeUID: mqtt:switch
label: Steckdose Infrarotbild
description: ""
configuration:
commandTopic: cmnd/Tasmota_Zigbee_3_0/POWER
transformationPatternOut:
- JSONPATH:ZbSend.0x9C59.Power
stateTopic: tele/Tasmota_Zigbee_3_0/SENSOR
transformationPattern:
- JSONPATH:ZbReceived.0x9C59.Power
off: "0"
on: "1"
auf der Konsole vom Zigbee2MQTT --> 17:50:04.283 MQT: tele/Tasmota_Zigbee_3_0/SENSOR = {"ZbReceived":{"0x9C59":{"Device":"0x9C59","Name":"SD_Infrarotbild","RMSVoltage":233,"Endpoint":1,"LinkQuality":144}}}
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: MQTT send command
Also, zum einen (wie oben schon erwähnt) musst Du formatBeforeBublish verwenden, um ein gültiges JSON Objekt zu bauen. Und das commandTopic ist ziemlich sicher ebenfalls verkehrt.
Vermutlich eher so:
Beachte bitte auch das $ am Anfang des JSONPATH, das muss da stehen.
Vermutlich eher so:
Code: Alles auswählen
id: SD_Infrarotbild
channelTypeUID: mqtt:switch
label: Steckdose Infrarotbild
description: ""
configuration:
commandTopic: cmnd/Tasmota_Zigbee_3_0/ZbSend
formatBeforePublish: '{ "Device":"0x9C59", "Endpoint":"0x03", "Send":{"Power":"%s"} }'
stateTopic: tele/Tasmota_Zigbee_3_0/SENSOR
transformationPattern:
- JSONPATH:$.ZbReceived.0x9C59.Power
off: "0"
on: "1"
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 66
- Registriert: 26. Nov 2020 08:00
Re: MQTT send command
....leider geht das Schreiben immer noch nicht. Lesen funktioniert.
das wir auf der Konsole vom Zigbee2MQQT ausgegeben:
10:03:43.652 MQT: stat/Tasmota_Zigbee_3_0/RESULT = {"ZbSend":"Done"}
10:03:45.894 MQT: tele/Tasmota_Zigbee_3_0/SENSOR = {"ZbReceived":{"0x9C59":{"Device":"0x9C59","Name":"SD_Infrarotbild","Reachable":false}}}
wenn ich den Endpunkt auf "0x01" anpasse, dann funktionert es. Dankeschön
das wir auf der Konsole vom Zigbee2MQQT ausgegeben:
10:03:43.652 MQT: stat/Tasmota_Zigbee_3_0/RESULT = {"ZbSend":"Done"}
10:03:45.894 MQT: tele/Tasmota_Zigbee_3_0/SENSOR = {"ZbReceived":{"0x9C59":{"Device":"0x9C59","Name":"SD_Infrarotbild","Reachable":false}}}
wenn ich den Endpunkt auf "0x01" anpasse, dann funktionert es. Dankeschön

- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: MQTT send command
Immerhin:
Meine Vermutung: Der Endpoint stimmt nicht.
Die Device ID 0x9C59 muss eigentlich die richtige sein.
Du könntest die Angabe des Endpoint versuchsweise einfach weg lassen, also formatBeforePublish so anpassen:
(Anmerkung: Ich sehe gerade, dass ich Anführungszeichen um %s habe sehen lassen. Da der übergebene Wert eine Zahl ist, sollten sie unnötig sein)
Kannst Du außerdem bitte mal im mqtt Explorer das Topic cmnd/Tasmota_Zigbee_3_0/ZbSend inspizieren (also die Payload...), ob dort auch "Power":0 bzw. "Power":1 steht?
Der Befehl wurde gesendet, ist in Tasmota angekommen und wurde ausgeführt.Code: Alles auswählen
10:03:43.652 MQT: stat/Tasmota_Zigbee_3_0/RESULT = {"ZbSend":"Done"}
Meine Vermutung: Der Endpoint stimmt nicht.
Die Device ID 0x9C59 muss eigentlich die richtige sein.
Du könntest die Angabe des Endpoint versuchsweise einfach weg lassen, also formatBeforePublish so anpassen:
Code: Alles auswählen
formatBeforePublish: '{ "Device":"0x9C59", "Send":{"Power":%s} }'
Kannst Du außerdem bitte mal im mqtt Explorer das Topic cmnd/Tasmota_Zigbee_3_0/ZbSend inspizieren (also die Payload...), ob dort auch "Power":0 bzw. "Power":1 steht?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 66
- Registriert: 26. Nov 2020 08:00
Re: MQTT send command
Hallo,
also es geht und in der Console steht folgendes:
also es geht und in der Console steht folgendes:
Code: Alles auswählen
15:19:39.798 MQT: stat/Tasmota_Zigbee_3_0/RESULT = {"ZbSend":"Done"}
15:19:41.093 MQT: tele/Tasmota_Zigbee_3_0/SENSOR = {"ZbReceived":{"0x9C59":{"Device":"0x9C59","Name":"SD_Infrarotbild","Power":1,"RMSCurrent":2804,"ActivePower":697,"Endpoint":1,"LinkQuality":81}}}
15:19:41.696 MQT: tele/Tasmota_Zigbee_3_0/SENSOR = {"ZbReceived":{"0x9C59":{"Device":"0x9C59","Name":"SD_Infrarotbild","Power":1,"RMSCurrent":2804,"ActivePower":697,"RMSVoltage":222,"Endpoint":1,"LinkQuality":81}}}