11"""Sonoff SNZB-02D - Zigbee LCD smart temperature humidity sensor.""" 
22
33from  zigpy .quirks  import  CustomCluster 
4- from  zigpy .quirks .v2  import  QuirkBuilder 
4+ from  zigpy .quirks .v2  import  NumberDeviceClass ,  QuirkBuilder 
55from  zigpy .quirks .v2 .homeassistant  import  PERCENTAGE , UnitOfTemperature 
66import  zigpy .types  as  t 
77from  zigpy .zcl  import  foundation 
@@ -50,6 +50,16 @@ class AttributeDefs(BaseAttributeDefs):
5050            zcl_type = DataTypeId .uint16 ,
5151        )
5252
53+         temperature_offset  =  ZCLAttributeDef (
54+             id = 0x2003 ,
55+             type = t .int16s ,
56+         )
57+ 
58+         humidity_offset  =  ZCLAttributeDef (
59+             id = 0x2004 ,
60+             type = t .int16s ,
61+         )
62+ 
5363
5464(
5565    QuirkBuilder ("SONOFF" , "SNZB-02D" )
@@ -60,6 +70,7 @@ class AttributeDefs(BaseAttributeDefs):
6070        min_value = - 10 ,
6171        max_value = 60 ,
6272        step = 0.1 ,
73+         device_class = NumberDeviceClass .TEMPERATURE ,
6374        unit = UnitOfTemperature .CELSIUS ,
6475        multiplier = 0.01 ,
6576        translation_key = "comfort_temperature_min" ,
@@ -71,6 +82,7 @@ class AttributeDefs(BaseAttributeDefs):
7182        min_value = - 10 ,
7283        max_value = 60 ,
7384        step = 0.1 ,
85+         device_class = NumberDeviceClass .TEMPERATURE ,
7486        unit = UnitOfTemperature .CELSIUS ,
7587        multiplier = 0.01 ,
7688        translation_key = "comfort_temperature_max" ,
@@ -82,6 +94,7 @@ class AttributeDefs(BaseAttributeDefs):
8294        min_value = 5 ,
8395        max_value = 95 ,
8496        step = 0.1 ,
97+         device_class = NumberDeviceClass .HUMIDITY ,
8598        unit = PERCENTAGE ,
8699        multiplier = 0.01 ,
87100        translation_key = "comfort_humidity_min" ,
@@ -93,6 +106,7 @@ class AttributeDefs(BaseAttributeDefs):
93106        min_value = 5 ,
94107        max_value = 95 ,
95108        step = 0.1 ,
109+         device_class = NumberDeviceClass .HUMIDITY ,
96110        unit = PERCENTAGE ,
97111        multiplier = 0.01 ,
98112        translation_key = "comfort_humidity_max" ,
@@ -105,5 +119,29 @@ class AttributeDefs(BaseAttributeDefs):
105119        translation_key = "display_unit" ,
106120        fallback_name = "Display unit" ,
107121    )
122+     .number (
123+         CustomSonoffCluster .AttributeDefs .temperature_offset .name ,
124+         CustomSonoffCluster .cluster_id ,
125+         min_value = - 50 ,
126+         max_value = 50 ,
127+         step = 0.1 ,
128+         device_class = NumberDeviceClass .TEMPERATURE ,
129+         unit = UnitOfTemperature .CELSIUS ,
130+         multiplier = 0.01 ,
131+         translation_key = "temperature_offset" ,
132+         fallback_name = "Temperature offset" ,
133+     )
134+     .number (
135+         CustomSonoffCluster .AttributeDefs .humidity_offset .name ,
136+         CustomSonoffCluster .cluster_id ,
137+         min_value = - 50 ,
138+         max_value = 50 ,
139+         step = 0.1 ,
140+         device_class = NumberDeviceClass .HUMIDITY ,
141+         unit = PERCENTAGE ,
142+         multiplier = 0.01 ,
143+         translation_key = "humidity_offset" ,
144+         fallback_name = "Humidity offset" ,
145+     )
108146    .add_to_registry ()
109147)
0 commit comments