Having liberated my ATorch S1B powerplug/monitor from Tuya using Cloud Cutter and installing ESPHome on it I’ve created a basic YAML config for it.
It’s still a little raw but is a good start for the device.
esphome:
name: atorch-smart-switch
friendly_name: Atorch S1B/W/T/H Smart Switch
comment: Tuya bk7231n MCU
bk72xx:
board: generic-bk7231n-qfn32-tuya
logger:
web_server:
captive_portal:
mdns:
api:
ota:
- platform: esphome
time:
- platform: homeassistant
id: homeassistant_time
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
button:
- platform: restart
name: Restart
- platform: template
name: "Cycle Run Mode"
icon: "mdi:restart"
on_press:
- script.execute: cycle_run_mode
- platform: template
name: "Set Mode On"
icon: "mdi:power"
on_press:
- script.execute: set_mode_on
- platform: template
name: "Set Mode Off"
icon: "mdi:power-off"
on_press:
- script.execute: set_mode_off
- platform: template
name: "Set Mode Auto"
icon: "mdi:auto-fix"
on_press:
- script.execute: set_mode_auto
debug:
update_interval: 30s
text_sensor:
- platform: debug
reset_reason:
name: Reset Reason
- platform: libretiny
version:
name: LibreTiny Version
sensor:
- platform: uptime
name: Uptime
- platform: tuya
sensor_datapoint: 18
name: "Current"
unit_of_measurement: A
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: tuya
sensor_datapoint: 19
name: "Power"
unit_of_measurement: W
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: tuya
sensor_datapoint: 20
name: "Voltage"
unit_of_measurement: V
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: tuya
sensor_datapoint: 102
name: "Cost"
unit_of_measurement: ""
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: tuya
sensor_datapoint: 103
name: "(Unconfirmed) Add Cost"
unit_of_measurement: "£"
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: tuya
sensor_datapoint: 123
name: "(Unconfirmed) Ele"
unit_of_measurement: kwh
accuracy_decimals: 3
filters:
- multiply: 0.001
- platform: tuya
sensor_datapoint: 124
name: "Countdown Timer"
unit_of_measurement: s
- platform: tuya
sensor_datapoint: 133
name: "Frequency"
unit_of_measurement: Hz
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: tuya
sensor_datapoint: 134
name: "Power Factor"
unit_of_measurement: PF
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: tuya
sensor_datapoint: 135
name: "CPU Temp"
unit_of_measurement: C
uart:
rx_pin: RX1
tx_pin: TX1
baud_rate: 115200
tuya:
time_id: homeassistant_time
# DPIDs processed from schema model: exvou0
switch:
#Switch One not Used
#- platform: tuya
#switch_datapoint: 1
#name: "Switch 1"
- platform: tuya
switch_datapoint: 111
name: "Beep"
- platform: tuya
switch_datapoint: 113
name: "(Unconfirmed) Data Reset"
- platform: tuya
switch_datapoint: 114
name: "(Unconfirmed) Wifi Reset"
- platform: tuya
switch_datapoint: 115
name: "(Unconfirmed) Factor Reset"
- platform: tuya
switch_datapoint: 116
name: "(Unconfirmed) Screen Rotation"
number:
- platform: tuya
number_datapoint: 9
name: "(Unconfirmed) Countdown 1"
unit_of_measurement: s
min_value: 0
max_value: 360000
step: 1
- platform: tuya
number_datapoint: 17
name: "(Unconfirmed) Add Ele"
unit_of_measurement: kwh
min_value: 0
max_value: 5000000
step: 1
- platform: tuya
number_datapoint: 101
name: "(Unconfirmed) Price"
min_value: 0
max_value: 99999
step: 1
- platform: tuya
number_datapoint: 104
name: "(RAW) OVP"
unit_of_measurement: V
min_value: 1
max_value: 2750
step: 11
- platform: tuya
number_datapoint: 105
name: "(Unconfirmed) Ocp"
unit_of_measurement: A
min_value: 1
max_value: 2000
step: 1
- platform: tuya
number_datapoint: 106
name: "(Unconfirmed) Opp"
unit_of_measurement: W
min_value: 1
max_value: 4500
step: 1
- platform: tuya
number_datapoint: 108
name: "Display Brightness"
min_value: 1
max_value: 9
step: 1
- platform: tuya
number_datapoint: 109
name: "Display Brightness (Standby)"
min_value: 0
max_value: 9
step: 1
- platform: tuya
number_datapoint: 110
name: "Display Standby Time"
unit_of_measurement: s
min_value: 3
max_value: 99
step: 1
- platform: tuya
number_datapoint: 119
name: "(Unconfirmed) Plow"
unit_of_measurement: W
min_value: 1
max_value: 999
step: 1
- platform: tuya
number_datapoint: 120
name: "(Unconfirmed) Time A"
unit_of_measurement: min
min_value: 1
max_value: 99
step: 1
- platform: tuya
number_datapoint: 121
name: "(Unconfirmed) Phigh"
unit_of_measurement: W
min_value: 1
max_value: 9999
step: 1
- platform: tuya
number_datapoint: 122
name: "(Unconfirmed) Time B"
unit_of_measurement: hor
min_value: 1
max_value: 99
step: 1
- platform: tuya
number_datapoint: 125
name: "(Unconfirmed) Timing Close"
unit_of_measurement: s
min_value: 60
max_value: 359940
step: 1
- platform: tuya
number_datapoint: 126
name: "(Unconfirmed) Timing Open"
unit_of_measurement: s
min_value: 60
max_value: 359940
step: 1
- platform: tuya
number_datapoint: 127
name: "(Unconfirmed) Loop Open"
unit_of_measurement: s
min_value: 60
max_value: 359940
step: 1
- platform: tuya
number_datapoint: 128
name: "(Unconfirmed) Loop Close"
unit_of_measurement: s
min_value: 60
max_value: 359940
step: 1
- platform: tuya
number_datapoint: 129
name: "(Unconfirmed) Countdown Open"
unit_of_measurement: s
min_value: 60
max_value: 359940
step: 1
- platform: tuya
number_datapoint: 130
name: "(Unconfirmed) Countdown Close"
unit_of_measurement: s
min_value: 60
max_value: 359940
step: 1
- platform: tuya
number_datapoint: 137
name: "(Over Voltage Revovery Time"
unit_of_measurement: min
min_value: 0
max_value: 99
step: 1
- platform: tuya
number_datapoint: 139
name: "Reporting Interval"
unit_of_measurement: S
min_value: 1
max_value: 90
step: 1
select:
- platform: tuya
enum_datapoint: 107
name: "Language"
optimistic: true
options:
0: Chinese
1: English
- platform: tuya
enum_datapoint: 112
name: "Switched Mode"
optimistic: true
options:
0: Controlled
1: Normally_Open
- platform: tuya
enum_datapoint: 117
name: "(Unconfirmed) Standby Screen"
optimistic: true
options:
0: Original
1: Measurement
- platform: tuya
enum_datapoint: 118
name: "Menu"
optimistic: true
options:
0: Wifi1
1: Safety_Protection
2: Outage_A
3: Outage_B
4: Timing_Close
5: Timing_Open
6: Loop_Timing
7: Countdown
- platform: tuya
enum_datapoint: 131
name: "Run Mode"
id: run_mode_select
optimistic: true
options:
0: Open
1: Close
2: Auto
- platform: tuya
enum_datapoint: 132
name: "(Unconfirmed) Warning"
optimistic: true
options:
0: "Off"
1: Ovp
2: Ocp
3: Opp
4: Outage_A
5: Outage_B
6: Timing_Open
7: Timing_Close
8: Loop_Timing
9: Countdown
- platform: tuya
enum_datapoint: 136
name: "Price Mode"
optimistic: true
options:
0: Single_Rate
1: Stair
2: Peak_Valley_Stair
- platform: tuya
enum_datapoint: 138
name: "Power-up State"
optimistic: true
options:
0: "ON" #Open
1: "OFF" #Close
2: "Previous" #Memory
script:
- id: cycle_run_mode
mode: single
then:
- lambda: |-
auto current_state = id(run_mode_select).state;
std::string next_state = "Open"; // Default to "Open"
if (current_state == "Open") {
next_state = "Close"; // Go to "Close"
} else if (current_state == "Close") {
next_state = "Auto"; // Go to "Auto"
}
id(run_mode_select).make_call().set_option(next_state).perform();
- id: set_mode_on
mode: single
then:
- lambda: |-
id(run_mode_select).make_call().set_option("Open").perform();
- id: set_mode_off
mode: single
then:
- lambda: |-
id(run_mode_select).make_call().set_option("Close").perform();
- id: set_mode_auto
mode: single
then:
- lambda: |-
id(run_mode_select).make_call().set_option("Auto").perform();