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