55from typing import TypedDict
66
77
8+ @dataclass
89class BaseGateway :
910 """Plugwise Base Gateway data class."""
1011
@@ -17,6 +18,7 @@ class BaseGateway:
1718 vendor : str
1819
1920
21+ @dataclass
2022class 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
2870class SmartEnergyMeter :
2971 """DSMR Energy Meter data class."""
3072
@@ -39,6 +81,7 @@ class SmartEnergyMeter:
3981
4082class 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-
103112class 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
159226class SetpointDict :
160227 """Generic setpoint dict class.
161228
@@ -179,6 +246,7 @@ class ThermostatDict(TypedDict, total=False):
179246 upper_bound : float
180247
181248
249+ @dataclass
182250class 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-
339310class PlugData :
340311 """Plug data class."""
341312
@@ -353,6 +324,7 @@ class PlugData:
353324 zigbee_mac_address : str
354325
355326
327+ @dataclass
356328class PlugSensors :
357329 """Plug sensors class."""
358330
@@ -362,8 +334,21 @@ class PlugSensors:
362334 electricity_produced_interval : float
363335
364336
337+ @dataclass
365338class 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