PyPlumIO 0.5.42__py3-none-any.whl → 0.5.44__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. pyplumio/__init__.py +3 -2
  2. pyplumio/_version.py +2 -2
  3. pyplumio/connection.py +14 -14
  4. pyplumio/const.py +8 -3
  5. pyplumio/{helpers/data_types.py → data_types.py} +23 -21
  6. pyplumio/devices/__init__.py +42 -41
  7. pyplumio/devices/ecomax.py +202 -174
  8. pyplumio/devices/ecoster.py +5 -0
  9. pyplumio/devices/mixer.py +24 -34
  10. pyplumio/devices/thermostat.py +24 -31
  11. pyplumio/filters.py +188 -147
  12. pyplumio/frames/__init__.py +20 -8
  13. pyplumio/frames/messages.py +3 -0
  14. pyplumio/frames/requests.py +21 -0
  15. pyplumio/frames/responses.py +18 -0
  16. pyplumio/helpers/async_cache.py +48 -0
  17. pyplumio/helpers/event_manager.py +58 -3
  18. pyplumio/helpers/factory.py +5 -2
  19. pyplumio/helpers/schedule.py +8 -5
  20. pyplumio/helpers/task_manager.py +3 -0
  21. pyplumio/helpers/timeout.py +7 -6
  22. pyplumio/helpers/uid.py +8 -5
  23. pyplumio/{helpers/parameter.py → parameters/__init__.py} +105 -5
  24. pyplumio/parameters/ecomax.py +868 -0
  25. pyplumio/parameters/mixer.py +245 -0
  26. pyplumio/parameters/thermostat.py +197 -0
  27. pyplumio/protocol.py +21 -10
  28. pyplumio/stream.py +3 -0
  29. pyplumio/structures/__init__.py +3 -0
  30. pyplumio/structures/alerts.py +9 -6
  31. pyplumio/structures/boiler_load.py +3 -0
  32. pyplumio/structures/boiler_power.py +4 -1
  33. pyplumio/structures/ecomax_parameters.py +6 -800
  34. pyplumio/structures/fan_power.py +4 -1
  35. pyplumio/structures/frame_versions.py +4 -1
  36. pyplumio/structures/fuel_consumption.py +4 -1
  37. pyplumio/structures/fuel_level.py +3 -0
  38. pyplumio/structures/lambda_sensor.py +9 -1
  39. pyplumio/structures/mixer_parameters.py +8 -230
  40. pyplumio/structures/mixer_sensors.py +10 -1
  41. pyplumio/structures/modules.py +14 -0
  42. pyplumio/structures/network_info.py +12 -1
  43. pyplumio/structures/output_flags.py +10 -1
  44. pyplumio/structures/outputs.py +22 -1
  45. pyplumio/structures/pending_alerts.py +3 -0
  46. pyplumio/structures/product_info.py +6 -3
  47. pyplumio/structures/program_version.py +3 -0
  48. pyplumio/structures/regulator_data.py +5 -2
  49. pyplumio/structures/regulator_data_schema.py +4 -1
  50. pyplumio/structures/schedules.py +18 -1
  51. pyplumio/structures/statuses.py +9 -0
  52. pyplumio/structures/temperatures.py +23 -1
  53. pyplumio/structures/thermostat_parameters.py +18 -184
  54. pyplumio/structures/thermostat_sensors.py +10 -1
  55. pyplumio/utils.py +14 -12
  56. {pyplumio-0.5.42.dist-info → pyplumio-0.5.44.dist-info}/METADATA +32 -17
  57. pyplumio-0.5.44.dist-info/RECORD +64 -0
  58. {pyplumio-0.5.42.dist-info → pyplumio-0.5.44.dist-info}/WHEEL +1 -1
  59. pyplumio-0.5.42.dist-info/RECORD +0 -60
  60. {pyplumio-0.5.42.dist-info → pyplumio-0.5.44.dist-info}/licenses/LICENSE +0 -0
  61. {pyplumio-0.5.42.dist-info → pyplumio-0.5.44.dist-info}/top_level.txt +0 -0
