Created
December 15, 2025 21:23
-
-
Save racerxdl/9e0dea6491daf579688b8a3655c00a55 to your computer and use it in GitHub Desktop.
KWS-306F Esphome profile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| substitutions: | |
| device: smartmetervz55 | |
| friendly_name: "Medidor VZ55" | |
| esphome: | |
| name: smartmetervz55 | |
| friendly_name: ${friendly_name} | |
| on_boot: | |
| priority: 800.0 | |
| then: | |
| - switch.turn_on: global_power_switch | |
| - delay: 2s | |
| - switch.turn_on: refresh | |
| bk72xx: | |
| board: cbu | |
| # Enable logging | |
| logger: | |
| level: INFO | |
| baud_rate: 0 | |
| uart: | |
| tx_pin: P11 | |
| rx_pin: P10 | |
| baud_rate: 9600 | |
| <<: !include network.yaml | |
| time: | |
| - platform: sntp | |
| id: sntp_time | |
| timezone: America/Sao_Paulo | |
| servers: | |
| - a.st1.ntp.br | |
| - a.ntp.br | |
| - gps.ntp.br | |
| on_time_sync: | |
| then: | |
| - logger.log: "Synchronized sntp clock" | |
| - platform: homeassistant | |
| id: homeassistant_time | |
| tuya: | |
| time_id: sntp_time | |
| button: | |
| - platform: restart | |
| name: ${friendly_name} Restart | |
| # Force refresh otherwise the RISC-V onboard doesnt let us know up to date data | |
| interval: | |
| - interval: 10s | |
| startup_delay: 30s | |
| then: | |
| - switch.turn_off: refresh | |
| - delay: 100ms | |
| - switch.turn_on: refresh | |
| - delay: 100ms | |
| - switch.turn_off: refresh | |
| - delay: 100ms | |
| - switch.turn_on: refresh | |
| switch: | |
| - platform: "tuya" | |
| name: ${friendly_name} Power Switch | |
| id: global_power_switch | |
| switch_datapoint: 16 | |
| - platform: tuya | |
| name: ${friendly_name} Clear runtime | |
| switch_datapoint: 119 | |
| - platform: tuya | |
| name: ${friendly_name} Clear energy | |
| switch_datapoint: 120 | |
| - platform: "tuya" | |
| name: ${friendly_name} Refresh | |
| id: refresh | |
| switch_datapoint: 134 | |
| sensor: | |
| - platform: tuya | |
| name: ${friendly_name} Runtime | |
| id: runtime | |
| sensor_datapoint: 106 | |
| unit_of_measurement: "min" | |
| accuracy_decimals: 0 | |
| - platform: tuya | |
| name: ${friendly_name} Network Frequency | |
| id: network_frequency | |
| sensor_datapoint: 107 | |
| unit_of_measurement: "Hz" | |
| accuracy_decimals: 2 | |
| - platform: tuya | |
| name: ${friendly_name} Temperature | |
| id: temperature | |
| sensor_datapoint: 108 | |
| unit_of_measurement: "°C" | |
| accuracy_decimals: 1 | |
| - platform: tuya | |
| name: ${friendly_name} Voltage A | |
| id: voltage_a | |
| sensor_datapoint: 125 | |
| unit_of_measurement: "V" | |
| device_class: voltage | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Current A (DP 126 scale 1000) | |
| - platform: tuya | |
| name: ${friendly_name} Current A | |
| id: current_a | |
| sensor_datapoint: 126 | |
| unit_of_measurement: "A" | |
| device_class: current | |
| accuracy_decimals: 3 | |
| filters: | |
| - lambda: |- | |
| return x * 0.001; | |
| # Power A (DP 127) unit W | |
| - platform: tuya | |
| name: ${friendly_name} Power A | |
| id: power_a | |
| sensor_datapoint: 127 | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 0 | |
| # Voltage B (DP 128 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Voltage B | |
| id: voltage_b | |
| sensor_datapoint: 128 | |
| unit_of_measurement: "V" | |
| device_class: voltage | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Current B (DP 129 scale 1000) | |
| - platform: tuya | |
| name: ${friendly_name} Current B | |
| id: current_b | |
| sensor_datapoint: 129 | |
| unit_of_measurement: "A" | |
| device_class: current | |
| accuracy_decimals: 3 | |
| filters: | |
| - lambda: |- | |
| return x * 0.001; | |
| # Power B (DP 130) W | |
| - platform: tuya | |
| name: ${friendly_name} Power B | |
| id: power_b | |
| sensor_datapoint: 130 | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 0 | |
| # Voltage C (DP 131 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Voltage C | |
| id: voltage_c | |
| sensor_datapoint: 131 | |
| unit_of_measurement: "V" | |
| device_class: voltage | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Current C (DP 132 scale 1000) | |
| - platform: tuya | |
| name: ${friendly_name} Current C | |
| id: current_c | |
| sensor_datapoint: 132 | |
| unit_of_measurement: "A" | |
| device_class: current | |
| accuracy_decimals: 3 | |
| filters: | |
| - lambda: |- | |
| return x * 0.001; | |
| # Power C (DP 133) W | |
| - platform: tuya | |
| name: ${friendly_name} Power C | |
| id: power_c | |
| sensor_datapoint: 133 | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 0 | |
| # Main device energy (DP 136, scale: 100 -> divide by 100) | |
| - platform: tuya | |
| name: ${friendly_name} Energy meter Energy | |
| id: energy_meter_energy | |
| sensor_datapoint: 136 | |
| unit_of_measurement: "kWh" | |
| device_class: energy | |
| state_class: total_increasing | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Power (DP 135), unit W | |
| - platform: tuya | |
| name: ${friendly_name} Energy meter Power | |
| id: energy_meter_power | |
| sensor_datapoint: 135 | |
| unit_of_measurement: "W" | |
| accuracy_decimals: 0 | |
| # Energy consumed A (DP 137, scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Energy consumed A | |
| id: energy_consumed_a | |
| sensor_datapoint: 137 | |
| unit_of_measurement: "kWh" | |
| device_class: energy | |
| state_class: total_increasing | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Energy consumed B (DP 138, scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Energy consumed B | |
| id: energy_consumed_b | |
| sensor_datapoint: 138 | |
| unit_of_measurement: "kWh" | |
| device_class: energy | |
| state_class: total_increasing | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Energy consumed C (DP 139, scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Energy consumed C | |
| id: energy_consumed_c | |
| sensor_datapoint: 139 | |
| unit_of_measurement: "kWh" | |
| device_class: energy | |
| state_class: total_increasing | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # PF | |
| # Power factor (diagnostic DP 101 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Power factor (overall) | |
| id: power_factor_all | |
| sensor_datapoint: 101 | |
| unit_of_measurement: "PF" | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Power factor A (DP 124 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Power factor A | |
| id: power_factor_a | |
| sensor_datapoint: 124 | |
| unit_of_measurement: "PF" | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Power factor B (DP 103 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Power factor B | |
| id: power_factor_b | |
| sensor_datapoint: 103 | |
| unit_of_measurement: "PF" | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Power factor C (DP 122 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Power factor C | |
| id: power_factor_c | |
| sensor_datapoint: 122 | |
| unit_of_measurement: "PF" | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Total energy A (DP 102 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Total energy A | |
| id: total_energy_a | |
| sensor_datapoint: 102 | |
| unit_of_measurement: "kWh" | |
| device_class: energy | |
| state_class: total_increasing | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Total energy B (DP 104 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Total energy B | |
| id: total_energy_b | |
| sensor_datapoint: 104 | |
| unit_of_measurement: "kWh" | |
| device_class: energy | |
| state_class: total_increasing | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| # Total energy C (DP 105 scale 100) | |
| - platform: tuya | |
| name: ${friendly_name} Total energy C | |
| id: total_energy_c | |
| sensor_datapoint: 105 | |
| unit_of_measurement: "kWh" | |
| device_class: energy | |
| state_class: total_increasing | |
| accuracy_decimals: 2 | |
| filters: | |
| - lambda: |- | |
| return x * 0.01; | |
| number: | |
| # Overvoltage (DP 110) V | |
| - platform: tuya | |
| name: ${friendly_name} Overvoltage | |
| number_datapoint: 110 | |
| min_value: 130 | |
| max_value: 290 | |
| step: 1 | |
| # Low voltage (DP 111) V | |
| - platform: tuya | |
| name: ${friendly_name} Low voltage | |
| number_datapoint: 111 | |
| min_value: 85 | |
| max_value: 220 | |
| step: 1 | |
| # Overcurrent (DP 112) A - mapping: scale 100 | |
| - platform: tuya | |
| name: ${friendly_name} Overcurrent | |
| number_datapoint: 112 | |
| min_value: 0 | |
| max_value: 9999 | |
| step: 1 | |
| multiply: 100 # original mapping used scale: 100 | |
| # Over power (DP 113) kW - mapping scale 100 (use multiply to match tuya's integer behaviour) | |
| - platform: tuya | |
| name: ${friendly_name} Over power | |
| number_datapoint: 113 | |
| min_value: 0 | |
| max_value: 2320 | |
| step: 1 | |
| multiply: 100 | |
| # Over energy (DP 114) kWh | |
| - platform: tuya | |
| name: ${friendly_name} Over energy | |
| number_datapoint: 114 | |
| min_value: 0 | |
| max_value: 99999999 | |
| step: 1 | |
| # Over temperature (DP 115) °C | |
| - platform: tuya | |
| name: ${friendly_name} Over temperature | |
| number_datapoint: 115 | |
| min_value: 0 | |
| max_value: 150 | |
| step: 1 | |
| # Screen timeout (DP 118) min | |
| - platform: tuya | |
| name: ${friendly_name} Screen timeout | |
| number_datapoint: 118 | |
| min_value: 0 | |
| max_value: 59 | |
| step: 1 | |
| # Timer (DP 109) seconds, range -1..86400 | |
| - platform: tuya | |
| name: ${friendly_name} Timer | |
| number_datapoint: 109 | |
| min_value: -1 | |
| max_value: 86400 | |
| step: 1 | |
| # Voltage balance (DP 116) V | |
| - platform: tuya | |
| name: ${friendly_name} Voltage balance | |
| number_datapoint: 116 | |
| min_value: 0 | |
| max_value: 100 | |
| step: 1 | |
| # Current balance (DP 117) A | |
| - platform: tuya | |
| name: ${friendly_name} Current balance | |
| number_datapoint: 117 | |
| min_value: 0 | |
| max_value: 800 | |
| step: 1% |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment