Skip to content

Commit 5931b01

Browse files
committed
Init quirk
1 parent 8124411 commit 5931b01

File tree

2 files changed

+175
-0
lines changed

2 files changed

+175
-0
lines changed

tests/test_tuya_sensor.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,19 @@
2424
("_TZE200_zppcgbdj", "TS0601", 100, 10),
2525
("_TZE200_s1xgth2u", "TS0601", 100, 10),
2626
("_TZE284_qyflbnbj", "TS0601", 100, 10),
27+
(
28+
"_TZE200_lve3dvpy",
29+
"TS0601",
30+
100,
31+
10,
32+
), # TH01Z - Temperature and humidity sensor with clock
33+
("_TZE200_c7emyjom", "TS0601", 100, 10),
34+
("_TZE200_locansqn", "TS0601", 100, 10),
35+
("_TZE200_qrztc3ev", "TS0601", 100, 10),
36+
("_TZE200_snloy4rw", "TS0601", 100, 10),
37+
("_TZE200_eanjj2pa", "TS0601", 100, 10),
38+
("_TZE200_ydrdfkim", "TS0601", 100, 10),
39+
("_TZE284_locansqn", "TS0601", 100, 10),
2740
],
2841
)
2942
async def test_handle_get_data(

zhaquirks/tuya/ts0601_sensor.py

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,28 @@
11
"""Tuya temp and humidity sensors."""
22

3+
from zigpy.quirks.v2 import EntityPlatform, EntityType
4+
from zigpy.quirks.v2.homeassistant import PERCENTAGE, UnitOfTemperature, UnitOfTime
35
from zigpy.quirks.v2.homeassistant.sensor import SensorDeviceClass, SensorStateClass
46
import zigpy.types as t
57

68
from zhaquirks.tuya.builder import TuyaPowerConfigurationCluster2AAA, TuyaQuirkBuilder
79

10+
11+
class TuyaTempUnitConvert(t.enum8):
12+
"""Tuya temperature unit convert enum."""
13+
14+
Celsius = 0x00
15+
Fahrenheit = 0x01
16+
17+
18+
class TuyaNousTempHumiAlarm(t.enum8):
19+
"""Tuya temperature and humidity alarm enum."""
20+
21+
LowerAlarm = 0x00
22+
UpperAlarm = 0x01
23+
Canceled = 0x02
24+
25+
826
(
927
TuyaQuirkBuilder("_TZE200_bjawzodf", "TS0601")
1028
.applies_to("_TZE200_zl1kmjqx", "TS0601")
@@ -32,6 +50,150 @@
3250
.add_to_registry()
3351
)
3452

53+
# TH01Z - Temperature and humidity sensor with clock
54+
(
55+
TuyaQuirkBuilder("_TZE200_lve3dvpy", "TS0601")
56+
.applies_to("_TZE200_c7emyjom", "TS0601")
57+
.applies_to("_TZE200_locansqn", "TS0601")
58+
.applies_to("_TZE200_qrztc3ev", "TS0601")
59+
.applies_to("_TZE200_snloy4rw", "TS0601")
60+
.applies_to("_TZE200_eanjj2pa", "TS0601")
61+
.applies_to("_TZE200_ydrdfkim", "TS0601")
62+
.applies_to("_TZE284_locansqn", "TS0601")
63+
.tuya_temperature(dp_id=1, scale=10)
64+
.tuya_humidity(dp_id=2)
65+
.tuya_battery(dp_id=4)
66+
.tuya_number(
67+
dp_id=17,
68+
attribute_name="temperature_report_interval",
69+
type=t.uint16_t,
70+
device_class=SensorDeviceClass.DURATION,
71+
unit=UnitOfTime.MINUTES,
72+
min_value=5,
73+
max_value=120,
74+
step=5,
75+
entity_type=EntityType.CONFIG,
76+
translation_key="temperature_report_interval",
77+
fallback_name="Temperature report interval",
78+
)
79+
.tuya_number(
80+
dp_id=18,
81+
attribute_name="humidity_report_interval",
82+
type=t.uint16_t,
83+
device_class=SensorDeviceClass.DURATION,
84+
unit=UnitOfTime.MINUTES,
85+
min_value=5,
86+
max_value=120,
87+
step=5,
88+
entity_type=EntityType.CONFIG,
89+
translation_key="humidity_report_interval",
90+
fallback_name="Humidity report interval",
91+
)
92+
.tuya_enum(
93+
dp_id=9,
94+
attribute_name="temp_unit_conv",
95+
enum_class=TuyaTempUnitConvert,
96+
entity_type=EntityType.CONFIG,
97+
translation_key="self_test",
98+
fallback_name="Display unit",
99+
)
100+
.tuya_enum(
101+
dp_id=14,
102+
attribute_name="temperature_alarm",
103+
enum_class=TuyaNousTempHumiAlarm,
104+
entity_platform=EntityPlatform.SENSOR,
105+
entity_type=EntityType.STANDARD,
106+
translation_key="temperature_alarm",
107+
fallback_name="Temperature alarm",
108+
)
109+
.tuya_number(
110+
dp_id=10,
111+
attribute_name="max_temperature",
112+
type=t.uint16_t,
113+
unit=UnitOfTemperature.CELSIUS,
114+
min_value=-20,
115+
max_value=60,
116+
step=1,
117+
multiplier=0.1,
118+
entity_type=EntityType.CONFIG,
119+
translation_key="max_temperature",
120+
fallback_name="Alarm temperature max",
121+
)
122+
.tuya_number(
123+
dp_id=11,
124+
attribute_name="min_temperature",
125+
type=t.uint16_t,
126+
unit=UnitOfTemperature.CELSIUS,
127+
min_value=-20,
128+
max_value=60,
129+
step=1,
130+
multiplier=0.1,
131+
entity_type=EntityType.CONFIG,
132+
translation_key="min_temperature",
133+
fallback_name="Alarm temperature min",
134+
)
135+
.tuya_number(
136+
dp_id=19,
137+
attribute_name="temperature_sensitivity",
138+
type=t.uint16_t,
139+
unit=UnitOfTemperature.CELSIUS,
140+
min_value=0.1,
141+
max_value=50,
142+
step=0.1,
143+
multiplier=0.1,
144+
entity_type=EntityType.CONFIG,
145+
translation_key="temperature_sensitivity",
146+
fallback_name="Temperature sensitivity",
147+
)
148+
.tuya_enum(
149+
dp_id=15,
150+
attribute_name="humidity_alarm",
151+
enum_class=TuyaNousTempHumiAlarm,
152+
entity_platform=EntityPlatform.SENSOR,
153+
entity_type=EntityType.STANDARD,
154+
translation_key="humidity_alarm",
155+
fallback_name="Humidity alarm",
156+
)
157+
.tuya_number(
158+
dp_id=12,
159+
attribute_name="max_humidity",
160+
type=t.uint16_t,
161+
unit=PERCENTAGE,
162+
min_value=0,
163+
max_value=100,
164+
step=1,
165+
entity_type=EntityType.CONFIG,
166+
translation_key="max_humidity",
167+
fallback_name="Alarm humidity max",
168+
)
169+
.tuya_number(
170+
dp_id=13,
171+
attribute_name="min_humidity",
172+
type=t.uint16_t,
173+
unit=PERCENTAGE,
174+
min_value=0,
175+
max_value=100,
176+
step=1,
177+
entity_type=EntityType.CONFIG,
178+
translation_key="min_humidity",
179+
fallback_name="Alarm humidity min",
180+
)
181+
.tuya_number(
182+
dp_id=20,
183+
attribute_name="humidity_sensitivity",
184+
type=t.uint16_t,
185+
unit=PERCENTAGE,
186+
min_value=1,
187+
max_value=100,
188+
step=1,
189+
entity_type=EntityType.CONFIG,
190+
translation_key="humidity_report_interval",
191+
fallback_name="Humidity report interval",
192+
)
193+
.skip_configuration()
194+
.add_to_registry()
195+
)
196+
35197

36198
(
37199
TuyaQuirkBuilder("_TZE200_yjjdcqsq", "TS0601")

0 commit comments

Comments
 (0)