Skip to content

Commit f3f8a84

Browse files
Merge pull request #397 from WillCodeForCats/379-problem-with-battery-reading-after-system-reboot
Use battery rating value for detection
2 parents 9615cd7 + c804a72 commit f3f8a84

File tree

1 file changed

+10
-5
lines changed
  • custom_components/solaredge_modbus_multi

1 file changed

+10
-5
lines changed

custom_components/solaredge_modbus_multi/hub.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1597,7 +1597,7 @@ async def init_device(self) -> None:
15971597
parse_modbus_string(decoder.decode_string(32)),
15981598
),
15991599
("B_Device_Address", decoder.decode_16bit_uint()),
1600-
("Reserved", decoder.decode_16bit_uint()),
1600+
("ignore", decoder.skip_bytes(2)),
16011601
("B_RatedEnergy", decoder.decode_32bit_float()),
16021602
("B_MaxChargePower", decoder.decode_32bit_float()),
16031603
("B_MaxDischargePower", decoder.decode_32bit_float()),
@@ -1606,6 +1606,11 @@ async def init_device(self) -> None:
16061606
]
16071607
)
16081608

1609+
try:
1610+
del self.decoded_common["ignore"]
1611+
except KeyError:
1612+
pass
1613+
16091614
for name, value in iter(self.decoded_common.items()):
16101615
if isinstance(value, float):
16111616
display_value = float_to_hex(value)
@@ -1644,11 +1649,11 @@ async def init_device(self) -> None:
16441649
].translate(ascii_ctrl_chars)
16451650

16461651
if (
1647-
len(self.decoded_common["B_Manufacturer"]) == 0
1648-
or len(self.decoded_common["B_Model"]) == 0
1649-
or len(self.decoded_common["B_SerialNumber"]) == 0
1652+
float_to_hex(self.decoded_common["B_RatedEnergy"])
1653+
== hex(SunSpecNotImpl.FLOAT32)
1654+
or self.decoded_common["B_RatedEnergy"] <= 0
16501655
):
1651-
raise DeviceInvalid(f"Battery {self.battery_id} not usable.")
1656+
raise DeviceInvalid(f"Battery {self.battery_id} not usable (rating <=0)")
16521657

16531658
self.manufacturer = self.decoded_common["B_Manufacturer"]
16541659
self.model = self.decoded_common["B_Model"]

0 commit comments

Comments
 (0)