Seite 1 von 1

Tuya Power Plug - Ein/Aus - Status wird nicht auf Schalter angewendet

Verfasst: 10. Sep 2022 17:35
von TorstenE
Hallo Mitstreiter,

ich habe einen "Zigbee - Power Plug von Tuya" im Einsatz
direkt als "Generic MQTT Thing".
Die Channels für die Stromwerte usw. funktionieren wunderbar.

Im Channel um den Stecker Ein/Aus zu schalten habe ich ein Problem.
Der Schalter benötigt zum Schalten

Code: Alles auswählen

{"state": "OFF"}
["state": "ON"}
Der Befehl wird mit

Code: Alles auswählen

zigbee2mqtt/Tuya_Steckdose_01/set
gesendet.
Der Schalter macht was er soll, geht ein und aus.

ABER:
Wenn ich den Schalter manuell betätige erhalte ich per MQTT

Code: Alles auswählen

https://www.zigbee2mqtt.io/devices/TS0121_plug.html
state: "ON"
aber wie setze ich jetzt diesen Status in den Status des Switch korrekt um ?
D.h. der Switch in OH ändert seinen Status nicht.
Unten im Code ist es der Channel "Tuya_Steckdose_01_switch"


Hier die komplette Code der Channel:

Code: Alles auswählen

UID: mqtt:topic:f62301ba6c:45de34cd4f
label: Steckdose 1
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:f62301ba6c
channels:
  - id: Tuya_Steckdose_01_voltage
    channelTypeUID: mqtt:number
    label: Netzspannung
    description: null
    configuration:
      formatBeforePublish: "%.2f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.voltage
  - id: Tuya_Steckdose_01_power
    channelTypeUID: mqtt:number
    label: Leistung
    description: null
    configuration:
      formatBeforePublish: "%.2f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.power
  - id: Tuya_Steckdose_01_current
    channelTypeUID: mqtt:number
    label: Strom
    description: null
    configuration:
      formatBeforePublish: "%.2f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.current
  - id: Tuya_Steckdose_01_switch
    channelTypeUID: mqtt:switch
    label: Schalter
    description: null
    configuration:
      commandTopic: zigbee2mqtt/Tuya_Steckdose_01/set
      postCommand: false
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01/state
      transformationPattern: JSONPATH:$.device.state
      off: '{"state": "OFF"}'
      on: '{"state": "ON"}'
  - id: Tuya_Steckdose_01_energy
    channelTypeUID: mqtt:number
    label: Stromverbrauch
    description: null
    configuration:
      formatBeforePublish: "%.2f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.energy
 
Hier der Link zu den Befehlen des Tuya Power Plug, welcher zwar ein anderes
Model darstellen, jedoch funktionierten:
https://www.zigbee2mqtt.io/devices/TS0121_plug.html

Danke für Tips

Torsten

Re: Tuya Power Plug - Ein/Aus - Status wird nicht auf Schalter angewendet

Verfasst: 10. Sep 2022 23:04
von udo1toni
Das sollte gewöhnlich mit formatBeforePublish gelöst werden. on und off lässt Du leer (damit als Werte ON und OFF verwendet werden), als formatBeforePublish setzt Du dann '{"state": "%s"}'

Eventuell (habe das noch nie ausprobiert) gibt es auch ein transformationPatternOut, das wäre dann JSONPATH:$.state und müsste sozusagen umgekehrt funktionieren wie das normals transformationPattern, also das JSON Objekt mit diesem einen Wert bauen

Re: Tuya Power Plug - Ein/Aus - Status wird nicht auf Schalter angewendet

Verfasst: 12. Sep 2022 12:04
von TorstenE
Hallo Udo1Toni,

dein Tipp hat mir geholfen und jetzt funktioniert die Power Plug wie gewünscht.
Hier noch der Vollständigkeit halber die Channels:

Code: Alles auswählen

UID: mqtt:topic:f62301ba6c:45de34cd4f
label: Steckdose 1
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:f62301ba6c
channels:
  - id: Tuya_Steckdose_01_voltage
    channelTypeUID: mqtt:number
    label: Netzspannung
    description: null
    configuration:
      formatBeforePublish: "%f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.voltage
  - id: Tuya_Steckdose_01_power
    channelTypeUID: mqtt:number
    label: Leistung
    description: null
    configuration:
      formatBeforePublish: "%f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.power
  - id: Tuya_Steckdose_01_current
    channelTypeUID: mqtt:number
    label: Strom
    description: null
    configuration:
      formatBeforePublish: "%f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.current
  - id: Tuya_Steckdose_01_switch
    channelTypeUID: mqtt:switch
    label: Schalter
    description: null
    configuration:
      commandTopic: zigbee2mqtt/Tuya_Steckdose_01/set
      postCommand: false
      transformationPatternOut: " '{\"state\": \"%s\"}'"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.state
  - id: Tuya_Steckdose_01_energy
    channelTypeUID: mqtt:number
    label: Stromverbrauch
    description: null
    configuration:
      formatBeforePublish: "%f"
      stateTopic: zigbee2mqtt/Tuya_Steckdose_01
      transformationPattern: JSONPATH:$.energy
Grüße

Torsten :-)