Skip to content

Commit

Permalink
Add Tuya motion sensor _TZE204_kyhbrfyl (#3680)
Browse files Browse the repository at this point in the history
  • Loading branch information
prairiesnpr authored Jan 16, 2025
1 parent 6c22205 commit 69dd900
Show file tree
Hide file tree
Showing 2 changed files with 87 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 @@ -46,6 +46,7 @@
("_TZE284_4qznlkbu", "TS0601", ZCL_TUYA_MOTION),
("_TZE200_sbyx0lm6", "TS0601", ZCL_TUYA_MOTION),
("_TZE204_muvkrjr5", "TS0601", ZCL_TUYA_MOTION),
("_TZE204_kyhbrfyl", "TS0601", ZCL_TUYA_MOTION),
],
)
async def test_tuya_motion_quirk_occ(zigpy_device_from_v2_quirk, model, manuf, occ_msg):
Expand Down
86 changes: 86 additions & 0 deletions zhaquirks/tuya/ts0601_motion.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,14 @@ class TuyaMotionSensorMode(t.enum8):
Unoccupied = 0x03


class TuyaHumanMotionState(t.enum8):
"""Tuya human motion state enum."""

Off = 0x00
Small = 0x01
Large = 0x02


base_tuya_motion = (
TuyaQuirkBuilder()
.adds(TuyaOccupancySensing)
Expand Down Expand Up @@ -552,3 +560,81 @@ class TuyaMotionSensorMode(t.enum8):
.skip_configuration()
.add_to_registry()
)


(
TuyaQuirkBuilder("_TZE204_kyhbrfyl", "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_enum(
dp_id=11,
attribute_name="human_motion_state",
enum_class=TuyaHumanMotionState,
entity_platform=EntityPlatform.SENSOR,
entity_type=EntityType.STANDARD,
translation_key="human_motion_state",
fallback_name="Human motion state",
)
.tuya_number(
dp_id=12,
attribute_name="fading_time",
type=t.uint16_t,
device_class=SensorDeviceClass.DURATION,
unit=UnitOfTime.SECONDS,
min_value=3,
max_value=600,
step=1,
translation_key="fading_time",
fallback_name="Fading time",
)
.tuya_number(
dp_id=13,
attribute_name="detection_distance_max",
type=t.uint16_t,
device_class=SensorDeviceClass.DISTANCE,
unit=UnitOfLength.CENTIMETERS,
min_value=150,
max_value=600,
step=1,
translation_key="detection_distance_max",
fallback_name="Maximum range",
)
.tuya_number(
dp_id=15,
attribute_name="radar_sensitivity",
type=t.uint16_t,
min_value=0,
max_value=7,
step=1,
translation_key="radar_sensitivity",
fallback_name="Radar sensitivity",
)
.tuya_number(
dp_id=16,
attribute_name="presence_sensitivity",
type=t.uint16_t,
min_value=0,
max_value=7,
step=1,
translation_key="presence_sensitivity",
fallback_name="Presence sensitivity",
)
.tuya_sensor(
dp_id=19,
attribute_name="target_distance",
type=t.uint16_t,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.DISTANCE,
unit=UnitOfLength.CENTIMETERS,
entity_type=EntityType.STANDARD,
translation_key="target_distance",
fallback_name="Target distance",
)
.skip_configuration()
.add_to_registry()
)

0 comments on commit 69dd900

Please sign in to comment.