MQTT Tasmota und Tuya, ich schaffe den cmnd und Transformation nicht

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Antworten
Mordi
Beiträge: 32
Registriert: 24. Jan 2021 14:54

MQTT Tasmota und Tuya, ich schaffe den cmnd und Transformation nicht

Beitrag von Mordi »

Guten Abend,

ich habe OH3 mit MQTT und einer Tamota ZBBridge am Laufen.
Jetzt habe ich mir die HAMA Heizungsregler geholt, die auf Tuyabasis sind.
Das Tuya interface habe ich nicht benötigt, und konnte die Regler mit der Bridge koppeln.

Problem beim Receiving:
Ich habe es hinbekommen, dass die Bridge Openhab die eingestellte Temperatur mitteilt, wenn auch mit Werten, die eine 0 zu viel ist.
Das heißt z.b. 5°C werden zu 50°C und 25°C werden 250°C
Ich hatte diesen Fall leider noch nicht.
Vielleicht weiß jemand wie ich hier die 0 im Openhab weg bekomme, und die richtige Temperatur angezeigt bekomme.

Sendungsproblem.
Ich kann keinen für die ZBBridge mit Tasmota verwertbaren JSONPATH erstellen.
Die Fehlermeldung lautet: MQT: stat/tasmota_945D3D/RESULT = {"ZbSend":"Invalid JSON"}

Ich zeige mal die Informationen die ich habe:
Config im Openhab:

Code: Alles auswählen

- id: Heizkoerper_Schlafzimmer
    channelTypeUID: mqtt:number
    label: Heizkoerper Schlafzimmer Temperatur
    description: ""
    configuration:
      unit: C
      min: 50
      formatBeforePublish: '{"device":"0xC464","send":{"TuyaMaxTemp":%C}}'
      max: 300
      commandTopic: cmnd/tasmota_945D3D/C464_1/ZbSend
      stateTopic: tele/tasmota_945D3D/C464_1/SENSOR
      transformationPattern: JSONPATH:$.ZbReceived.0xC464.TuyaMaxTemp
Mein Werte von einem Heizkörper (Achtung das ist ein Baugleicher Termostat, nur im Wohnzimmer!)

Code: Alles auswählen

19:59:21.480 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":50,"Endpoint":1,"LinkQuality":58}}}
19:59:21.614 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","EF00/0165":1,"Endpoint":1,"LinkQuality":58}}}
19:59:21.923 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":80,"Endpoint":1,"LinkQuality":55}}}
19:59:23.207 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":130,"Endpoint":1,"LinkQuality":55}}}
19:59:24.089 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":170,"Endpoint":1,"LinkQuality":63}}}
19:59:25.107 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":230,"Endpoint":1,"LinkQuality":61}}}
19:59:26.146 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":300,"Endpoint":1,"LinkQuality":58}}}
19:59:27.280 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":300,"Endpoint":1,"LinkQuality":53}}}
19:59:29.061 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":300,"Endpoint":1,"LinkQuality":50}}}
19:59:30.408 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":300,"Endpoint":1,"LinkQuality":61}}}
19:59:31.867 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":210,"Endpoint":1,"LinkQuality":55}}}
19:59:32.383 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":140,"Endpoint":1,"LinkQuality":55}}}
19:59:32.706 ZIG: {"ZbEZSPReceived":"800042266B"}
19:59:32.710 MQT: tele/tasmota_945D3D/RESULT = {"ZbRouteError":{"ShortAddr":"0x6B26","Status":66,"StatusMessage":"MAC_INDIRECT_TIMEOUT"}}
19:59:32.915 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":70,"Endpoint":1,"LinkQuality":55}}}
19:59:33.142 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","EF00/0165":0,"Endpoint":1,"LinkQuality":61}}}
19:59:33.409 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":50,"Endpoint":1,"LinkQuality":58}}}
19:59:34.911 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","EF00/0165":1,"Endpoint":1,"LinkQuality":58}}}
19:59:35.179 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":50,"Endpoint":1,"LinkQuality":58}}}
19:59:35.833 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","EF00/0165":0,"Endpoint":1,"LinkQuality":63}}}
19:59:36.064 MQT: tele/tasmota_945D3D/6B26_1/SENSOR = {"ZbReceived":{"0x6B26":{"Device":"0x6B26","TuyaMaxTemp":50,"Endpoint":1,"LinkQuality":61}}}
Im MQTT.fx steht:

Code: Alles auswählen

{
  "ZbReceived" : {
    "0x6B26" : {
      "Device" : "0x6B26",
      "TuyaMaxTemp" : 50,
      "Endpoint" : 1,
      "LinkQuality" : 68
    }
  }
}

Demnach müsste doch das formatBeforePublish wie folgt sein, oder ?

formatBeforePublish: '{"device":"0xC464","send":{"TuyaMaxTemp":%C}}'

oder muss da noch hin?

MfG.

Mordi

Benutzeravatar
udo1toni
Beiträge: 13955
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Tasmota und Tuya, ich schaffe den cmnd und Transformation nicht

Beitrag von udo1toni »

Es gibt keinen Platzhalter %C.

Wenn Du schon MQTT.fx hast, kannst Du gut sehen, dass da dann etwas falsches raus kommt Siehe auch die Doku: https://www.openhab.org/addons/bindings ... re-publish
Du kannst %s verwenden und bei Zahlen %f. Die Konfiguration müsste also

Code: Alles auswählen

formatBeforePublish: '{"device":"0xC464","send":{"TuyaMaxTemp":%f}}'
lauten.

Die "überzählige Null" ist nicht überzählig. Stattdessen wird die Temperatur in Zehntel Grad Celsius angegeben (oder Dezigrad Celsius). Du musst also "nur" dafür sorgen, dass der gelieferte Zahlenwert durch 10 geteilt wird. Das geht am einfachsten mit einem kleinen JavaScript Script, welches Du in der Transformation einträgst. Das geht auch im Profile. Eventuell musst Du aufpassen, was mit dem ausgehenden Wert ist (also ob das Gerät auch Zehntel Grad erwartet)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten