From 1b7ac7e7d5aa326e7668056eba0a1fe002917ea3 Mon Sep 17 00:00:00 2001 From: hwzolin <448222024@qq.com> Date: Tue, 4 Mar 2025 17:13:50 +0800 Subject: [PATCH 1/2] Modify the private cluster of the temperature and humidity sensor. --- .../temperature_and_humidity_sensor_lite.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py diff --git a/zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py b/zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py new file mode 100644 index 0000000000..cd2c02b909 --- /dev/null +++ b/zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py @@ -0,0 +1,75 @@ +"""Third Reality temperature and humidity sensor devices.""" + +from typing import Final + +from zigpy.quirks import CustomCluster +from zigpy.quirks.v2 import QuirkBuilder +import zigpy.types as t +from zigpy.zcl.clusters.general import PollControl +from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef + + +class ThirdRealityTemperatureAndHumidityCluster(CustomCluster): + """Third Reality's temperature and humidity sensor lite private cluster.""" + + cluster_id = 0xFF01 + + class AttributeDefs(BaseAttributeDefs): + """Define the attributes of a private cluster.""" + + temperature_correction_fahrenheit: Final = ZCLAttributeDef( + id=0x0033, + type=t.int16s, + is_manufacturer_specific=True, + ) + + temperature_correction_celsius: Final = ZCLAttributeDef( + id=0x0031, + type=t.int16s, + is_manufacturer_specific=True, + ) + + humidity_correction: Final = ZCLAttributeDef( + id=0x0032, + type=t.int16s, + is_manufacturer_specific=True, + ) + + +( + QuirkBuilder("Third Reality, Inc", "3RTHS0224Z") + .also_applies_to("Third Reality","3RTHS0224Z") + .replaces(ThirdRealityTemperatureAndHumidityCluster) + .removes(PollControl.cluster_id) + .number( + attribute_name=ThirdRealityTemperatureAndHumidityCluster.AttributeDefs.temperature_correction_celsius.name, + min_value=-1000, + max_value=1000, + step=1, + # unit=UnitOfTemperature.CELSIUS, + cluster_id=ThirdRealityTemperatureAndHumidityCluster.cluster_id, + translation_key="temperature_correction_celsius", + fallback_name="Celsius/100", + ) + .number( + attribute_name=ThirdRealityTemperatureAndHumidityCluster.AttributeDefs.temperature_correction_fahrenheit.name, + min_value=-1800, + max_value=1800, + step=1, + # unit=UnitOfTemperature.FAHRENHEIT, + cluster_id=ThirdRealityTemperatureAndHumidityCluster.cluster_id, + translation_key="temperature_correction_fahrenheit", + fallback_name="Fahrenheit/100", + ) + .number( + attribute_name=ThirdRealityTemperatureAndHumidityCluster.AttributeDefs.humidity_correction.name, + min_value=-5000, + max_value=5000, + step=1, + # unit=PERCENTAGE, + cluster_id=ThirdRealityTemperatureAndHumidityCluster.cluster_id, + translation_key="humidity_correction", + fallback_name="Humidity Correction/100", + ) + .add_to_registry() +) From f23960dfffe1c75f6b0a22bc295188d66ed3c38d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 09:18:53 +0000 Subject: [PATCH 2/2] Apply pre-commit auto fixes --- zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py b/zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py index cd2c02b909..2e974ae9fd 100644 --- a/zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py +++ b/zhaquirks/thirdreality/temperature_and_humidity_sensor_lite.py @@ -38,7 +38,7 @@ class AttributeDefs(BaseAttributeDefs): ( QuirkBuilder("Third Reality, Inc", "3RTHS0224Z") - .also_applies_to("Third Reality","3RTHS0224Z") + .also_applies_to("Third Reality", "3RTHS0224Z") .replaces(ThirdRealityTemperatureAndHumidityCluster) .removes(PollControl.cluster_id) .number(