Skip to content

Commit 61298bf

Browse files
committed
More updates
1 parent f1c65f2 commit 61298bf

File tree

1 file changed

+128
-143
lines changed

1 file changed

+128
-143
lines changed

plugwise/devices.py

Lines changed: 128 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from typing import TypedDict
66

77

8+
@dataclass
89
class BaseGateway:
910
"""Plugwise Base Gateway data class."""
1011

@@ -17,6 +18,7 @@ class BaseGateway:
1718
vendor: str
1819

1920

21+
@dataclass
2022
class SmileP1Gateway(BaseGateway):
2123
"""Plugwise Smile P1 Gateway data class."""
2224

@@ -25,6 +27,46 @@ class SmileP1Gateway(BaseGateway):
2527
model_id: str
2628

2729

30+
@dataclass
31+
class StretchGateway(BaseGateway):
32+
"""Plugwise Stretch Gateway data class."""
33+
34+
zigbee_mac_address: str
35+
36+
37+
@dataclass
38+
class SmileThermostatGateway(SmileP1Gateway):
39+
"""Plugwise Anna Smile-T Gateway data class."""
40+
41+
sensors: GatewaySensors
42+
43+
44+
@dataclass
45+
class GatewayBinarySensors:
46+
"""Gateway binary_sensors class."""
47+
48+
plugwise_notification: bool
49+
50+
51+
@dataclass
52+
class GatewaySensors:
53+
"""Gateway sensors class."""
54+
55+
outdoor_temperature: float
56+
57+
58+
@dataclass
59+
class AdamGateway(SmileThermostatGateway):
60+
"""Plugwise Adam HA Gateway data class."""
61+
62+
gateway_modes: list[str]
63+
regulation_modes: list[str]
64+
select_gateway_mode: str
65+
select_regulation_mode: str
66+
zigbee_mac_address: str
67+
68+
69+
@dataclass
2870
class SmartEnergyMeter:
2971
"""DSMR Energy Meter data class."""
3072

@@ -39,6 +81,7 @@ class SmartEnergyMeter:
3981

4082
class SmartEnergySensors(TypedDict, total=False):
4183
"""DSMR Energy Meter sensors class."""
84+
4285
electricity_consumed_off_peak_cumulative: float
4386
electricity_consumed_off_peak_interval: int
4487
electricity_consumed_off_peak_point: int
@@ -66,40 +109,6 @@ class SmartEnergySensors(TypedDict, total=False):
66109
voltage_phase_two: float
67110

68111

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-
103112
class AnnaData(TypedDict, total=False):
104113
"""Plugwise Anna data class."""
105114

@@ -121,13 +130,43 @@ class AnnaData(TypedDict, total=False):
121130
vendor: str
122131

123132

124-
class AnnaAdamData(TypedDict, total=False):
125-
"""Plugwise Anna-connected-to-Adam data class."""
133+
class AnnaSensors(TypedDict, total=False):
134+
"""Anna sensors class."""
126135

136+
cooling_activation_outdoor_temperature: float
137+
cooling_deactivation_threshold: float
138+
illuminance: float
139+
setpoint: float
140+
setpoint_high: float
141+
setpoint_low: float
142+
temperature: float
143+
144+
145+
@dataclass
146+
class ThermoZone:
147+
"""Plugwise Adam ThermoZone data class."""
127148
active_preset: str
128-
available: bool
129149
available_schedules: list[str]
150+
climate_mode: str
130151
control_state: str
152+
preset_modes: list[str]
153+
select_schedule: str
154+
sensors: ThermoZoneSensors
155+
thermostat: ThermostatDict
156+
157+
158+
class ThermoZoneSensors(TypedDict, total=False):
159+
"""ThermoZone sensors class."""
160+
161+
electricity_consumed: float
162+
electricity_produced: float
163+
temperature: float
164+
165+
166+
class AnnaAdamData(TypedDict, total=False):
167+
"""Plugwise Anna-connected-to-Adam data class."""
168+
169+
available: bool
131170
dev_class: str
132171
firmware: str
133172
hardware: str
@@ -136,26 +175,54 @@ class AnnaAdamData(TypedDict, total=False):
136175
model: str
137176
model_id: str
138177
name: str
139-
preset_modes: list[str]
140-
select_schedule: str
141178
sensors: AnnaSensors
142179
temperature_offset: SetpointDict
143-
thermostat: ThermostatDict
144180
vendor: str
145181

146182

147-
class AnnaSensors(TypedDict, total=False):
148-
"""Anna sensors class."""
183+
class JipLisaTomData(TypedDict, total=False):
184+
"""JipLisaTomData data class.
149185
150-
cooling_activation_outdoor_temperature: float
151-
cooling_deactivation_threshold: float
152-
illuminance: float
186+
Covering Plugwise Jip, Lisa and Tom/Floor devices.
187+
"""
188+
189+
available: bool
190+
binary_sensors: WirelessThermostatBinarySensors
191+
dev_class: str
192+
firmware: str
193+
hardware: str
194+
location: str
195+
mode: str
196+
model: str
197+
model_id: str
198+
name: str
199+
sensors: JipLisaTomSensors
200+
temperature_offset: SetpointDict
201+
vendor: str
202+
zigbee_mac_address: str
203+
204+
205+
class JipLisaTomSensors(TypedDict, total=False):
206+
"""Tom sensors class."""
207+
208+
battery: int
209+
humidity: int
153210
setpoint: float
154211
setpoint_high: float
155212
setpoint_low: float
156213
temperature: float
214+
temperature_difference: float
215+
valve_position: float
157216

158217

218+
@dataclass
219+
class WirelessThermostatBinarySensors:
220+
"""Lisa sensors class."""
221+
222+
low_battery: bool
223+
224+
225+
@dataclass
159226
class SetpointDict:
160227
"""Generic setpoint dict class.
161228
@@ -179,6 +246,7 @@ class ThermostatDict(TypedDict, total=False):
179246
upper_bound: float
180247

181248

249+
@dataclass
182250
class OnOffTherm:
183251
"""On-off heater/cooler device class."""
184252

@@ -239,103 +307,6 @@ class HeaterCentralSwitches(TypedDict, total=False):
239307

240308

241309
@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-
339310
class PlugData:
340311
"""Plug data class."""
341312

@@ -353,6 +324,7 @@ class PlugData:
353324
zigbee_mac_address: str
354325

355326

327+
@dataclass
356328
class PlugSensors:
357329
"""Plug sensors class."""
358330

@@ -362,8 +334,21 @@ class PlugSensors:
362334
electricity_produced_interval: float
363335

364336

337+
@dataclass
365338
class PlugSwitches(TypedDict, total=False):
366339
"""Plug switches class."""
367340

368341
lock: bool
369-
relay: bool
342+
relay: bool
343+
344+
345+
class PlugwiseP1:
346+
"""Plugwise P1 data class."""
347+
data: dict[str, SmileP1Gateway|SmartEnergyMeter]
348+
349+
class Anna(SmileThermostatGateway, AnnaData, OnOffTherm, OpenTherm):
350+
"""Plugwise Anna data class."""
351+
352+
353+
class Adam(AdamGateway, AnnaAdamData, JipLisaTomData, ThermoZone, PlugData, OnOffTherm, OpenTherm):
354+
"""Plugwise Anna data class."""

0 commit comments

Comments
 (0)