2
2
3
3
from zigpy .quirks import CustomCluster
4
4
from zigpy .quirks .v2 import QuirkBuilder
5
+ from zigpy .quirks .v2 .homeassistant .binary_sensor import BinarySensorDeviceClass
5
6
import zigpy .types as t
6
7
from zigpy .zcl .foundation import BaseAttributeDefs , ZCLAttributeDef
7
8
@@ -15,8 +16,8 @@ class ValveState(t.enum8):
15
16
Water_Shortage_And_Leakage = 3
16
17
17
18
18
- class EwelinkCluster (CustomCluster ):
19
- """Ewelink specific cluster."""
19
+ class CustomSonoffCluster (CustomCluster ):
20
+ """Custom Sonoff cluster."""
20
21
21
22
cluster_id = 0xFC11
22
23
@@ -35,6 +36,24 @@ def _is_manuf_specific(self):
35
36
36
37
(
37
38
QuirkBuilder ("SONOFF" , "SWV" )
38
- .replaces (EwelinkCluster )
39
+ .replaces (CustomSonoffCluster )
40
+ .binary_sensor (
41
+ CustomSonoffCluster .AttributeDefs .water_valve_state .name ,
42
+ CustomSonoffCluster .cluster_id ,
43
+ device_class = BinarySensorDeviceClass .PROBLEM ,
44
+ unique_id_suffix = "water_leak_status" ,
45
+ translation_key = "water_leak" ,
46
+ fallback_name = "Water leak" ,
47
+ attribute_converter = lambda x : x & ValveState .Water_Shortage ,
48
+ )
49
+ .binary_sensor (
50
+ CustomSonoffCluster .AttributeDefs .water_valve_state .name ,
51
+ CustomSonoffCluster .cluster_id ,
52
+ device_class = BinarySensorDeviceClass .PROBLEM ,
53
+ unique_id_suffix = "water_supply_status" ,
54
+ translation_key = "water_supply" ,
55
+ fallback_name = "Water supply" ,
56
+ attribute_converter = lambda x : x & ValveState .Water_Leakage ,
57
+ )
39
58
.add_to_registry ()
40
59
) # fmt: skip
0 commit comments