@@ -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