1
1
"""Sonoff SNZB-02D - Zigbee LCD smart temperature humidity sensor."""
2
2
3
3
from zigpy .quirks import CustomCluster
4
- from zigpy .quirks .v2 import QuirkBuilder
4
+ from zigpy .quirks .v2 import NumberDeviceClass , QuirkBuilder
5
5
from zigpy .quirks .v2 .homeassistant import PERCENTAGE , UnitOfTemperature
6
6
import zigpy .types as t
7
7
from zigpy .zcl import foundation
@@ -50,6 +50,16 @@ class AttributeDefs(BaseAttributeDefs):
50
50
zcl_type = DataTypeId .uint16 ,
51
51
)
52
52
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
+
53
63
54
64
(
55
65
QuirkBuilder ("SONOFF" , "SNZB-02D" )
@@ -60,6 +70,7 @@ class AttributeDefs(BaseAttributeDefs):
60
70
min_value = - 10 ,
61
71
max_value = 60 ,
62
72
step = 0.1 ,
73
+ device_class = NumberDeviceClass .TEMPERATURE ,
63
74
unit = UnitOfTemperature .CELSIUS ,
64
75
multiplier = 0.01 ,
65
76
translation_key = "comfort_temperature_min" ,
@@ -71,6 +82,7 @@ class AttributeDefs(BaseAttributeDefs):
71
82
min_value = - 10 ,
72
83
max_value = 60 ,
73
84
step = 0.1 ,
85
+ device_class = NumberDeviceClass .TEMPERATURE ,
74
86
unit = UnitOfTemperature .CELSIUS ,
75
87
multiplier = 0.01 ,
76
88
translation_key = "comfort_temperature_max" ,
@@ -82,6 +94,7 @@ class AttributeDefs(BaseAttributeDefs):
82
94
min_value = 5 ,
83
95
max_value = 95 ,
84
96
step = 0.1 ,
97
+ device_class = NumberDeviceClass .HUMIDITY ,
85
98
unit = PERCENTAGE ,
86
99
multiplier = 0.01 ,
87
100
translation_key = "comfort_humidity_min" ,
@@ -93,6 +106,7 @@ class AttributeDefs(BaseAttributeDefs):
93
106
min_value = 5 ,
94
107
max_value = 95 ,
95
108
step = 0.1 ,
109
+ device_class = NumberDeviceClass .HUMIDITY ,
96
110
unit = PERCENTAGE ,
97
111
multiplier = 0.01 ,
98
112
translation_key = "comfort_humidity_max" ,
@@ -105,5 +119,29 @@ class AttributeDefs(BaseAttributeDefs):
105
119
translation_key = "display_unit" ,
106
120
fallback_name = "Display unit" ,
107
121
)
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
+ )
108
146
.add_to_registry ()
109
147
)
0 commit comments