{"record":{"id":"e828db6fc1457594","repo":"home-assistant/core","slug":"error-communicating-with-homeassistant-analytics","errorCode":null,"errorMessage":"Error communicating with Homeassistant Analytics","messagePattern":"Error communicating with Homeassistant Analytics","errorType":"exception","errorClass":"UpdateFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/analytics_insights/coordinator.py","lineNumber":78,"sourceCode":"        self._client = client\n        self._tracked_apps = self.config_entry.options.get(CONF_TRACKED_APPS, [])\n        self._tracked_integrations = self.config_entry.options[\n            CONF_TRACKED_INTEGRATIONS\n        ]\n        self._tracked_custom_integrations = self.config_entry.options[\n            CONF_TRACKED_CUSTOM_INTEGRATIONS\n        ]\n\n    @override\n    async def _async_update_data(self) -> AnalyticsData:\n        try:\n            apps_data = (\n                await self._client.get_addons()\n            )  # Still add method name. Needs library update\n            data = await self._client.get_current_analytics()\n            custom_data = await self._client.get_custom_integrations()\n        except HomeassistantAnalyticsConnectionError as err:\n            raise UpdateFailed(\n                \"Error communicating with Homeassistant Analytics\"\n            ) from err\n        except HomeassistantAnalyticsNotModifiedError:\n            return self.data\n        apps = {app: get_app_value(apps_data, app) for app in self._tracked_apps}\n        core_integrations = {\n            integration: data.integrations.get(integration, 0)\n            for integration in self._tracked_integrations\n        }\n        custom_integrations = {\n            integration: get_custom_integration_value(custom_data, integration)\n            for integration in self._tracked_custom_integrations\n        }\n        return AnalyticsData(\n            data.active_installations,\n            data.reports_integrations,\n            apps,\n            core_integrations,","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/analytics_insights/coordinator.py#L60-L96","documentation":"Raised as UpdateFailed when any of the three per-refresh calls (get_addons, get_current_analytics, get_custom_integrations) fails with HomeassistantAnalyticsConnectionError inside _async_update_data. Functionally identical to the setup-time error (183) but occurring on an established entry; entities keep their last values and the coordinator retries on its schedule.","triggerScenarios":"A coordinator refresh while the network is down, the analytics service is temporarily unavailable, or the client session is dropped (HA restart of the aiohttp session, long-lived entry going stale).","commonSituations":"Transient internet dropouts, analytics service maintenance windows, or rate limiting after too-frequent updates.","solutions":["Treat as transient: the coordinator retries automatically; check whether subsequent refreshes succeed.","Verify outbound connectivity to analytics.next.home-assistant.io.","If persistent, reload the integration to rebuild the client session.","Check logs for the underlying HomeassistantAnalyticsConnectionError detail."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"In _async_update_data consumers, treat UpdateFailed('Error communicating...') as transient; entities retain prior data by design.","preventionTips":["Don't build automations that hard-fail on a single analytics entity unavailability.","Use the coordinator's last_success_time if you need staleness thresholds."],"tags":["network","coordinator","analytics","update-failed"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}