From 463bbc730c077eae88d0af3e32948a4345df1914 Mon Sep 17 00:00:00 2001 From: jintj Date: Thu, 9 Oct 2025 11:21:37 +0800 Subject: [PATCH 1/4] update --- zhaquirks/thirdreality/door_sensor_v2.py | 40 ++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 zhaquirks/thirdreality/door_sensor_v2.py diff --git a/zhaquirks/thirdreality/door_sensor_v2.py b/zhaquirks/thirdreality/door_sensor_v2.py new file mode 100644 index 0000000000..b75d80d6e2 --- /dev/null +++ b/zhaquirks/thirdreality/door_sensor_v2.py @@ -0,0 +1,40 @@ +"""Third Reality door sensor devices.""" + +from typing import Final + +from zigpy.quirks import CustomCluster +from zigpy.quirks.v2 import QuirkBuilder +from zigpy.quirks.v2.homeassistant import UnitOfTime +import zigpy.types as t +from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef + + +class ThirdRealityDoorCluster(CustomCluster): + """Third Reality's door sensor private cluster.""" + + cluster_id = 0xFF01 + + class AttributeDefs(BaseAttributeDefs): + """Define the attributes of a private cluster.""" + + open_delay_time: Final = ZCLAttributeDef( + id=0x0000, + type=t.uint16_t, + is_manufacturer_specific=True, + ) + + +( + QuirkBuilder("Third Reality, Inc", "3RDS17BZ") + .replaces(ThirdRealityDoorCluster) + .number( + attribute_name=ThirdRealityDoorCluster.AttributeDefs.open_delay_time.name, + min_value=0, + max_value=3600, + unit=UnitOfTime.SECONDS, + cluster_id=ThirdRealityDoorCluster.cluster_id, + translation_key="open_delay_time", + fallback_name="Open Delay Time", + ) + .add_to_registry() +) From d7dbb0c3ca1ba86e718dffd6330b1a4992d4106c Mon Sep 17 00:00:00 2001 From: jintj Date: Fri, 10 Oct 2025 18:20:19 +0800 Subject: [PATCH 2/4] update --- zhaquirks/thirdreality/door_sensor_v2.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zhaquirks/thirdreality/door_sensor_v2.py b/zhaquirks/thirdreality/door_sensor_v2.py index b75d80d6e2..7184106ef6 100644 --- a/zhaquirks/thirdreality/door_sensor_v2.py +++ b/zhaquirks/thirdreality/door_sensor_v2.py @@ -6,6 +6,7 @@ from zigpy.quirks.v2 import QuirkBuilder from zigpy.quirks.v2.homeassistant import UnitOfTime import zigpy.types as t +from zigpy.quirks.v2.homeassistant.number import NumberDeviceClass from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef @@ -32,9 +33,10 @@ class AttributeDefs(BaseAttributeDefs): min_value=0, max_value=3600, unit=UnitOfTime.SECONDS, + device_class=NumberDeviceClass.DURATION, cluster_id=ThirdRealityDoorCluster.cluster_id, translation_key="open_delay_time", - fallback_name="Open Delay Time", + fallback_name="Open delay time", ) .add_to_registry() ) From b3a5605572bbcb90cb6860b910b2e719bd455507 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 10:22:42 +0000 Subject: [PATCH 3/4] Apply pre-commit auto fixes --- zhaquirks/thirdreality/door_sensor_v2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zhaquirks/thirdreality/door_sensor_v2.py b/zhaquirks/thirdreality/door_sensor_v2.py index 7184106ef6..01448d190c 100644 --- a/zhaquirks/thirdreality/door_sensor_v2.py +++ b/zhaquirks/thirdreality/door_sensor_v2.py @@ -5,8 +5,8 @@ from zigpy.quirks import CustomCluster from zigpy.quirks.v2 import QuirkBuilder from zigpy.quirks.v2.homeassistant import UnitOfTime -import zigpy.types as t from zigpy.quirks.v2.homeassistant.number import NumberDeviceClass +import zigpy.types as t from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef From be8cf1fc583a62fd18b0c3d4f02c489ae2491118 Mon Sep 17 00:00:00 2001 From: TheJulianJES Date: Fri, 10 Oct 2025 16:23:51 +0200 Subject: [PATCH 4/4] Change kwargs order --- zhaquirks/thirdreality/door_sensor_v2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zhaquirks/thirdreality/door_sensor_v2.py b/zhaquirks/thirdreality/door_sensor_v2.py index 01448d190c..35f63d964a 100644 --- a/zhaquirks/thirdreality/door_sensor_v2.py +++ b/zhaquirks/thirdreality/door_sensor_v2.py @@ -30,11 +30,11 @@ class AttributeDefs(BaseAttributeDefs): .replaces(ThirdRealityDoorCluster) .number( attribute_name=ThirdRealityDoorCluster.AttributeDefs.open_delay_time.name, + cluster_id=ThirdRealityDoorCluster.cluster_id, min_value=0, max_value=3600, unit=UnitOfTime.SECONDS, device_class=NumberDeviceClass.DURATION, - cluster_id=ThirdRealityDoorCluster.cluster_id, translation_key="open_delay_time", fallback_name="Open delay time", )