Skip to content

Commit d876b1c

Browse files
committed
Add Schneider Electric Thermostats
1 parent bc2aa90 commit d876b1c

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
"""Schneider Electric thermostats quirks."""
2+
3+
from typing import Final
4+
5+
from zigpy.quirks import CustomCluster
6+
from zigpy.quirks.v2 import QuirkBuilder
7+
import zigpy.types as t
8+
from zigpy.zcl import foundation
9+
from zigpy.zcl.clusters.measurement import TemperatureMeasurement
10+
from zigpy.zcl.clusters.smartenergy import Metering
11+
12+
from zhaquirks.schneiderelectric import SE_MANUF_NAME
13+
14+
15+
class SETemperatureSensorType(t.enum8):
16+
"""Temperature sensor connected to thermostat."""
17+
18+
Sensor2kOhm = 0x01
19+
Sensor10kOhm = 0x02
20+
Sensor12kOhm = 0x03
21+
Sensor15kOhm = 0x04
22+
Sensor33kOhm = 0x05
23+
Sensor47kOhm = 0x06
24+
SensorAbsent = 0xFF
25+
26+
27+
class SEMetering(CustomCluster, Metering):
28+
"""Schneider Electric Metering cluster."""
29+
30+
class AttributeDefs(Metering.AttributeDefs):
31+
"""Schneider Electric Metering cluster attributes."""
32+
33+
# This attribute specifies the demand of a switched load when it is energised
34+
fixed_load_demand: Final = foundation.ZCLAttributeDef(
35+
id=0x4510,
36+
type=t.uint24_t,
37+
access="rw",
38+
is_manufacturer_specific=True,
39+
)
40+
41+
42+
class SETemperatureMeasurementExternal(CustomCluster, TemperatureMeasurement):
43+
"""Schneider Electric Temperature Measurement cluster for external (floor) temperature input."""
44+
45+
class AttributeDefs(TemperatureMeasurement.AttributeDefs):
46+
"""Schneider Electric Temperature Measurement cluster attributes."""
47+
48+
temperature_sensor_type: Final = foundation.ZCLAttributeDef(
49+
id=0xE021,
50+
type=SETemperatureSensorType,
51+
access="rw",
52+
is_manufacturer_specific=True,
53+
)
54+
55+
56+
(
57+
QuirkBuilder(SE_MANUF_NAME, "EKO07259")
58+
.also_applies_to(SE_MANUF_NAME, "WDE002497")
59+
.also_applies_to(SE_MANUF_NAME, "WDE011680")
60+
.replaces(SEMetering, endpoint_id=5)
61+
.replaces(SETemperatureMeasurementExternal, endpoint_id=3)
62+
.add_to_registry()
63+
)

0 commit comments

Comments
 (0)