diff --git a/zhaquirks/thirdreality/watering_kit.py b/zhaquirks/thirdreality/watering_kit.py new file mode 100644 index 0000000000..fd0adba691 --- /dev/null +++ b/zhaquirks/thirdreality/watering_kit.py @@ -0,0 +1,60 @@ +"""Third Reality watering kit devices.""" + +from typing import Final + +from zigpy.quirks import CustomCluster +from zigpy.quirks.v2 import QuirkBuilder +from zigpy.quirks.v2.homeassistant import UnitOfTime +from zigpy.quirks.v2.homeassistant.number import NumberDeviceClass +import zigpy.types as t +from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef + + +class ThirdRealityWateringKitCluster(CustomCluster): + """Third Reality's watering kit private cluster.""" + + cluster_id = 0xFFF2 + + class AttributeDefs(BaseAttributeDefs): + """Define the attributes of a private cluster.""" + + water_duration: Final = ZCLAttributeDef( + id=0x0000, + type=t.uint16_t, + is_manufacturer_specific=True, + ) + + water_interval: Final = ZCLAttributeDef( + id=0x0001, + type=t.uint8_t, + is_manufacturer_specific=True, + ) + + +( + QuirkBuilder("Third Reality, Inc", "3RWK0148Z") + .replaces(ThirdRealityWateringKitCluster) + .number( + attribute_name=ThirdRealityWateringKitCluster.AttributeDefs.water_duration.name, + min_value=1, + max_value=1800, + step=1, + device_class=NumberDeviceClass.DURATION, + unit=UnitOfTime.SECONDS, + cluster_id=ThirdRealityWateringKitCluster.cluster_id, + translation_key="water_duration", + fallback_name="Water duration", + ) + .number( + attribute_name=ThirdRealityWateringKitCluster.AttributeDefs.water_interval.name, + min_value=0, + max_value=30, + step=1, + device_class=NumberDeviceClass.DURATION, + unit=UnitOfTime.DAYS, + cluster_id=ThirdRealityWateringKitCluster.cluster_id, + translation_key="water_interval", + fallback_name="Water interval", + ) + .add_to_registry() +)