Set datapoint value via mqtt

Struggling with this one, any pointers much appreciated:

I have a WiFi Tuya (esphome flashed) siren, the issue I am having is setting the tone option, I wish to send a value to a known datapoint but cannot for the life of me make it work.

These are the data points availaibe:

siren_2/debug [C][tuya:023]: Tuya:
siren_2/debug [C][tuya:032]:   Datapoint 104: switch (value: OFF)
siren_2/debug [C][tuya:032]:   Datapoint 113: switch (value: OFF)
siren_2/debug [C][tuya:032]:   Datapoint 112: switch (value: OFF)
siren_2/debug [C][tuya:032]:   Datapoint 114: switch (value: OFF)
siren_2/debug [C][tuya:036]:   Datapoint 101: enum (value: 4)
siren_2/debug [C][tuya:036]:   Datapoint 115: enum (value: 0)
siren_2/debug [C][tuya:036]:   Datapoint 102: enum (value: 0)
siren_2/debug [C][tuya:036]:   Datapoint 116: enum (value: 0)
siren_2/debug [C][tuya:034]:   Datapoint 103: int value (value: 10)
siren_2/debug [C][tuya:034]:   Datapoint 105: int value (value: 311)
siren_2/debug [C][tuya:034]:   Datapoint 106: int value (value: 28)
siren_2/debug [C][tuya:034]:   Datapoint 107: int value (value: 18)
siren_2/debug [C][tuya:034]:   Datapoint 108: int value (value: 27)
siren_2/debug [C][tuya:034]:   Datapoint 109: int value (value: 45)
siren_2/debug [C][tuya:034]:   Datapoint 110: int value (value: 80)

And this is my base setting:

uart:
  rx_pin: GPIO3
  tx_pin: GPIO1
  baud_rate: 9600

tuya:

switch:
  - platform: "tuya"
    name: "alarm"
    switch_datapoint: 104
    
sensor:
 - platform: wifi_signal
   name: "WiFi Signal"
   retain: false
 - platform: "tuya"
   name: "power"
   sensor_datapoint: 101

I know datapoint 102 is the value I need to change, I require a method to send it an integer value via mqtt, every option I have tried had not gone well, would be very grateful if somebody with greater esphome fu could help guide me…

alrighty… in case someone else happens across this, I made it work like this, it’s ugly but functional -

web_server:

uart:
  rx_pin: GPIO3
  tx_pin: GPIO1
  baud_rate: 9600

tuya:

switch:
  - platform: "tuya"
    name: "alarm"
    switch_datapoint: 104
  - platform: uart
    name: "tone0" #doorbell
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x00,0x75]
  - platform: uart
    name: "tone1" #fuer elise
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x01,0x76]
  - platform: uart
    name: "tone2" #big ben
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x02,0x77]
  - platform: uart
    name: "tone3" #ring ring
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x03,0x78]
  - platform: uart
    name: "tone4" #lone ranger
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x04,0x79]
  - platform: uart
    name: "tone5" #turkish march
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x05,0x7a]
  - platform: uart
    name: "tone6" #high pitch siren
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x06,0x7b]
  - platform: uart
    name: "tone7" #red alert
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x07,0x7c]
  - platform: uart
    name: "tone8" #cricket
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x08,0x7d]
  - platform: uart
    name: "tone9" #beep beep
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x09,0x7e]
  - platform: uart
    name: "tone10" #dogs
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x0a,0x7f]
  - platform: uart
    name: "tone11" #police
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x0b,0x80]
  - platform: uart
    name: "tone12" #chime
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x0c,0x81]
  - platform: uart
    name: "tone13" #phone ring
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x0d,0x82]
  - platform: uart
    name: "tone14" #fire truck
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x0e,0x83]
  - platform: uart
    name: "tone15" #clock chime
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x0f,0x84]
  - platform: uart
    name: "tone16" #alarm clock
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x10,0x85]
  - platform: uart
    name: "tone17" #psycho
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x66,0x04,0x00,0x01,0x11,0x86]
  - platform: uart
    name: "vol0" #high
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x74,0x04,0x00,0x01,0x00,0x83]
  - platform: uart
    name: "vol1" #medium
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x74,0x04,0x00,0x01,0x01,0x84]
  - platform: uart
    name: "vol2" #low
    data: [0x55,0xaa,0x00,0x06,0x00,0x05,0x74,0x04,0x00,0x01,0x02,0x85]
  - platform: uart
    name: "time1" #10 seconds
    data: [0x55,0xaa,0x00,0x06,0x00,0x08,0x67,0x02,0x00,0x04,0x00,0x00,0x00,0x0a,0x84]
  - platform: uart
    name: "time2" #60 seconds
    data: [0x55,0xaa,0x00,0x06,0x00,0x08,0x67,0x02,0x00,0x04,0x00,0x00,0x00,0x3c,0xb6]
  - platform: uart
    name: "time3" #120 seconds
    data: [0x55,0xaa,0x00,0x06,0x00,0x08,0x67,0x02,0x00,0x04,0x00,0x00,0x00,0x78,0xf2]
  - platform: uart
    name: "time4" #300 seconds
    data: [0x55,0xaa,0x00,0x06,0x00,0x08,0x67,0x02,0x00,0x04,0x00,0x00,0x01,0x2c,0xa7]

sensor:
 - platform: wifi_signal
   name: "WiFi Signal"
   retain: false
 - platform: "tuya"
   name: "power" # 4=USB, 1=Batt High, 2=Batt Mid, 3=Batt Low
   sensor_datapoint: 101
 - platform: "tuya"
   name: "tone"
   sensor_datapoint: 102
 - platform: "tuya"
   name: "volume"
   sensor_datapoint: 116
 - platform: "tuya"
   name: "time"
   sensor_datapoint: 103

2 Likes

There HAS to be an easier way to set a DP in the Tuya integration…