Skip to content

Commit 0847f71

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

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

zhaquirks/sonoff/snzb03p.py

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

0 commit comments

Comments
 (0)