diff --git a/custom_components/solaredge_modbus_multi/const.py b/custom_components/solaredge_modbus_multi/const.py index 6ad5cc30..13f9388c 100644 --- a/custom_components/solaredge_modbus_multi/const.py +++ b/custom_components/solaredge_modbus_multi/const.py @@ -234,7 +234,7 @@ class SunSpecNotImpl(IntEnum): } VENDOR_STATUS = { - SunSpecNotImpl.INT16: None, + SunSpecNotImpl.UINT16: None, 0: "No Error", 17: "Temperature Too High", 25: "Isolation Faults", diff --git a/custom_components/solaredge_modbus_multi/hub.py b/custom_components/solaredge_modbus_multi/hub.py index 5fe29a8e..8e4d6a72 100644 --- a/custom_components/solaredge_modbus_multi/hub.py +++ b/custom_components/solaredge_modbus_multi/hub.py @@ -1094,6 +1094,8 @@ async def read_modbus_data(self) -> None: "AC_Energy_WH_SF", "I_DC_Current", "I_DC_Voltage", + "I_Status", + "I_Status_Vendor", ] uint16_data = ( inverter_data.registers[0:6] @@ -1101,6 +1103,7 @@ async def read_modbus_data(self) -> None: + [inverter_data.registers[16]] + inverter_data.registers[26:28] + [inverter_data.registers[29]] + + inverter_data.registers[38:40] ) self.decoded_model = dict( zip( @@ -1134,15 +1137,13 @@ async def read_modbus_data(self) -> None: "I_Temp_Trns", "I_Temp_Other", "I_Temp_SF", - "I_Status", - "I_Status_Vendor", ] int16_data = ( [inverter_data.registers[6]] + inverter_data.registers[13:16] + inverter_data.registers[17:24] + [inverter_data.registers[28]] - + inverter_data.registers[30:40] + + inverter_data.registers[30:38] ) self.decoded_model.update( diff --git a/custom_components/solaredge_modbus_multi/sensor.py b/custom_components/solaredge_modbus_multi/sensor.py index d74a067e..722a979f 100644 --- a/custom_components/solaredge_modbus_multi/sensor.py +++ b/custom_components/solaredge_modbus_multi/sensor.py @@ -1328,7 +1328,7 @@ class SolarEdgeInverterStatus(SolarEdgeStatusSensor): @property def native_value(self): try: - if self._platform.decoded_model["I_Status"] == SunSpecNotImpl.INT16: + if self._platform.decoded_model["I_Status"] == SunSpecNotImpl.UINT16: return None return str(DEVICE_STATUS[self._platform.decoded_model["I_Status"]]) @@ -1410,7 +1410,7 @@ def entity_registry_enabled_default(self) -> bool: @property def native_value(self): try: - if self._platform.decoded_model["I_Status_Vendor"] == SunSpecNotImpl.INT16: + if self._platform.decoded_model["I_Status_Vendor"] == SunSpecNotImpl.UINT16: return None else: