From 3ab27a65e04adf1058123c3bafb16d5c65fce9a3 Mon Sep 17 00:00:00 2001 From: DesertRatUa Date: Tue, 25 Nov 2025 10:39:34 +0100 Subject: [PATCH 1/3] Add basic support for TZE284_hodyryli --- zhaquirks/tuya/tuya_sensor.py | 57 +++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/zhaquirks/tuya/tuya_sensor.py b/zhaquirks/tuya/tuya_sensor.py index d37be72437..a47dc6f275 100644 --- a/zhaquirks/tuya/tuya_sensor.py +++ b/zhaquirks/tuya/tuya_sensor.py @@ -2,9 +2,9 @@ import datetime -from zigpy.quirks.v2 import EntityPlatform, EntityType +from zigpy.quirks.v2 import BinarySensorDeviceClass, EntityPlatform, EntityType from zigpy.quirks.v2.homeassistant import PERCENTAGE, UnitOfTemperature, UnitOfTime -from zigpy.quirks.v2.homeassistant.sensor import SensorDeviceClass +from zigpy.quirks.v2.homeassistant.sensor import SensorDeviceClass, SensorStateClass import zigpy.types as t from zigpy.zcl import foundation @@ -32,6 +32,21 @@ class TuyaNousTempHumiAlarm(t.enum8): Canceled = 0x02 +class TuyaBatteryState(t.enum8): + """Tuya battery state enum.""" + + Low = 0x00 + Medium = 0x01 + Full = 0x02 + + +class TuyaTimeFormat(t.enum8): + """Tuya time format enum.""" + + Format24h = 0x00 + Format12h = 0x01 + + class NoManufTimeTuyaMCUCluster(TuyaMCUCluster): """Tuya Manufacturer Cluster with set_time mod.""" @@ -47,6 +62,13 @@ class ServerCommandDefs(TuyaMCUCluster.ServerCommandDefs): is_manufacturer_specific=False, ) + class ClientCommandDefs(TuyaMCUCluster.ClientCommandDefs): + """Client command definitions.""" + + set_time_request = foundation.ZCLCommandDef( + id=TUYA_SET_TIME, schema={"data": t.data16}, is_manufacturer_specific=False + ) + ( TuyaQuirkBuilder("_TZE200_bjawzodf", "TS0601") @@ -333,3 +355,34 @@ class ServerCommandDefs(TuyaMCUCluster.ServerCommandDefs): .skip_configuration() .add_to_registry() ) + +# Sensor with clock, internal/external temperature and humidity +( + TuyaQuirkBuilder("_TZE284_hodyryli", "TS0601") + # Internal temperature (DP 1, scale=10) + .tuya_temperature(dp_id=1, scale=10) + # Internal humidity (DP 2) + .tuya_humidity(dp_id=2) + # Battery from battery_state (DP 3: 0=10%, 1=50%, 2=100%) + .tuya_dp( + dp_id=3, + ep_attribute=TuyaPowerConfigurationCluster2AAA.ep_attribute, + attribute_name="battery_percentage_remaining", + converter=lambda x: {0: 10, 1: 50, 2: 100}[x], + ) + .adds(TuyaPowerConfigurationCluster2AAA) + # External temperature sensor (DP 38, value needs to be divided by 100 to get correct temperature) + .tuya_sensor( + dp_id=38, + attribute_name="temperature_external", + type=t.int32s, + converter=lambda x: x / 100, # Divide by 100 to get correct temperature + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + unit=UnitOfTemperature.CELSIUS, + translation_key="temperature_external", + fallback_name="Temperature Probe", + ) + .skip_configuration() + .add_to_registry(replacement_cluster=NoManufTimeTuyaMCUCluster) +) From 0d77ae6abea7f62b2674ebad96783a618f2a00f7 Mon Sep 17 00:00:00 2001 From: DesertRatUa Date: Mon, 1 Dec 2025 19:30:46 +0100 Subject: [PATCH 2/3] Fix multiplayer --- zhaquirks/tuya/tuya_sensor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zhaquirks/tuya/tuya_sensor.py b/zhaquirks/tuya/tuya_sensor.py index a47dc6f275..da0cd3d79b 100644 --- a/zhaquirks/tuya/tuya_sensor.py +++ b/zhaquirks/tuya/tuya_sensor.py @@ -376,7 +376,7 @@ class ClientCommandDefs(TuyaMCUCluster.ClientCommandDefs): dp_id=38, attribute_name="temperature_external", type=t.int32s, - converter=lambda x: x / 100, # Divide by 100 to get correct temperature + converter=lambda x: x / 10, # Divide by 10 to get correct temperature device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, unit=UnitOfTemperature.CELSIUS, From ad4e26533bb3fe94098bfac644afdc19a3375284 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 18:32:54 +0000 Subject: [PATCH 3/3] Apply pre-commit auto fixes --- zhaquirks/tuya/tuya_sensor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zhaquirks/tuya/tuya_sensor.py b/zhaquirks/tuya/tuya_sensor.py index da0cd3d79b..d447fad206 100644 --- a/zhaquirks/tuya/tuya_sensor.py +++ b/zhaquirks/tuya/tuya_sensor.py @@ -2,7 +2,7 @@ import datetime -from zigpy.quirks.v2 import BinarySensorDeviceClass, EntityPlatform, EntityType +from zigpy.quirks.v2 import EntityPlatform, EntityType from zigpy.quirks.v2.homeassistant import PERCENTAGE, UnitOfTemperature, UnitOfTime from zigpy.quirks.v2.homeassistant.sensor import SensorDeviceClass, SensorStateClass import zigpy.types as t