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%