Catch InverterReturnedError in APSystems (#131930)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>pull/132095/head
parent
e3885b8117
commit
6a09474623
|
@ -5,12 +5,17 @@ from __future__ import annotations
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from APsystemsEZ1 import APsystemsEZ1M, ReturnAlarmInfo, ReturnOutputData
|
from APsystemsEZ1 import (
|
||||||
|
APsystemsEZ1M,
|
||||||
|
InverterReturnedError,
|
||||||
|
ReturnAlarmInfo,
|
||||||
|
ReturnOutputData,
|
||||||
|
)
|
||||||
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
|
|
||||||
from .const import LOGGER
|
from .const import DOMAIN, LOGGER
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -43,6 +48,11 @@ class ApSystemsDataCoordinator(DataUpdateCoordinator[ApSystemsSensorData]):
|
||||||
self.api.min_power = device_info.minPower
|
self.api.min_power = device_info.minPower
|
||||||
|
|
||||||
async def _async_update_data(self) -> ApSystemsSensorData:
|
async def _async_update_data(self) -> ApSystemsSensorData:
|
||||||
output_data = await self.api.get_output_data()
|
try:
|
||||||
alarm_info = await self.api.get_alarm_info()
|
output_data = await self.api.get_output_data()
|
||||||
|
alarm_info = await self.api.get_alarm_info()
|
||||||
|
except InverterReturnedError:
|
||||||
|
raise UpdateFailed(
|
||||||
|
translation_domain=DOMAIN, translation_key="inverter_error"
|
||||||
|
) from None
|
||||||
return ApSystemsSensorData(output_data=output_data, alarm_info=alarm_info)
|
return ApSystemsSensorData(output_data=output_data, alarm_info=alarm_info)
|
||||||
|
|
|
@ -72,5 +72,10 @@
|
||||||
"name": "Inverter status"
|
"name": "Inverter status"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"exceptions": {
|
||||||
|
"inverter_error": {
|
||||||
|
"message": "Inverter returned an error"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
"""Test the APSystem setup."""
|
||||||
|
|
||||||
|
from unittest.mock import AsyncMock
|
||||||
|
|
||||||
|
from APsystemsEZ1 import InverterReturnedError
|
||||||
|
|
||||||
|
from homeassistant.components.apsystems.const import DOMAIN
|
||||||
|
from homeassistant.config_entries import ConfigEntryState
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
|
from . import setup_integration
|
||||||
|
|
||||||
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
|
|
||||||
|
async def test_update_failed(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_apsystems: AsyncMock,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
|
) -> None:
|
||||||
|
"""Test update failed."""
|
||||||
|
mock_apsystems.get_output_data.side_effect = InverterReturnedError
|
||||||
|
await setup_integration(hass, mock_config_entry)
|
||||||
|
entry = hass.config_entries.async_entries(DOMAIN)[0]
|
||||||
|
assert entry.state is ConfigEntryState.SETUP_RETRY
|
Loading…
Reference in New Issue