Skip to content

Commit

Permalink
Add Tuya PIR motion sensor ZM-35ZH-Q _TZE200_gjldowol (#3705)
Browse files Browse the repository at this point in the history
  • Loading branch information
prairiesnpr authored Jan 20, 2025
1 parent f8e7128 commit 2a51a50
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
1 change: 1 addition & 0 deletions tests/test_tuya_motion.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
("_TZE204_sxm7l9xa", "TS0601", ZCL_TUYA_MOTION_V4),
("_TZE204_e5m9c5hl", "TS0601", ZCL_TUYA_MOTION_V4),
("_TZE204_uxllnywp", "TS0601", ZCL_TUYA_MOTION_V5),
("_TZE200_gjldowol", "TS0601", ZCL_TUYA_MOTION),
],
)
async def test_tuya_motion_quirk_occ(zigpy_device_from_v2_quirk, model, manuf, occ_msg):
Expand Down
62 changes: 62 additions & 0 deletions zhaquirks/tuya/ts0601_motion.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,14 @@ class TuyaMotionFadeTime(t.enum8):
_120_seconds = 0x03


class TuyaSensitivityMode(t.enum8):
"""Tuya sensitivity mode enum."""

Low = 0x00
Medium = 0x01
High = 0x02


base_tuya_motion = (
TuyaQuirkBuilder()
.adds(TuyaOccupancySensing)
Expand Down Expand Up @@ -1081,3 +1089,57 @@ class TuyaMotionFadeTime(t.enum8):
.skip_configuration()
.add_to_registry()
)


# Tuya PIR Motion Sensor ZM-35ZH-Q occupancy sensor
(
TuyaQuirkBuilder("_TZE200_gjldowol", "TS0601")
.tuya_dp(
dp_id=1,
ep_attribute=TuyaOccupancySensing.ep_attribute,
attribute_name=OccupancySensing.AttributeDefs.occupancy.name,
converter=lambda x: x == 1,
)
.adds(TuyaOccupancySensing)
.tuya_battery(dp_id=4)
.tuya_enum(
dp_id=9,
attribute_name="motion_sensitivity",
enum_class=TuyaSensitivityMode,
translation_key="motion_sensitivity",
fallback_name="Motion sensitivity",
)
.tuya_dp(
dp_id=12,
ep_attribute=TuyaIlluminanceCluster.ep_attribute,
attribute_name=TuyaIlluminanceCluster.AttributeDefs.measured_value.name,
converter=lambda x: 10000 * math.log10(x) + 1 if x != 0 else 0,
)
.adds(TuyaIlluminanceCluster)
.tuya_number(
dp_id=101,
attribute_name="illuminance_interval",
type=t.uint16_t,
device_class=SensorDeviceClass.DURATION,
unit=UnitOfTime.MINUTES,
min_value=1,
max_value=720,
step=1,
translation_key="illuminance_interval",
fallback_name="Illuminance interval",
)
.tuya_number(
dp_id=102,
attribute_name="fading_time",
type=t.uint16_t,
device_class=SensorDeviceClass.DURATION,
unit=UnitOfTime.SECONDS,
min_value=5,
max_value=3600,
step=1,
translation_key="fading_time",
fallback_name="Fading time",
)
.skip_configuration()
.add_to_registry()
)

0 comments on commit 2a51a50

Please sign in to comment.