{"record":{"id":"745973a7a960826e","repo":"home-assistant/core","slug":"inverter-error","errorCode":"inverter_error","errorMessage":"Inverter returned an error","messagePattern":"Inverter returned an error","errorType":"exception","errorClass":"UpdateFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/apsystems/coordinator.py","lineNumber":80,"sourceCode":"\n    @override\n    async def _async_setup(self) -> None:\n        try:\n            device_info = await self.api.get_device_info()\n        except ConnectionError, TimeoutError:\n            raise UpdateFailed from None\n        self.api.max_power = device_info.maxPower\n        self.api.min_power = device_info.minPower\n        self.device_version = device_info.devVer\n        self.battery_system = device_info.isBatterySystem\n\n    @override\n    async def _async_update_data(self) -> ApSystemsSensorData:\n        try:\n            output_data = await self.api.get_output_data()\n            alarm_info = await self.api.get_alarm_info()\n        except InverterReturnedError:\n            raise UpdateFailed(\n                translation_domain=DOMAIN, translation_key=\"inverter_error\"\n            ) from None\n        return ApSystemsSensorData(output_data=output_data, alarm_info=alarm_info)\n","sourceCodeStart":62,"sourceCodeEnd":84,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/apsystems/coordinator.py#L62-L84","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"# Coordinator already handles this: InverterReturnedError -> UpdateFailed -> auto retry.\n# In custom code calling the client directly:\nfrom aiohttp import ClientError\n\nfor attempt in range(3):\n    try:\n        return await client.get_output_data()\n    except InverterReturnedError:\n        if attempt == 2:\n            raise\n    await asyncio.sleep(2 ** attempt)","preventionTips":["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."],"tags":["home-assistant","apsystems","solar-inverter","coordinator","retry"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}