Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 240 additions & 0 deletions zhaquirks/tuya/ts0601_3_phase_power_meter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
"""Tuya Din Power Meter."""

from zigpy.quirks.v2.homeassistant import (
UnitOfElectricCurrent,
UnitOfElectricPotential,
UnitOfEnergy,
UnitOfFrequency,
UnitOfPower,
)
from zigpy.quirks.v2.homeassistant.sensor import SensorDeviceClass, SensorStateClass
import zigpy.types as t

from zhaquirks.tuya.builder import TuyaQuirkBuilder

(
TuyaQuirkBuilder("_TZE284_dikb3dp6", "TS0601")
.tuya_sensor(
dp_id=1,
attribute_name="energy",
fallback_name="energy",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.tuya_sensor(
dp_id=23,
attribute_name="produced_energy",
fallback_name="produced_energy",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.tuya_sensor(
dp_id=29,
attribute_name="power",
fallback_name="power",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER,
unit=UnitOfPower.WATT,
)
.tuya_sensor(
dp_id=32,
attribute_name="ac_frequency",
fallback_name="ac_frequency",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.FREQUENCY,
unit=UnitOfFrequency.HERTZ,
divisor=100,
)
.tuya_sensor(
dp_id=50,
attribute_name="power_factor",
fallback_name="power_factor",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER_FACTOR,
# unit=PERCENTAGE,
)
.tuya_sensor(
dp_id=103,
attribute_name="voltage_phase_1",
fallback_name="voltage_phase_1",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.VOLTAGE,
divisor=10,
unit=UnitOfElectricPotential.VOLT,
)
.tuya_sensor(
dp_id=104,
attribute_name="current_phase_1",
fallback_name="current_phase_1",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.CURRENT,
divisor=1000,
unit=UnitOfElectricCurrent.AMPERE,
)
.tuya_sensor(
dp_id=105,
attribute_name="power_phase_1",
fallback_name="power_phase_1",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER,
unit=UnitOfPower.WATT,
)
.tuya_sensor(
dp_id=108,
attribute_name="power_factor_phase_1",
fallback_name="power_factor_phase_1",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER_FACTOR,
# unit=PERCENTAGE,
)
.tuya_sensor(
dp_id=109,
attribute_name="energy_phase_1",
fallback_name="energy_phase_1",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.tuya_sensor(
dp_id=110,
attribute_name="energy_produced_phase_1",
fallback_name="energy_produced_phase_1",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.tuya_sensor(
dp_id=112,
attribute_name="voltage_phase_2",
fallback_name="voltage_phase_2",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.VOLTAGE,
divisor=10,
unit=UnitOfElectricPotential.VOLT,
)
.tuya_sensor(
dp_id=113,
attribute_name="current_phase_2",
fallback_name="current_phase_2",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.CURRENT,
divisor=1000,
unit=UnitOfElectricCurrent.AMPERE,
)
.tuya_sensor(
dp_id=114,
attribute_name="power_phase_2",
fallback_name="power_phase_2",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER,
unit=UnitOfPower.WATT,
)
.tuya_sensor(
dp_id=117,
attribute_name="power_factor_phase_2",
fallback_name="power_factor_phase_2",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER_FACTOR,
# unit=PERCENTAGE,
)
.tuya_sensor(
dp_id=118,
attribute_name="energy_phase_2",
fallback_name="energy_phase_2",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.tuya_sensor(
dp_id=119,
attribute_name="energy_produced_phase_2",
fallback_name="energy_produced_phase_2",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.tuya_sensor(
dp_id=121,
attribute_name="voltage_phase_3",
fallback_name="voltage_phase_3",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.VOLTAGE,
divisor=10,
unit=UnitOfElectricPotential.VOLT,
)
.tuya_sensor(
dp_id=122,
attribute_name="current_phase_3",
fallback_name="current_phase_3",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.CURRENT,
divisor=1000,
unit=UnitOfElectricCurrent.AMPERE,
)
.tuya_sensor(
dp_id=123,
attribute_name="power_phase_3",
fallback_name="power_phase_3",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER,
unit=UnitOfPower.WATT,
)
.tuya_sensor(
dp_id=126,
attribute_name="power_factor_phase_3",
fallback_name="power_factor_phase_3",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER_FACTOR,
# unit=PERCENTAGE,
)
.tuya_sensor(
dp_id=127,
attribute_name="energy_phase_3",
fallback_name="energy_phase_3",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.tuya_sensor(
dp_id=128,
attribute_name="energy_produced_phase_3",
fallback_name="energy_produced_phase_3",
type=t.uint16_t,
state_class=SensorStateClass.TOTAL,
device_class=SensorDeviceClass.ENERGY,
unit=UnitOfEnergy.KILO_WATT_HOUR,
divisor=100,
)
.add_to_registry()
)
Loading