Skip to content

Commit 9a44490

Browse files
authored
improve register check (#2906)
1 parent f0950ef commit 9a44490

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

  • packages/modules/devices/sungrow/sungrow

packages/modules/devices/sungrow/sungrow/bat.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,16 @@ def detect_register_check(self) -> RegMode:
4646
return RegMode.NEW_REGISTERS
4747
except Exception:
4848
pass
49-
49+
# register 13000 is always available, if unused it contains zero
50+
# register type can only be determined if battery power is not zero
51+
if self.__tcp_client.read_input_registers(13021, ModbusDataType.UINT_16, unit=unit) == 0:
52+
raise ValueError("Speicherleistung aktuell 0kW. Registertyp wird gesetzt sobald "
53+
"Speicher Leistungswerte liefert.")
5054
try:
51-
self.__tcp_client.read_input_registers(13000, ModbusDataType.UINT_16, unit=unit)
52-
log.debug("Battery register check: using old_registers (13021 + 13000 bits for sign).")
53-
return RegMode.OLD_REGISTERS
55+
if self.__tcp_client.read_input_registers(13000, ModbusDataType.UINT_16, unit=unit) != 0:
56+
# if battery power is not zero and register 13000 shows status bits, old registers are used
57+
log.debug("Battery register check: using old_registers (13021 + 13000 bits for sign).")
58+
return RegMode.OLD_REGISTERS
5459
except Exception:
5560
pass
5661

0 commit comments

Comments
 (0)