Skip to content

Commit d36745c

Browse files
committed
Merge branch 'main' of github.com:OStrama/weishaupt_modbus
2 parents 9d7f79d + 323edf1 commit d36745c

File tree

8 files changed

+74
-573
lines changed

8 files changed

+74
-573
lines changed

custom_components/weishaupt_modbus/entities.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737

3838
async def check_available(modbus_item, config_entry) -> bool:
39+
"""function checks if item is valid and available"""
3940
_modbus_api = config_entry.runtime_data
4041
mbo = ModbusObject(_modbus_api, modbus_item)
4142
_useless = await mbo.value
@@ -44,7 +45,7 @@ async def check_available(modbus_item, config_entry) -> bool:
4445
return False
4546

4647

47-
async def BuildEntityList(entries, config_entry, modbusitems, item_type, coordinator):
48+
async def build_entity_list(entries, config_entry, modbusitems, item_type, coordinator):
4849
"""Build entity list.
4950
5051
function builds a list of entities that can be used as parameter by async_setup_entry()
@@ -144,16 +145,16 @@ async def fetch_data(self, idx=None):
144145
# if idx is not None:
145146
if idx is None:
146147
# first run: Update all entitiys
147-
toUpdate = tuple(range(len(self._modbusitems)))
148+
to_update = tuple(range(len(self._modbusitems)))
148149
elif len(idx) == 0:
149150
# idx exists but is not yet filled up: Update all entitiys.
150-
toUpdate = tuple(range(len(self._modbusitems)))
151+
to_update = tuple(range(len(self._modbusitems)))
151152
else:
152153
# idx exists and is filled up: Update only entitys requested by the coordinator.
153-
toUpdate = idx
154+
to_update = idx
154155

155156
# await self._modbus_api.connect()
156-
for index in toUpdate:
157+
for index in to_update:
157158
item = self._modbusitems[index]
158159
match item.type:
159160
# here the entities are created with the parameters provided by the ModbusItem object
@@ -261,20 +262,17 @@ def __init__(self, config_entry, modbus_item, modbus_api) -> None:
261262

262263
def calc_temperature(self, val: float):
263264
"""Calcualte temperature."""
264-
265265
match val:
266266
case None:
267267
return None
268268
case -32768:
269269
# No Sensor installed, remove it from the list
270-
self._modbus_item.is_valid = False
271270
return -1
272271
case -32767:
273272
# Sensor broken set return value to -99.9 to inform user
274273
return -99.9
275274
case 32768:
276275
# Dont know. Whats this?
277-
self._modbus_item.is_valid = False
278276
return None
279277
case range(-500, 5000):
280278
# Valid Temperatur range
@@ -413,8 +411,18 @@ def calc_power(self, val, x, y):
413411

414412
def translate_val(self, val):
415413
"""Translate a value from the modbus."""
414+
# this is necessary to avoid errors when re-connection heatpump
416415
if val is None:
417416
return None
417+
if len(val) < 3:
418+
return None
419+
if val[0] is None:
420+
return None
421+
if val[1] is None:
422+
return None
423+
if val[2] is None:
424+
return None
425+
418426
val_0 = self.calc_percentage(val[0])
419427
val_x = self.calc_temperature(val[1]) / 10
420428
val_y = self.calc_temperature(val[2]) / 10
@@ -494,7 +502,7 @@ def __init__(self, config_entry, modbus_item, coordinator, idx=None) -> None:
494502
]
495503
# option list build from the status list of the ModbusItem
496504
self.options = []
497-
for index, item in enumerate(self._modbus_item._resultlist):
505+
for _useless, item in enumerate(self._modbus_item._resultlist):
498506
self.options.append(item.text)
499507

500508
async def async_select_option(self, option: str) -> None:

custom_components/weishaupt_modbus/hpconst.py

Lines changed: 31 additions & 225 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,8 @@ class DeviceConstants:
328328
StatusItem(33104, "y"),
329329
]
330330

331+
# pylint: disable=line-too-long
332+
331333
##############################################################################################################################
332334
# Modbus Register List: #
333335
# https://docs.google.com/spreadsheets/d/1EZ3QgyB41xaXo4B5CfZe0Pi8KPwzIGzK/edit?gid=1730751621#gid=1730751621 #
@@ -415,229 +417,33 @@ class DeviceConstants:
415417
ModbusItem( 44103, "Bivalenztemperatur", FORMATS.TEMPERATUR, TYPES.NUMBER, DEVICES.W2, TEMPRANGE_BIVALENZ),
416418
ModbusItem( 44104, "Bivalenztemperatur WW", FORMATS.TEMPERATUR, TYPES.NUMBER, DEVICES.W2, TEMPRANGE_BIVALENZ),
417419

418-
ModbusItem(
419-
36101,
420-
"Gesamt Energie heute",
421-
FORMATS.ENERGY,
422-
TYPES.SENSOR,
423-
DEVICES.ST,
424-
RANGE_ENERGY,
425-
),
426-
ModbusItem(
427-
36102,
428-
"Gesamt Energie gestern",
429-
FORMATS.ENERGY,
430-
TYPES.SENSOR,
431-
DEVICES.ST,
432-
RANGE_ENERGY,
433-
),
434-
ModbusItem(
435-
36103,
436-
"Gesamt Energie Monat",
437-
FORMATS.ENERGY,
438-
TYPES.SENSOR,
439-
DEVICES.ST,
440-
RANGE_ENERGY,
441-
),
442-
ModbusItem(
443-
36104,
444-
"Gesamt Energie Jahr",
445-
FORMATS.ENERGY,
446-
TYPES.SENSOR,
447-
DEVICES.ST,
448-
RANGE_ENERGY,
449-
),
450-
ModbusItem(
451-
36201,
452-
"Heizen Energie heute",
453-
FORMATS.ENERGY,
454-
TYPES.SENSOR,
455-
DEVICES.ST,
456-
RANGE_ENERGY,
457-
),
458-
ModbusItem(
459-
36202,
460-
"Heizen Energie gestern",
461-
FORMATS.ENERGY,
462-
TYPES.SENSOR,
463-
DEVICES.ST,
464-
RANGE_ENERGY,
465-
),
466-
ModbusItem(
467-
36203,
468-
"Heizen Energie Monat",
469-
FORMATS.ENERGY,
470-
TYPES.SENSOR,
471-
DEVICES.ST,
472-
RANGE_ENERGY,
473-
),
474-
ModbusItem(
475-
36204,
476-
"Heizen Energie Jahr",
477-
FORMATS.ENERGY,
478-
TYPES.SENSOR,
479-
DEVICES.ST,
480-
RANGE_ENERGY,
481-
),
482-
ModbusItem(
483-
36301,
484-
"Warmwasser Energie heute",
485-
FORMATS.ENERGY,
486-
TYPES.SENSOR,
487-
DEVICES.ST,
488-
RANGE_ENERGY,
489-
),
490-
ModbusItem(
491-
36302,
492-
"Warmwasser Energie gestern",
493-
FORMATS.ENERGY,
494-
TYPES.SENSOR,
495-
DEVICES.ST,
496-
RANGE_ENERGY,
497-
),
498-
ModbusItem(
499-
36303,
500-
"Warmwasser Energie Monat",
501-
FORMATS.ENERGY,
502-
TYPES.SENSOR,
503-
DEVICES.ST,
504-
RANGE_ENERGY,
505-
),
506-
ModbusItem(
507-
36304,
508-
"Warmwasser Energie Jahr",
509-
FORMATS.ENERGY,
510-
TYPES.SENSOR,
511-
DEVICES.ST,
512-
RANGE_ENERGY,
513-
),
514-
ModbusItem(
515-
36401,
516-
"Kühlen Energie heute",
517-
FORMATS.ENERGY,
518-
TYPES.SENSOR,
519-
DEVICES.ST,
520-
RANGE_ENERGY,
521-
),
522-
ModbusItem(
523-
36402,
524-
"Kühlen Energie gestern",
525-
FORMATS.ENERGY,
526-
TYPES.SENSOR,
527-
DEVICES.ST,
528-
RANGE_ENERGY,
529-
),
530-
ModbusItem(
531-
36403,
532-
"Kühlen Energie Monat",
533-
FORMATS.ENERGY,
534-
TYPES.SENSOR,
535-
DEVICES.ST,
536-
RANGE_ENERGY,
537-
),
538-
ModbusItem(
539-
36404,
540-
"Kühlen Energie Jahr",
541-
FORMATS.ENERGY,
542-
TYPES.SENSOR,
543-
DEVICES.ST,
544-
RANGE_ENERGY,
545-
),
546-
ModbusItem(
547-
36501,
548-
"Abtauen Energie heute",
549-
FORMATS.ENERGY,
550-
TYPES.SENSOR,
551-
DEVICES.ST,
552-
RANGE_ENERGY,
553-
),
554-
ModbusItem(
555-
36502,
556-
"Abtauen Energie gestern",
557-
FORMATS.ENERGY,
558-
TYPES.SENSOR,
559-
DEVICES.ST,
560-
RANGE_ENERGY,
561-
),
562-
ModbusItem(
563-
36503,
564-
"Abtauen Energie Monat",
565-
FORMATS.ENERGY,
566-
TYPES.SENSOR,
567-
DEVICES.ST,
568-
RANGE_ENERGY,
569-
),
570-
ModbusItem(
571-
36504,
572-
"Abtauen Energie Jahr",
573-
FORMATS.ENERGY,
574-
TYPES.SENSOR,
575-
DEVICES.ST,
576-
RANGE_ENERGY,
577-
),
578-
ModbusItem(
579-
36601,
580-
"Gesamt Energie II heute",
581-
FORMATS.ENERGY,
582-
TYPES.SENSOR,
583-
DEVICES.ST,
584-
RANGE_ENERGY,
585-
),
586-
ModbusItem(
587-
36602,
588-
"Gesamt Energie II gestern",
589-
FORMATS.ENERGY,
590-
TYPES.SENSOR,
591-
DEVICES.ST,
592-
RANGE_ENERGY,
593-
),
594-
ModbusItem(
595-
36603,
596-
"Gesamt Energie II Monat",
597-
FORMATS.ENERGY,
598-
TYPES.SENSOR,
599-
DEVICES.ST,
600-
RANGE_ENERGY,
601-
),
602-
ModbusItem(
603-
36604,
604-
"Gesamt Energie II Jahr",
605-
FORMATS.ENERGY,
606-
TYPES.SENSOR,
607-
DEVICES.ST,
608-
RANGE_ENERGY,
609-
),
610-
ModbusItem(
611-
36701,
612-
"Elektr. Energie heute",
613-
FORMATS.ENERGY,
614-
TYPES.SENSOR,
615-
DEVICES.ST,
616-
RANGE_ENERGY,
617-
),
618-
ModbusItem(
619-
36702,
620-
"Elektr. Energie gestern",
621-
FORMATS.ENERGY,
622-
TYPES.SENSOR,
623-
DEVICES.ST,
624-
RANGE_ENERGY,
625-
),
626-
ModbusItem(
627-
36703,
628-
"Elektr. Energie Monat",
629-
FORMATS.ENERGY,
630-
TYPES.SENSOR,
631-
DEVICES.ST,
632-
RANGE_ENERGY,
633-
),
634-
ModbusItem(
635-
36704,
636-
"Elektr. Energie Jahr",
637-
FORMATS.ENERGY,
638-
TYPES.SENSOR,
639-
DEVICES.ST,
640-
RANGE_ENERGY,
641-
),
642-
]
420+
ModbusItem( 36101, "Gesamt Energie heute", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
421+
ModbusItem( 36102, "Gesamt Energie gestern", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
422+
ModbusItem( 36103, "Gesamt Energie Monat", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
423+
ModbusItem( 36104, "Gesamt Energie Jahr", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
424+
ModbusItem( 36201, "Heizen Energie heute", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
425+
ModbusItem( 36202, "Heizen Energie gestern", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
426+
ModbusItem( 36203, "Heizen Energie Monat", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
427+
ModbusItem( 36204, "Heizen Energie Jahr", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
428+
ModbusItem( 36301, "Warmwasser Energie heute", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
429+
ModbusItem( 36302, "Warmwasser Energie gestern", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
430+
ModbusItem( 36303, "Warmwasser Energie Monat", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
431+
ModbusItem( 36304, "Warmwasser Energie Jahr", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
432+
ModbusItem( 36401, "Kühlen Energie heute", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
433+
ModbusItem( 36402, "Kühlen Energie gestern", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
434+
ModbusItem( 36403, "Kühlen Energie Monat", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
435+
ModbusItem( 36404, "Kühlen Energie Jahr", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
436+
ModbusItem( 36501, "Abtauen Energie heute", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
437+
ModbusItem( 36502, "Abtauen Energie gestern", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
438+
ModbusItem( 36503, "Abtauen Energie Monat", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
439+
ModbusItem( 36504, "Abtauen Energie Jahr", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
440+
ModbusItem( 36601, "Gesamt Energie II heute", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
441+
ModbusItem( 36602, "Gesamt Energie II gestern", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
442+
ModbusItem( 36603, "Gesamt Energie II Monat", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
443+
ModbusItem( 36604, "Gesamt Energie II Jahr", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
444+
ModbusItem( 36701, "Elektr. Energie heute", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
445+
ModbusItem( 36702, "Elektr. Energie gestern", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
446+
ModbusItem( 36703, "Elektr. Energie Monat", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
447+
ModbusItem( 36704, "Elektr. Energie Jahr", FORMATS.ENERGY, TYPES.SENSOR, DEVICES.ST, RANGE_ENERGY),
448+
] # noqa: E501
643449
# fmt: on

0 commit comments

Comments
 (0)