devices.esphome.io
TOMZN TOMPD-63-WiFi
TOMZN TOMPD-63-WiFi
Device Type: switchElectrical Standard: euBoard: bk72xxDifficulty: Soldering required, 4/5
Programming
Internally, it uses the TUYA CBU chip, which is based on the BK7231N.
You need to solder 5 wires for the GND, +3v3, RX, TX and CEN (Reset) signals in order to connect them to a USB-to-serial (TTL) adapter.
Of course you also need USB-to-serial converter, and +3v3 supply (I'm using power out on my USB-to-serial converter),
You can flash the device using ltchiptool or directly with esphome upload <your-config.yaml>
command from the console or ESPHome web GUI
If flashing fails, desoldering the CBU chip may help by improving 3.3V line stability.
Dataponts
[01:21:47][C][tuya:041]: Tuya:[01:21:47][C][tuya:058]: Datapoint 1: int value (value: 438)[01:21:47][C][tuya:056]: Datapoint 11: switch (value: OFF)[01:21:47][C][tuya:058]: Datapoint 13: int value (value: 0)[01:21:47][C][tuya:054]: Datapoint 6: raw (value: 09.0A.00.0F.FA.00.03.59 (8))[01:21:47][C][tuya:060]: Datapoint 19: string value (value: )[01:21:47][C][tuya:056]: Datapoint 12: switch (value: OFF)[01:21:47][C][tuya:056]: Datapoint 16: switch (value: ON)[01:21:47][C][tuya:058]: Datapoint 15: int value (value: 18)[01:21:47][C][tuya:058]: Datapoint 101: int value (value: 230)[01:21:47][C][tuya:064]: Datapoint 9: bitmask (value: 0)[01:21:47][C][tuya:054]: Datapoint 17: raw (value: 03.01.00.0D.04.00.00.00 (8))[01:21:47][C][tuya:054]: Datapoint 18: raw (value: 01.01.00.1E.03.01.00.FF.04.01.00.C8 (12))[01:21:47][C][tuya:074]: Product: '{"p":"hiow4txw9gjrys7w","v":"1.0.0","m":0}
Basic ESPHome config
esphome: name: medidor-din-2 friendly_name: medidor-din-2
bk72xx: board: generic-bk7231n-qfn32-tuya
# Disable logginglogger: baud_rate: 0 uart: baud_rate: 9600 id: uart_tuya rx_pin: RX1 tx_pin: TX1
tuya: uart_id: uart_tuya on_datapoint_update: - sensor_datapoint: 6 datapoint_type: raw then: - lambda: |- ESP_LOGD("main", "on_datapoint_update %s", format_hex_pretty(x).c_str()); id(voltage).publish_state((x[0] << 8 | x[1]) * 0.1); id(current).publish_state((x[3] << 8 | x[4]) * 0.001); id(power).publish_state((x[6] << 8 | x[7]) * 1);
switch: - platform: tuya switch_datapoint: 16 name: "On"
sensor: - platform: template id: voltage name: "Volt" unit_of_measurement: "V" icon: "mdi:sine-wave" accuracy_decimals: 1 - platform: template id: current name: "Curent" icon: "mdi:current-ac" unit_of_measurement: "A" accuracy_decimals: 2 - platform: template id: power name: "Power" icon: "mdi:flash" unit_of_measurement: "W" accuracy_decimals: 0 - platform: tuya name: "Total Energy" sensor_datapoint: 1 unit_of_measurement: "kWh" accuracy_decimals: 2 icon: "mdi:lightning-bolt" filters: - multiply: 0.01 - platform: tuya name: "Leakage Current" sensor_datapoint: 15 unit_of_measurement: "mA" accuracy_decimals: 0 icon: "mdi:flash-alert"