{"record":{"id":"5136c8f79ed19acb","repo":"home-assistant/core","slug":"ex","errorCode":null,"errorMessage":"ex","messagePattern":"ex","errorType":"exception","errorClass":"UpdateFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/asuswrt/bridge.py","lineNumber":427,"sourceCode":"    async def async_disconnect(self) -> None:\n        \"\"\"Disconnect to the device.\"\"\"\n        await self._api.async_disconnect()\n\n    async def _get_data(\n        self,\n        datatype: AsusData,\n        force: bool = False,\n    ) -> dict[str, Any]:\n        \"\"\"Get data from the device.\n\n        This is a generic method which automatically converts to\n        the Home Assistant-compatible format.\n        \"\"\"\n        try:\n            raw = await self._api.async_get_data(datatype, force=force)\n            return translate_to_legacy(clean_dict(convert_to_ha_data(raw)))\n        except AsusRouterError as ex:\n            raise UpdateFailed(ex) from ex\n\n    async def _get_sensors(self, datatype: AsusData) -> list[str]:\n        \"\"\"Get the available sensors.\n\n        This is a generic method which automatically converts to\n        the Home Assistant-compatible format.\n        \"\"\"\n        sensors = []\n        try:\n            data = await self._api.async_get_data(datatype)\n            # Get the list of sensors from the raw data\n            # and translate in to the legacy format\n            sensors = translate_to_legacy(convert_to_ha_sensors(data, datatype))\n            _LOGGER.debug(\"Available `%s` sensors: %s\", datatype.value, sensors)\n        except AsusRouterError as ex:\n            _LOGGER.warning(\n                \"Cannot get available `%s` sensors with exception: %s\",\n                datatype.value,","sourceCodeStart":409,"sourceCodeEnd":445,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/asuswrt/bridge.py#L409-L445","documentation":"UpdateFailed raised in AsusWrtBridge.async_get_data when the asusrouter library raises any AsusRouterError while fetching raw data (the new asusrouter-based API path). The library error is chained; 'ex' in the log is the exception repr. This is the generic failure signal for every sensor datatype fetched through this bridge method.","triggerScenarios":"self._api.async_get_data(datatype, force=force) failing: HTTP API errors on newer ASUS routers, authentication errors, connection resets, unsupported datatype for the router model.","commonSituations":"Router HTTP API token expired or revoked; router model lacking a sensor (e.g. no temperature sensors); asusrouter library incompatible with the router's firmware API version.","solutions":["Re-run the integration's reconfigure flow to refresh credentials/API access","Update the asusrouter python package and the HA integration","Verify the router's remote/HTTP API is enabled and the model is supported by asusrouter","Check the chained exception in logs (UpdateFailed __cause__) for the library's specific message"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    data = await bridge.async_get_data(datatype)\nexcept UpdateFailed as err:\n    cause = err.__cause__  # original AsusRouterError\n    _LOGGER.warning(\"asusrouter fetch failed: %r\", cause)\n    raise","preventionTips":["Re-authenticate via the reconfigure flow when API tokens expire","Keep the asusrouter library matched to your router firmware generation","Inspect the chained AsusRouterError for the actionable message"],"tags":["asuswrt","router","http-api","coordinator","library"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}