Skip to content

Commit 0ce8446

Browse files
Filip Mösnerpanther7
Filip Mösner
authored andcommitted
Add Sonoff SNZB-03P motion sensor (#3188)
1 parent 2fd3586 commit 0ce8446

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

zhaquirks/sonoff/snzb03p.py

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
"""Sonoff SNZB-03P - Zigbee motion sensor."""
2+
3+
from zigpy.quirks import CustomCluster
4+
from zigpy.quirks.v2 import EntityPlatform, EntityType, NumberDeviceClass, QuirkBuilder
5+
from zigpy.quirks.v2.homeassistant import UnitOfTime
6+
import zigpy.types as t
7+
from zigpy.zcl.clusters.measurement import OccupancySensing
8+
from zigpy.zcl.clusters.security import IasZone
9+
from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef
10+
11+
12+
class LastIlluminationState(t.enum8):
13+
"""Last measureed state of illumination enum."""
14+
15+
Dark = 0x00
16+
Light = 0x01
17+
18+
19+
class SonoffIlluminationCluster(CustomCluster):
20+
"""Custom Sonoff illumination cluster."""
21+
22+
cluster_id = 0xFC11
23+
24+
class AttributeDefs(BaseAttributeDefs):
25+
"""Attribute definitions."""
26+
27+
last_illumination_state = ZCLAttributeDef(
28+
id=0x2001,
29+
type=LastIlluminationState,
30+
access="rp",
31+
is_manufacturer_specific=True,
32+
)
33+
34+
@property
35+
def _is_manuf_specific(self):
36+
return False
37+
38+
39+
(
40+
QuirkBuilder("eWeLink", "SNZB-03P")
41+
.replaces(SonoffIlluminationCluster)
42+
.removes(IasZone.cluster_id) # IasZone cluster 0x0500: remove motion detection
43+
.number(
44+
OccupancySensing.AttributeDefs.ultrasonic_o_to_u_delay.name,
45+
OccupancySensing.cluster_id,
46+
min_value=5,
47+
max_value=60,
48+
step=1,
49+
unit=UnitOfTime.SECONDS,
50+
device_class=NumberDeviceClass.DURATION,
51+
translation_key="motion_timeout",
52+
fallback_name="Presence detection timeout",
53+
)
54+
.enum(
55+
SonoffIlluminationCluster.AttributeDefs.last_illumination_state.name,
56+
LastIlluminationState,
57+
SonoffIlluminationCluster.cluster_id,
58+
entity_platform=EntityPlatform.SENSOR,
59+
entity_type=EntityType.STANDARD,
60+
translation_key="last_illumination_state",
61+
fallback_name="Last illumination state",
62+
)
63+
.add_to_registry()
64+
)

0 commit comments

Comments
 (0)