Skip to content

Commit ae22c34

Browse files
committed
Updates
1 parent b3dbb25 commit ae22c34

File tree

1 file changed

+262
-8
lines changed

1 file changed

+262
-8
lines changed

plugwise/devices.py

Lines changed: 262 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,129 @@
55
from typing import TypedDict
66

77

8-
@dataclass
9-
class AnnaData:
10-
"""Plugwise Anna data."""
8+
class BaseGateway:
9+
"""Plugwise Base Gateway data class."""
10+
11+
dev_class: str
12+
firmware: str
13+
location: str
14+
mac_address: str
15+
model: str
16+
name: str
17+
vendor: str
18+
19+
20+
class SmileP1Gateway(BaseGateway):
21+
"""Plugwise Smile P1 Gateway data class."""
22+
23+
binary_sensors: GatewayBinarySensors
24+
hardware: str
25+
model_id: str
26+
27+
28+
class SmartEnergyMeter:
29+
"""DSMR Energy Meter data class."""
30+
31+
available: bool
32+
dev_class: str
33+
location: str
34+
model: str
35+
name: str
36+
sensors: SmartEnergySensors
37+
vendor: str
38+
39+
40+
class SmartEnergySensors(TypedDict, total=False):
41+
"""DSMR Energy Meter sensors class."""
42+
electricity_consumed_off_peak_cumulative: float
43+
electricity_consumed_off_peak_interval: int
44+
electricity_consumed_off_peak_point: int
45+
electricity_consumed_peak_cumulative: float
46+
electricity_consumed_peak_interval: int
47+
electricity_consumed_peak_point: int,
48+
electricity_phase_one_consumed: int
49+
electricity_phase_one_produced: int
50+
electricity_phase_three_consumed: int
51+
electricity_phase_three_produced: int
52+
electricity_phase_two_consumed: int
53+
electricity_phase_two_produced: int
54+
electricity_produced_off_peak_cumulative: float
55+
electricity_produced_off_peak_interval: int
56+
electricity_produced_off_peak_point: int
57+
electricity_produced_peak_cumulative: float
58+
electricity_produced_peak_interval: int
59+
electricity_produced_peak_point: int
60+
gas_consumed_cumulative: float
61+
gas_consumed_interval: float
62+
net_electricity_cumulative:float
63+
net_electricity_point: int
64+
voltage_phase_one: float
65+
voltage_phase_three:float
66+
voltage_phase_two: float
67+
68+
69+
class StretchGateway(BaseGateway):
70+
"""Plugwise Stretch Gateway data class."""
71+
72+
zigbee_mac_address: str
73+
74+
75+
class SmileThermostatGateway(SmileP1Gateway):
76+
"""Plugwise Anna Smile-T Gateway data class."""
77+
78+
sensors: GatewaySensors
79+
80+
81+
class AdamGateway(SmileThermostatGateway):
82+
"""Plugwise Adam HA Gateway data class."""
83+
84+
gateway_modes: list[str]
85+
regulation_modes: list[str]
86+
select_gateway_mode: str
87+
select_regulation_mode: str
88+
zigbee_mac_address: str
89+
90+
91+
class GatewayBinarySensors
92+
"""Gateway binary_sensors class."""
93+
94+
plugwise_notification: bool
95+
96+
97+
class GatewaySensors
98+
"""Gateway sensors class."""
99+
100+
outdoor_temperature: float
101+
102+
103+
class AnnaData(TypedDict, total=False):
104+
"""Plugwise Anna data class."""
105+
106+
active_preset: str
107+
available_schedules: list[str]
108+
dev_class: str
109+
firmware: str
110+
hardware: str
111+
location: str
112+
mode: str
113+
model: str
114+
model_id: str
115+
name: str
116+
preset_modes: list[str]
117+
select_schedule: str
118+
sensors: AnnaSensors
119+
temperature_offset: SetpointDict
120+
thermostat: ThermostatDict
121+
vendor: str
122+
123+
124+
class AnnaAdamData(TypedDict, total=False):
125+
"""Plugwise Anna-connected-to-Adam data class."""
11126

12127
active_preset: str
128+
available: bool
13129
available_schedules: list[str]
130+
control_state: str
14131
dev_class: str
15132
firmware: str
16133
hardware: str
@@ -21,7 +138,7 @@ class AnnaData:
21138
name: str
22139
preset_modes: list[str]
23140
select_schedule: str
24-
sensors: AnnaSensor
141+
sensors: AnnaSensors
25142
temperature_offset: SetpointDict
26143
thermostat: ThermostatDict
27144
vendor: str
@@ -30,16 +147,17 @@ class AnnaData:
30147
class AnnaSensors(TypedDict, total=False):
31148
"""Anna sensors class."""
32149

150+
cooling_activation_outdoor_temperature: float
151+
cooling_deactivation_threshold: float
33152
illuminance: float
34153
setpoint: float
35154
setpoint_high: float
36155
setpoint_low: float
37156
temperature: float
38157

39158

40-
@dataclass
41159
class SetpointDict:
42-
"""Generic setpoint dict.
160+
"""Generic setpoint dict class.
43161
44162
Used for temperature_offset, max_dhw_temperature,maximum_boiler_temperature.
45163
"""
@@ -61,7 +179,7 @@ class ThermostatDict(TypedDict, total=False):
61179
upper_bound: float
62180

63181

64-
class OnOffTherm(TypedDict, total=False):
182+
class OnOffTherm:
65183
"""On-off heater/cooler device class."""
66184

67185
binary_sensors: HeaterCentralBinarySensors
@@ -78,8 +196,8 @@ class OpenTherm(TypedDict, total=False):
78196
binary_sensors: HeaterCentralBinarySensors
79197
dev_class: str
80198
location: str
81-
max_dhw_temperature: SetpointDict
82199
maximum_boiler_temperature: SetpointDict
200+
max_dhw_temperature: SetpointDict
83201
model: str
84202
model_id: str
85203
name: str
@@ -91,16 +209,20 @@ class OpenTherm(TypedDict, total=False):
91209
class HeaterCentralBinarySensors(TypedDict, total=False):
92210
"""Heater-central binary_sensors class."""
93211

212+
compressor_state: bool
213+
cooling_enabled: bool
94214
cooling_state: bool
95215
dhw_state: bool
96216
flame_state: bool
97217
heating_state: bool
218+
secondary_boiler_state: bool
98219

99220

100221
class HeaterCentralSensors(TypedDict, total=False):
101222
"""Heater-central sensors class."""
102223

103224
dhw_temperature: float
225+
domestic_hot_water_setpoint: float
104226
intended_boiler_temperature: float
105227
modulation_level: float
106228
outdoor_air_temperature: float
@@ -112,4 +234,136 @@ class HeaterCentralSensors(TypedDict, total=False):
112234
class HeaterCentralSwitches(TypedDict, total=False):
113235
"""Heater-central switches class."""
114236

237+
cooling_ena_switch: bool
115238
dhw_cm_switch: bool
239+
240+
241+
@dataclass
242+
class LisaData(TypedDict, total=False):
243+
"""Plugwise Lisa data class."""
244+
245+
active_preset: str
246+
available: bool
247+
available_schedules: list[str]
248+
binary_sensors: LisaBinarySensors
249+
control_state: str
250+
dev_class: str
251+
firmware: str
252+
hardware: str
253+
location: str
254+
mode: str
255+
model: str
256+
model_id: str
257+
name: str
258+
preset_modes: list[str]
259+
select_schedule: str
260+
sensors: WirelessThermostatBinarySensors
261+
temperature_offset: SetpointDict
262+
thermostat: ThermostatDict
263+
vendor: str
264+
zigbee_mac_address: str
265+
266+
267+
class LisaSensors(TypedDict, total=False):
268+
"""Lisa sensors class."""
269+
270+
battery: int
271+
setpoint: float
272+
setpoint_high: float
273+
setpoint_low: float
274+
temperature: float
275+
276+
277+
class WirelessThermostatBinarySensors:
278+
"""Lisa sensors class."""
279+
280+
low_battery: bool
281+
282+
@dataclass
283+
class TomParentData(TypedDict, total=False):
284+
"""Plugwise Lisa data class."""
285+
286+
active_preset: str
287+
available: bool
288+
available_schedules: list[str]
289+
binary_sensors: WirelessThermostatBinarySensors
290+
control_state: str
291+
dev_class: str
292+
firmware: str
293+
hardware: str
294+
location: str
295+
mode: str
296+
model: str
297+
model_id: str
298+
name: str
299+
preset_modes: list[str]
300+
select_schedule: str
301+
sensors: TomSensors
302+
temperature_offset: SetpointDict
303+
thermostat: ThermostatDict
304+
vendor: str
305+
zigbee_mac_address: str
306+
307+
308+
@dataclass
309+
class TomChildData(TypedDict, total=False):
310+
"""Plugwise Lisa data class."""
311+
312+
available: bool
313+
binary_sensors: WirelessThermostatBinarySensors
314+
dev_class: str
315+
firmware: str
316+
hardware: str
317+
location: str
318+
model: str
319+
model_id: str
320+
name: str
321+
sensors: TomSensors
322+
temperature_offset: SetpointDict
323+
vendor: str
324+
zigbee_mac_address: str
325+
326+
327+
class TomSensors(TypedDict, total=False):
328+
"""Tom sensors class."""
329+
330+
battery: int
331+
setpoint: float
332+
setpoint_high: float
333+
setpoint_low: float
334+
temperature: float
335+
temperature_difference: float
336+
valve_position: float
337+
338+
339+
class PlugData:
340+
"""Plug data class."""
341+
342+
available: bool
343+
dev_class: str
344+
firmware: str
345+
# hardware: str
346+
location: str
347+
model: str
348+
model_id: str
349+
name: str
350+
sensors: PlugSensors
351+
switches: PlugSwitches
352+
vendor: str
353+
zigbee_mac_address: str
354+
355+
356+
class PlugSensors:
357+
"""Plug sensors class."""
358+
359+
electricity_consumed: float
360+
electricity_consumed_interval: float
361+
electricity_produced: float
362+
electricity_produced_interval: float
363+
364+
365+
class PlugSwitches(TypedDict, total=False):
366+
"""Plug switches class."""
367+
368+
lock: bool
369+
relay: bool

0 commit comments

Comments
 (0)