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