{"record":{"id":"72ae4a2d157cf6cc","repo":"home-assistant/core","slug":"coordinator-state-error","errorCode":"coordinator_state_error","errorMessage":"Error while fetching state data for heating circuit {circuit} from the BSB-LAN device at {host}","messagePattern":"Error while fetching state data for heating circuit (.+?) from the BSB-LAN device at (.+?)","errorType":"exception","errorClass":"UpdateFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bsblan/coordinator.py","lineNumber":124,"sourceCode":"\n    @override\n    async def _async_update_data(self) -> BSBLanFastData:\n        \"\"\"Fetch fast-changing data from the BSB-LAN device.\"\"\"\n        states: dict[int, State] = {}\n        host = self.config_entry.data[CONF_HOST]\n        try:\n            # Use include filtering to only fetch parameters we actually use.\n            # BSB-LAN is a serial bus — it processes one parameter at a time,\n            # so concurrent requests offer no speed benefit over sequential.\n            for circuit in self.circuits:\n                try:\n                    states[circuit] = await self.client.state(\n                        include=STATE_INCLUDE, circuit=circuit\n                    )\n                except BSBLANAuthError, BSBLANConnectionError:\n                    raise\n                except BSBLANError as err:\n                    raise UpdateFailed(\n                        translation_domain=DOMAIN,\n                        translation_key=\"coordinator_state_error\",\n                        translation_placeholders={\n                            \"host\": host,\n                            \"circuit\": str(circuit),\n                        },\n                    ) from err\n            sensor = await self.client.sensor(include=SENSOR_INCLUDE)\n\n        except BSBLANAuthError as err:\n            raise ConfigEntryAuthFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"coordinator_auth_error\",\n            ) from err\n        except BSBLANConnectionError as err:\n            raise UpdateFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"coordinator_connection_error\",","sourceCodeStart":106,"sourceCodeEnd":142,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bsblan/coordinator.py#L106-L142","documentation":"Raised by the bsblan DataUpdateCoordinator when fetching state for one heating circuit via `client.state(include=STATE_INCLUDE, circuit=circuit)` raises a BSBLANError that is not auth or connection related. It becomes UpdateFailed with translation key `coordinator_state_error` plus host and circuit placeholders, marking entities unavailable and showing the message in the integration's update error banner. Note the deliberate `except BSBLANAuthError, BSBLANConnectionError: raise` (Python 3.14 unparenthesized form) so those propagate to their own handlers.","triggerScenarios":"A coordinator refresh where exactly one circuit's state query fails — e.g. the configured circuit does not exist on the device, the include parameters are rejected, or a malformed response for that circuit.","commonSituations":"Multi-circuit setups where one circuit was removed/re-wired, devices in reduced single-circuit API mode still listing an extra circuit, or transient malformed JSON for one bus read.","solutions":["Check the circuit number in the error against circuits actually present on the boiler; remove stale circuits by reconfiguring the entry.","Reload/re-pair after a firmware update so the circuit list matches the device's current JSON API version.","If transient, the next scheduled coordinator refresh clears it; reduce external polling that contends on the serial bus.","Enable debug logging to capture the underlying BSBLANError for the failing circuit."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    states[circuit] = await client.state(include=STATE_INCLUDE, circuit=circuit)\nexcept BSBLANAuthError, BSBLANConnectionError:\n    raise\nexcept BSBLANError as err:\n    raise UpdateFailed(...) from err","preventionTips":["Reconfigure the entry when the physical circuit layout changes.","After firmware updates, reload so the circuit list is re-derived from the device.","Watch the integration's update-error banner — it names the failing circuit."],"tags":["home-assistant","bsblan","coordinator","update-failed","circuit"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}