home-assistant/core · error · UpdateFailed
inverter_error
inverter_error
Error message
Inverter returned an error
What it means
UpdateFailed raised by the APSystems coordinator (translation_key 'inverter_error') when the solar inverter client raises InverterReturnedError while fetching output data or alarm info. It means the inverter answered the local API request with an error/invalid response rather than timing out — the coordinator marks the update failed and schedules a retry.
Source
Thrown at homeassistant/components/apsystems/coordinator.py:80
@override
async def _async_setup(self) -> None:
try:
device_info = await self.api.get_device_info()
except ConnectionError, TimeoutError:
raise UpdateFailed from None
self.api.max_power = device_info.maxPower
self.api.min_power = device_info.minPower
self.device_version = device_info.devVer
self.battery_system = device_info.isBatterySystem
@override
async def _async_update_data(self) -> ApSystemsSensorData:
try:
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)
View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Wait for the next coordinator retry — transient inverter errors usually self-heal within a few polling intervals.
- Verify the configured host/IP points to the actual APSystems unit and that the unit is powered and networked.
- Power-cycle the inverter/ECU if errors persist, and check for a firmware update in the vendor app.
- If polling interval is very short, increase update interval to reduce load on the inverter's limited local API.
Defensive patterns
Strategy: retry
Try / catch
# Coordinator already handles this: InverterReturnedError -> UpdateFailed -> auto retry.
# In custom code calling the client directly:
from aiohttp import ClientError
for attempt in range(3):
try:
return await client.get_output_data()
except InverterReturnedError:
if attempt == 2:
raise
await asyncio.sleep(2 ** attempt) Prevention
- Keep a stable IP for the inverter and confirm it is reachable before polls.
- Expect transient errors around power-on; let the coordinator retry rather than reloading the entry.
- Avoid polling the inverter's local API more often than the integration's default.
When it happens
Trigger: self.api.get_output_data() or get_alarm_data() in _async_update_data raises InverterReturnedError: the inverter's HTTP/UDP response signals an error condition (its QID/endpoint returns an error token), typically while the unit is rebooting, off (no sun/night power), mid-firmware-upgrade, or when the request hits the wrong endpoint/port.
Common situations: ECU/inverter unreachable state at dawn or dusk as the unit powers up; APSystems firmware updates that briefly break the local API; polling too aggressively; wrong IP configured so another device answers; Wi-Fi dropouts between HA and the EZ1m socket.
Related errors
- Error communicating with API: {err}
- Unable find multi-factor auth module: {mfa_module_id}
- update_error
- Failed to communicate with device.
- Failed to connect
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/745973a7a960826e.
Report an issue: GitHub.