@@ -3,815 +3,18 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from collections.abc import Generator
6
- from dataclasses import dataclass
7
- from functools import partial
8
- from typing import TYPE_CHECKING, Any, Final
6
+ from typing import Any, Final
9
7
 
10
- from dataslots import dataslots
11
-
12
- from pyplumio.const import (
13
- ATTR_INDEX,
14
- ATTR_OFFSET,
15
- ATTR_SIZE,
16
- ATTR_VALUE,
17
- PERCENTAGE,
18
- FrameType,
19
- ProductType,
20
- UnitOfMeasurement,
21
- )
22
- from pyplumio.frames import Request
23
- from pyplumio.helpers.parameter import (
24
- Number,
25
- NumberDescription,
26
- NumericType,
27
- Parameter,
28
- ParameterDescription,
29
- ParameterValues,
30
- Switch,
31
- SwitchDescription,
32
- unpack_parameter,
33
- )
8
+ from pyplumio.parameters import ParameterValues, unpack_parameter
34
9
  from pyplumio.structures import StructureDecoder
35
- from pyplumio.structures.thermostat_parameters import ATTR_THERMOSTAT_PROFILE
36
10
  from pyplumio.utils import ensure_dict
37
11
 
38
- if TYPE_CHECKING:
39
- from pyplumio.devices.ecomax import EcoMAX
40
-
41
- ATTR_ECOMAX_CONTROL: Final = "ecomax_control"
42
12
  ATTR_ECOMAX_PARAMETERS: Final = "ecomax_parameters"
13
+ ATTR_ECOMAX_CONTROL: Final = "ecomax_control"
43
14
 
44
15
  ECOMAX_PARAMETER_SIZE: Final = 3
45
16
 
46
17
 
47
- @dataclass
48
- class EcomaxParameterDescription(ParameterDescription):
49
- """Represents an ecoMAX parameter description."""
50
-
51
- __slots__ = ()
52
-
53
-
54
- class EcomaxParameter(Parameter):
55
- """Represents an ecoMAX parameter."""
56
-
57
- __slots__ = ()
58
-
59
- device: EcoMAX
60
- description: EcomaxParameterDescription
61
-
62
- async def create_request(self) -> Request:
63
- """Create a request to change the parameter."""
64
- handler = partial(Request.create, recipient=self.device.address)
65
- if self.description.name == ATTR_ECOMAX_CONTROL:
66
- return await handler(
67
- frame_type=FrameType.REQUEST_ECOMAX_CONTROL,
68
- data={ATTR_VALUE: self.values.value},
69
- )
70
-
71
- if self.description.name == ATTR_THERMOSTAT_PROFILE:
72
- return await handler(
73
- frame_type=FrameType.REQUEST_SET_THERMOSTAT_PARAMETER,
74
- data={
75
- ATTR_INDEX: self._index,
76
- ATTR_VALUE: self.values.value,
77
- ATTR_OFFSET: 0,
78
- ATTR_SIZE: 1,
79
- },
80
- )
81
-
82
- return await handler(
83
- frame_type=FrameType.REQUEST_SET_ECOMAX_PARAMETER,
84
- data={ATTR_INDEX: self._index, ATTR_VALUE: self.values.value},
85
- )
86
-
87
-
88
- @dataslots
89
- @dataclass
90
- class EcomaxNumberDescription(EcomaxParameterDescription, NumberDescription):
91
- """Represents an ecoMAX number description."""
92
-
93
- offset: int = 0
94
-
95
-
96
- class EcomaxNumber(EcomaxParameter, Number):
97
- """Represents a ecoMAX number."""
98
-
99
- __slots__ = ()
100
-
101
- description: EcomaxNumberDescription
102
-
103
- def _pack_value(self, value: NumericType) -> int:
104
- """Pack the parameter value."""
105
- return super()._pack_value(value + self.description.offset)
106
-
107
- def _unpack_value(self, value: int) -> NumericType:
108
- """Unpack the parameter value."""
109
- return super()._unpack_value(value - self.description.offset)
110
-
111
-
112
- @dataslots
113
- @dataclass
114
- class EcomaxSwitchDescription(EcomaxParameterDescription, SwitchDescription):
115
- """Represents an ecoMAX switch description."""
116
-
117
-
118
- class EcomaxSwitch(EcomaxParameter, Switch):
119
- """Represents an ecoMAX switch."""
120
-
121
- __slots__ = ()
122
-
123
- description: EcomaxSwitchDescription
124
-
125
-
126
- ECOMAX_PARAMETERS: dict[ProductType, tuple[EcomaxParameterDescription, ...]] = {
127
- ProductType.ECOMAX_P: (
128
- EcomaxNumberDescription(
129
- name="airflow_power_100",
130
- unit_of_measurement=PERCENTAGE,
131
- ),
132
- EcomaxNumberDescription(
133
- name="airflow_power_50",
134
- unit_of_measurement=PERCENTAGE,
135
- ),
136
- EcomaxNumberDescription(
137
- name="airflow_power_30",
138
- unit_of_measurement=PERCENTAGE,
139
- ),
140
- EcomaxNumberDescription(
141
- name="boiler_power_100",
142
- unit_of_measurement=UnitOfMeasurement.KILO_WATT,
143
- ),
144
- EcomaxNumberDescription(
145
- name="boiler_power_50",
146
- unit_of_measurement=UnitOfMeasurement.KILO_WATT,
147
- ),
148
- EcomaxNumberDescription(
149
- name="boiler_power_30",
150
- unit_of_measurement=UnitOfMeasurement.KILO_WATT,
151
- ),
152
- EcomaxNumberDescription(
153
- name="max_fan_boiler_power",
154
- unit_of_measurement=PERCENTAGE,
155
- ),
156
- EcomaxNumberDescription(
157
- name="min_fan_boiler_power",
158
- unit_of_measurement=PERCENTAGE,
159
- ),
160
- EcomaxNumberDescription(
161
- name="fuel_feeding_work_100",
162
- unit_of_measurement=UnitOfMeasurement.SECONDS,
163
- ),
164
- EcomaxNumberDescription(
165
- name="fuel_feeding_work_50",
166
- unit_of_measurement=UnitOfMeasurement.SECONDS,
167
- ),
168
- EcomaxNumberDescription(
169
- name="fuel_feeding_work_30",
170
- unit_of_measurement=UnitOfMeasurement.SECONDS,
171
- ),
172
- EcomaxNumberDescription(
173
- name="fuel_feeding_pause_100",
174
- unit_of_measurement=UnitOfMeasurement.SECONDS,
175
- ),
176
- EcomaxNumberDescription(
177
- name="fuel_feeding_pause_50",
178
- unit_of_measurement=UnitOfMeasurement.SECONDS,
179
- ),
180
- EcomaxNumberDescription(
181
- name="fuel_feeding_pause_30",
182
- unit_of_measurement=UnitOfMeasurement.SECONDS,
183
- ),
184
- EcomaxNumberDescription(
185
- name="cycle_duration",
186
- unit_of_measurement=UnitOfMeasurement.SECONDS,
187
- ),
188
- EcomaxNumberDescription(
189
- name="h2_hysteresis",
190
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
191
- ),
192
- EcomaxNumberDescription(
193
- name="h1_hysteresis",
194
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
195
- ),
196
- EcomaxNumberDescription(
197
- name="heating_hysteresis",
198
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
199
- ),
200
- EcomaxSwitchDescription(
201
- name="fuzzy_logic",
202
- ),
203
- EcomaxNumberDescription(
204
- name="min_fuzzy_logic_power",
205
- unit_of_measurement=PERCENTAGE,
206
- ),
207
- EcomaxNumberDescription(
208
- name="max_fuzzy_logic_power",
209
- unit_of_measurement=PERCENTAGE,
210
- ),
211
- EcomaxNumberDescription(
212
- name="min_boiler_power",
213
- unit_of_measurement=UnitOfMeasurement.KILO_WATT,
214
- ),
215
- EcomaxNumberDescription(
216
- name="max_boiler_power",
217
- unit_of_measurement=UnitOfMeasurement.KILO_WATT,
218
- ),
219
- EcomaxNumberDescription(
220
- name="min_fan_power",
221
- unit_of_measurement=PERCENTAGE,
222
- ),
223
- EcomaxNumberDescription(
224
- name="max_fan_power",
225
- unit_of_measurement=PERCENTAGE,
226
- ),
227
- EcomaxNumberDescription(
228
- name="reduction_airflow_temp",
229
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
230
- ),
231
- EcomaxNumberDescription(
232
- name="fan_power_gain",
233
- unit_of_measurement=PERCENTAGE,
234
- ),
235
- EcomaxNumberDescription(
236
- name="fuzzy_logic_fuel_flow_correction",
237
- unit_of_measurement=PERCENTAGE,
238
- ),
239
- EcomaxNumberDescription(
240
- name="fuel_flow_correction",
241
- unit_of_measurement=PERCENTAGE,
242
- ),
243
- EcomaxNumberDescription(
244
- name="airflow_correction_100",
245
- unit_of_measurement=PERCENTAGE,
246
- ),
247
- EcomaxNumberDescription(
248
- name="feeder_correction_100",
249
- unit_of_measurement=PERCENTAGE,
250
- ),
251
- EcomaxNumberDescription(
252
- name="airflow_correction_50",
253
- unit_of_measurement=PERCENTAGE,
254
- ),
255
- EcomaxNumberDescription(
256
- name="feeder_correction_50",
257
- unit_of_measurement=PERCENTAGE,
258
- ),
259
- EcomaxNumberDescription(
260
- name="airflow_correction_30",
261
- unit_of_measurement=PERCENTAGE,
262
- ),
263
- EcomaxNumberDescription(
264
- name="feeder_correction_30",
265
- unit_of_measurement=PERCENTAGE,
266
- ),
267
- EcomaxNumberDescription(
268
- name="grate_airflow_power",
269
- unit_of_measurement=PERCENTAGE,
270
- ),
271
- EcomaxNumberDescription(
272
- name="grate_heating_hysteresis",
273
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
274
- ),
275
- EcomaxNumberDescription(
276
- name="grate_fan_work",
277
- unit_of_measurement=UnitOfMeasurement.SECONDS,
278
- ),
279
- EcomaxNumberDescription(
280
- name="grate_fan_pause",
281
- unit_of_measurement=UnitOfMeasurement.MINUTES,
282
- ),
283
- EcomaxNumberDescription(
284
- name="grate_heating_temp",
285
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
286
- ),
287
- EcomaxNumberDescription(
288
- name="grate_fuel_detection_time",
289
- unit_of_measurement=UnitOfMeasurement.MINUTES,
290
- ),
291
- EcomaxNumberDescription(
292
- name="kindling_airflow_power",
293
- unit_of_measurement=PERCENTAGE,
294
- ),
295
- EcomaxNumberDescription(
296
- name="kindling_low_airflow_power",
297
- unit_of_measurement=PERCENTAGE,
298
- ),
299
- EcomaxNumberDescription(
300
- name="kindling_airflow_delay",
301
- unit_of_measurement=UnitOfMeasurement.SECONDS,
302
- ),
303
- EcomaxNumberDescription(
304
- name="kindling_test_time",
305
- unit_of_measurement=UnitOfMeasurement.SECONDS,
306
- ),
307
- EcomaxNumberDescription(
308
- name="kindling_feeder_work",
309
- ),
310
- EcomaxNumberDescription(
311
- name="kindling_feeder_dose",
312
- unit_of_measurement=UnitOfMeasurement.GRAMS,
313
- ),
314
- EcomaxNumberDescription(
315
- name="kindling_time",
316
- unit_of_measurement=UnitOfMeasurement.MINUTES,
317
- ),
318
- EcomaxNumberDescription(
319
- name="warming_up_time",
320
- unit_of_measurement=UnitOfMeasurement.MINUTES,
321
- ),
322
- EcomaxNumberDescription(
323
- name="kindling_finish_exhaust_temp",
324
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
325
- ),
326
- EcomaxNumberDescription(
327
- name="kindling_finish_threshold_temp",
328
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
329
- ),
330
- EcomaxNumberDescription(
331
- name="kindling_fumes_delta_temp",
332
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
333
- ),
334
- EcomaxNumberDescription(
335
- name="kindling_delta_temp",
336
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
337
- ),
338
- EcomaxNumberDescription(
339
- name="kindling_min_power_time",
340
- unit_of_measurement=UnitOfMeasurement.MINUTES,
341
- ),
342
- EcomaxNumberDescription(
343
- name="stabilization_time",
344
- unit_of_measurement=UnitOfMeasurement.MINUTES,
345
- ),
346
- EcomaxNumberDescription(
347
- name="stabilization_airflow_power",
348
- unit_of_measurement=PERCENTAGE,
349
- ),
350
- EcomaxNumberDescription(
351
- name="supervision_time",
352
- ),
353
- EcomaxNumberDescription(
354
- name="supervision_feeder_work",
355
- unit_of_measurement=UnitOfMeasurement.SECONDS,
356
- ),
357
- EcomaxNumberDescription(
358
- name="supervision_feeder_dose",
359
- unit_of_measurement=UnitOfMeasurement.GRAMS,
360
- ),
361
- EcomaxNumberDescription(
362
- name="supervision_feeder_pause",
363
- unit_of_measurement=UnitOfMeasurement.MINUTES,
364
- ),
365
- EcomaxNumberDescription(
366
- name="supervision_cycle_duration",
367
- unit_of_measurement=UnitOfMeasurement.SECONDS,
368
- ),
369
- EcomaxNumberDescription(
370
- name="supervision_airflow_power",
371
- unit_of_measurement=PERCENTAGE,
372
- ),
373
- EcomaxNumberDescription(
374
- name="supervision_fan_pause",
375
- unit_of_measurement=UnitOfMeasurement.MINUTES,
376
- ),
377
- EcomaxNumberDescription(
378
- name="supervision_fan_work",
379
- unit_of_measurement=UnitOfMeasurement.SECONDS,
380
- ),
381
- EcomaxNumberDescription(
382
- name="increase_fan_support_mode",
383
- ),
384
- EcomaxNumberDescription(
385
- name="burning_off_max_time",
386
- unit_of_measurement=UnitOfMeasurement.MINUTES,
387
- ),
388
- EcomaxNumberDescription(
389
- name="burning_off_min_time",
390
- unit_of_measurement=UnitOfMeasurement.MINUTES,
391
- ),
392
- EcomaxNumberDescription(
393
- name="burning_off_time",
394
- ),
395
- EcomaxNumberDescription(
396
- name="burning_off_airflow_power",
397
- unit_of_measurement=PERCENTAGE,
398
- ),
399
- EcomaxNumberDescription(
400
- name="burning_off_fan_work",
401
- ),
402
- EcomaxNumberDescription(
403
- name="burning_off_fan_pause",
404
- ),
405
- EcomaxNumberDescription(
406
- name="start_burning_off",
407
- unit_of_measurement=PERCENTAGE,
408
- ),
409
- EcomaxNumberDescription(
410
- name="stop_burning_off",
411
- unit_of_measurement=PERCENTAGE,
412
- ),
413
- EcomaxNumberDescription(
414
- name="cleaning_begin_time",
415
- ),
416
- EcomaxNumberDescription(
417
- name="burning_off_cleaning_time",
418
- ),
419
- EcomaxNumberDescription(
420
- name="cleaning_airflow_power",
421
- unit_of_measurement=PERCENTAGE,
422
- ),
423
- EcomaxNumberDescription(
424
- name="warming_up_pause_time",
425
- ),
426
- EcomaxNumberDescription(
427
- name="warming_up_cycle_time",
428
- ),
429
- EcomaxNumberDescription(
430
- name="remind_time",
431
- ),
432
- EcomaxSwitchDescription(
433
- name="lambda_control",
434
- ),
435
- EcomaxNumberDescription(
436
- name="lambda_correction_range",
437
- ),
438
- EcomaxNumberDescription(
439
- name="oxygen_100",
440
- ),
441
- EcomaxNumberDescription(
442
- name="oxygen_50",
443
- ),
444
- EcomaxNumberDescription(
445
- name="oxygen_30",
446
- ),
447
- EcomaxNumberDescription(
448
- name="fuzzy_logic_oxygen_correction",
449
- ),
450
- EcomaxNumberDescription(
451
- name="max_fuel_flow",
452
- step=0.2,
453
- unit_of_measurement=UnitOfMeasurement.KILOGRAMS_PER_HOUR,
454
- ),
455
- EcomaxNumberDescription(
456
- name="feeder_calibration",
457
- ),
458
- EcomaxNumberDescription(
459
- name="fuel_factor",
460
- ),
461
- EcomaxNumberDescription(
462
- name="fuel_calorific_value",
463
- step=0.1,
464
- unit_of_measurement=UnitOfMeasurement.KILO_WATT_HOUR_PER_KILOGRAM,
465
- ),
466
- EcomaxNumberDescription(
467
- name="fuel_detection_time",
468
- unit_of_measurement=UnitOfMeasurement.MINUTES,
469
- ),
470
- EcomaxNumberDescription(
471
- name="fuel_detection_exhaust_temp",
472
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
473
- ),
474
- EcomaxSwitchDescription(
475
- name="schedule_feeder_2",
476
- ),
477
- EcomaxNumberDescription(
478
- name="feed2_h1",
479
- ),
480
- EcomaxNumberDescription(
481
- name="feed2_h2",
482
- ),
483
- EcomaxNumberDescription(
484
- name="feed2_h3",
485
- ),
486
- EcomaxNumberDescription(
487
- name="feed2_h4",
488
- ),
489
- EcomaxNumberDescription(
490
- name="feed2_work",
491
- ),
492
- EcomaxNumberDescription(
493
- name="feed2_pause",
494
- ),
495
- EcomaxNumberDescription(
496
- name="heating_target_temp",
497
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
498
- ),
499
- EcomaxNumberDescription(
500
- name="min_heating_target_temp",
501
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
502
- ),
503
- EcomaxNumberDescription(
504
- name="max_heating_target_temp",
505
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
506
- ),
507
- EcomaxNumberDescription(
508
- name="heating_pump_enable_temp",
509
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
510
- ),
511
- EcomaxNumberDescription(
512
- name="pause_heating_for_water_heater",
513
- unit_of_measurement=UnitOfMeasurement.MINUTES,
514
- ),
515
- EcomaxNumberDescription(
516
- name="thermostat_pause",
517
- ),
518
- EcomaxNumberDescription(
519
- name="thermostat_work",
520
- ),
521
- EcomaxNumberDescription(
522
- name="increase_heating_temp_for_water_heater",
523
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
524
- ),
525
- EcomaxSwitchDescription(
526
- name="weather_control",
527
- ),
528
- EcomaxNumberDescription(
529
- name="heating_curve",
530
- step=0.1,
531
- ),
532
- EcomaxNumberDescription(
533
- name="heating_curve_shift",
534
- offset=20,
535
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
536
- ),
537
- EcomaxNumberDescription(
538
- name="weather_factor",
539
- ),
540
- EcomaxNumberDescription(
541
- name="thermostat_operation",
542
- ),
543
- EcomaxSwitchDescription(
544
- name="thermostat_mode",
545
- ),
546
- EcomaxNumberDescription(
547
- name="thermostat_decrease_target_temp",
548
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
549
- ),
550
- EcomaxSwitchDescription(
551
- name="disable_pump_on_thermostat",
552
- ),
553
- EcomaxNumberDescription(
554
- name="boiler_alert_temp",
555
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
556
- ),
557
- EcomaxNumberDescription(
558
- name="max_feeder_temp",
559
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
560
- ),
561
- EcomaxNumberDescription(
562
- name="external_boiler_temp",
563
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
564
- ),
565
- EcomaxNumberDescription(
566
- name="alert_notify",
567
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
568
- ),
569
- EcomaxNumberDescription(
570
- name="pump_hysteresis",
571
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
572
- ),
573
- EcomaxNumberDescription(
574
- name="water_heater_target_temp",
575
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
576
- ),
577
- EcomaxNumberDescription(
578
- name="min_water_heater_target_temp",
579
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
580
- ),
581
- EcomaxNumberDescription(
582
- name="max_water_heater_target_temp",
583
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
584
- ),
585
- EcomaxNumberDescription(
586
- name="water_heater_work_mode",
587
- ),
588
- EcomaxNumberDescription(
589
- name="water_heater_hysteresis",
590
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
591
- ),
592
- EcomaxSwitchDescription(
593
- name="water_heater_disinfection",
594
- ),
595
- EcomaxNumberDescription(
596
- name="summer_mode",
597
- ),
598
- EcomaxNumberDescription(
599
- name="summer_mode_enable_temp",
600
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
601
- ),
602
- EcomaxNumberDescription(
603
- name="summer_mode_disable_temp",
604
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
605
- ),
606
- EcomaxNumberDescription(
607
- name="water_heater_work_extension",
608
- unit_of_measurement=UnitOfMeasurement.MINUTES,
609
- ),
610
- EcomaxSwitchDescription(
611
- name="circulation_control",
612
- ),
613
- EcomaxNumberDescription(
614
- name="circulation_pause",
615
- unit_of_measurement=UnitOfMeasurement.MINUTES,
616
- ),
617
- EcomaxNumberDescription(
618
- name="circulation_work",
619
- unit_of_measurement=UnitOfMeasurement.MINUTES,
620
- ),
621
- EcomaxNumberDescription(
622
- name="circulation_start_temp",
623
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
624
- ),
625
- EcomaxSwitchDescription(
626
- name="buffer_control",
627
- ),
628
- EcomaxNumberDescription(
629
- name="max_buffer_temp",
630
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
631
- ),
632
- EcomaxNumberDescription(
633
- name="min_buffer_temp",
634
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
635
- ),
636
- EcomaxNumberDescription(
637
- name="buffer_hysteresis",
638
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
639
- ),
640
- EcomaxNumberDescription(
641
- name="buffer_load_start",
642
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
643
- ),
644
- EcomaxNumberDescription(
645
- name="buffer_load_stop",
646
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
647
- ),
648
- ),
649
- ProductType.ECOMAX_I: (
650
- EcomaxNumberDescription(
651
- name="water_heater_target_temp",
652
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
653
- ),
654
- EcomaxSwitchDescription(
655
- name="water_heater_priority",
656
- ),
657
- EcomaxNumberDescription(
658
- name="water_heater_support",
659
- ),
660
- EcomaxNumberDescription(
661
- name="min_water_heater_target_temp",
662
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
663
- ),
664
- EcomaxNumberDescription(
665
- name="max_water_heater_target_temp",
666
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
667
- ),
668
- EcomaxNumberDescription(
669
- name="water_heater_work_extension",
670
- unit_of_measurement=UnitOfMeasurement.MINUTES,
671
- ),
672
- EcomaxNumberDescription(
673
- name="water_heater_hysteresis",
674
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
675
- ),
676
- EcomaxSwitchDescription(
677
- name="water_heater_disinfection",
678
- ),
679
- EcomaxNumberDescription(
680
- name="water_heater_work_mode",
681
- ),
682
- EcomaxSwitchDescription(
683
- name="solar_support",
684
- ),
685
- EcomaxNumberDescription(
686
- name="solar_pump_on_delta_temp",
687
- step=0.1,
688
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
689
- ),
690
- EcomaxNumberDescription(
691
- name="solar_pump_off_delta_temp",
692
- step=0.1,
693
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
694
- ),
695
- EcomaxNumberDescription(
696
- name="min_collector_temp",
697
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
698
- ),
699
- EcomaxNumberDescription(
700
- name="max_collector_temp",
701
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
702
- ),
703
- EcomaxNumberDescription(
704
- name="collector_off_temp",
705
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
706
- ),
707
- EcomaxNumberDescription(
708
- name="min_pump_revolutions",
709
- ),
710
- EcomaxNumberDescription(
711
- name="solar_antifreeze",
712
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
713
- ),
714
- EcomaxSwitchDescription(
715
- name="circulation_control",
716
- ),
717
- EcomaxNumberDescription(
718
- name="circulation_pause",
719
- unit_of_measurement=UnitOfMeasurement.MINUTES,
720
- ),
721
- EcomaxNumberDescription(
722
- name="circulation_work",
723
- unit_of_measurement=UnitOfMeasurement.MINUTES,
724
- ),
725
- EcomaxNumberDescription(
726
- name="circulation_start_temp",
727
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
728
- ),
729
- EcomaxNumberDescription(
730
- name="main_heat_source",
731
- ),
732
- EcomaxNumberDescription(
733
- name="min_main_heat_source_temp",
734
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
735
- ),
736
- EcomaxNumberDescription(
737
- name="max_main_heat_source_temp",
738
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
739
- ),
740
- EcomaxNumberDescription(
741
- name="main_heat_source_hysteresis",
742
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
743
- ),
744
- EcomaxNumberDescription(
745
- name="critical_main_heat_source_temp",
746
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
747
- ),
748
- EcomaxNumberDescription(
749
- name="main_heat_source_pump_extension_time",
750
- ),
751
- EcomaxNumberDescription(
752
- name="additional_heat_source",
753
- ),
754
- EcomaxNumberDescription(
755
- name="main_heat_source_off_temp",
756
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
757
- ),
758
- EcomaxNumberDescription(
759
- name="additional_heat_source_pump_startup_temp",
760
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
761
- ),
762
- EcomaxNumberDescription(
763
- name="hydraulic_diagram",
764
- ),
765
- EcomaxSwitchDescription(
766
- name="antifreeze",
767
- ),
768
- EcomaxNumberDescription(
769
- name="antifreeze_delay",
770
- ),
771
- EcomaxNumberDescription(
772
- name="circuit_lock_time",
773
- ),
774
- EcomaxNumberDescription(
775
- name="circuit_work_time",
776
- ),
777
- EcomaxNumberDescription(
778
- name="alert_out_c",
779
- ),
780
- EcomaxNumberDescription(
781
- name="alert_on_out_c",
782
- ),
783
- EcomaxNumberDescription(
784
- name="thermostat_hysteresis",
785
- step=0.1,
786
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
787
- ),
788
- EcomaxNumberDescription(
789
- name="critial_additional_heat_source_temp",
790
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
791
- ),
792
- EcomaxNumberDescription(
793
- name="automatic_pump_lock_time",
794
- ),
795
- EcomaxNumberDescription(
796
- name="summer_mode",
797
- ),
798
- EcomaxNumberDescription(
799
- name="summer_mode_enable_temp",
800
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
801
- ),
802
- EcomaxNumberDescription(
803
- name="summer_mode_disable_temp",
804
- unit_of_measurement=UnitOfMeasurement.CELSIUS,
805
- ),
806
- ),
807
- }
808
-
809
- ECOMAX_CONTROL_PARAMETER = EcomaxSwitchDescription(
810
- name=ATTR_ECOMAX_CONTROL, optimistic=True
811
- )
812
- THERMOSTAT_PROFILE_PARAMETER = EcomaxNumberDescription(name=ATTR_THERMOSTAT_PROFILE)
813
-
814
-
815
18
  class EcomaxParametersStructure(StructureDecoder):
816
19
  """Represents an ecoMAX parameters structure."""
817
20
 
@@ -847,3 +50,6 @@ class EcomaxParametersStructure(StructureDecoder):
847
50
  ),
848
51
  self._offset,
849
52
  )
53
+
54
+
55
+ __all__ = ["ATTR_ECOMAX_PARAMETERS", "EcomaxParametersStructure"]