Skip to content

Commit c3cf32c

Browse files
committed
Add support for reading MOD 31000+ register range (battery/BMS data)
1 parent e4eae36 commit c3cf32c

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

custom_components/growatt_modbus/growatt_modbus.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ def read_all_data(self) -> Optional[GrowattData]:
410410
has_base_range = any(0 <= addr < 1000 for addr in addresses)
411411
has_storage_range = any(1000 <= addr < 2000 for addr in addresses)
412412
has_3000_range = any(3000 <= addr < 4000 for addr in addresses)
413+
has_31000_range = any(31000 <= addr < 32000 for addr in addresses)
413414

414415
# Read base range (0-124) if needed - SPH models
415416
if has_base_range:
@@ -435,18 +436,30 @@ def read_all_data(self) -> Optional[GrowattData]:
435436
for i, value in enumerate(registers):
436437
self._register_cache[1000 + i] = value
437438

438-
# Read 3000 range if needed - MIN models
439+
# Read 3000 range if needed - MIN/MOD models
439440
if has_3000_range:
440441
logger.debug("Reading 3000 range (3000-3110)")
441442
registers = self.read_input_registers(3000, 111)
442443
if registers is None:
443444
logger.error("Failed to read main input register block")
444445
return None
445-
446+
446447
# Populate cache
447448
for i, value in enumerate(registers):
448449
self._register_cache[3000 + i] = value
449-
450+
451+
# Read 31000 range if needed - MOD battery/BMS data
452+
if has_31000_range:
453+
logger.debug("Reading 31000 range (31100-31299)")
454+
registers = self.read_input_registers(31100, 200)
455+
if registers is None:
456+
logger.warning("Failed to read 31000 register block (MOD battery data may be unavailable)")
457+
# Don't return None - continue with what we have
458+
else:
459+
# Populate cache
460+
for i, value in enumerate(registers):
461+
self._register_cache[31100 + i] = value
462+
450463
# Now extract values using the register map
451464
try:
452465
# Status

0 commit comments

Comments
 (0)