{"record":{"id":"8e2b041e8d2542fd","repo":"home-assistant/core","slug":"err-8e2b04","errorCode":null,"errorMessage":"{err}","messagePattern":"\\{err\\}","errorType":"exception","errorClass":"UpdateFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/broadlink/updater.py","lineNumber":98,"sourceCode":"                and self.last_update\n                and (\n                    dt_util.utcnow() - self.last_update > self.SCAN_INTERVAL * 3\n                    or isinstance(err, (AuthorizationError, OSError))\n                )\n            ):\n                self.available = False\n                _LOGGER.warning(\n                    \"Disconnected from %s (%s at %s)\",\n                    self.device.name,\n                    self.device.api.model,\n                    self.device.api.host[0],\n                )\n                if not self.coordinator.last_update_success:\n                    # When the previous refresh already failed, the coordinator\n                    # will skip listener notification, so notify explicitly to\n                    # ensure entities flip to unavailable on this transition.\n                    self.coordinator.async_update_listeners()\n            raise UpdateFailed(err) from err\n\n        if self.available is False:\n            _LOGGER.warning(\n                \"Connected to %s (%s at %s)\",\n                self.device.name,\n                self.device.api.model,\n                self.device.api.host[0],\n            )\n        self.available = True\n        self.last_update = dt_util.utcnow()\n        return data\n\n    @abstractmethod\n    async def async_fetch_data(self) -> dict[str, Any] | None:\n        \"\"\"Fetch data from the device.\"\"\"\n\n\nclass BroadlinkA1UpdateManager(BroadlinkUpdateManager[blk.a1]):","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/broadlink/updater.py#L80-L116","documentation":"UpdateFailed raised by the Broadlink DataUpdateCoordinator when the underlying device request raises (err comes from the device API call in _async_fetch_data). This marks the coordinator's refresh as failed so entities become unavailable and HA schedules a retry with backoff. The surrounding code also flips self.available and logs connect/disconnect transitions.","triggerScenarios":"Broadlink device unreachable on the network (powered off, IP changed via DHCP, firewall blocking); device locked or auth failed (wrong lock in broadlink library, device re-registered to another account); transient socket timeouts during the coordinator update interval.","commonSituations":"Router DHCP reassigns the Broadlink's IP — set a DHCP reservation; device firmware update rebooting; heavy local network congestion or Wi-Fi dropout; device in an unreachable subnet after network reconfiguration.","solutions":["Ping the Broadlink device IP and fix connectivity (power-cycle, check Wi-Fi)","Set a DHCP reservation so the device IP never changes","If auth-related, re-lock/re-configure the device through the integration's config flow","Wait for the coordinator's automatic retry — transient failures self-heal with backoff","Check 'Disconnected from'/'Connected to' warning logs around the failure to confirm reconnect behavior"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"# Coordinator-level: intercept UpdateFailed in listeners/data consumers\ntry:\n    await coordinator.async_config_entry_first_refresh()\nexcept ConfigEntryNotReady:\n    # Broadlink device unreachable; HA retries setup with backoff\n    raise","preventionTips":["Reserve a static DHCP IP for every Broadlink device","Keep Broadlink devices on reliable Wi-Fi with good signal","Rely on the coordinator's built-in retry/backoff instead of manual polling loops"],"tags":["broadlink","coordinator","update-failed","network","home-assistant"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}