{"record":{"id":"cafdb1813b46637b","repo":"home-assistant/core","slug":"coordinator-auth-error","errorCode":"coordinator_auth_error","errorMessage":"Authentication failed for BSB-LAN device","messagePattern":"Authentication failed for BSB-LAN device","errorType":"exception","errorClass":"ConfigEntryAuthFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bsblan/coordinator.py","lineNumber":135,"sourceCode":"                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\",\n                translation_placeholders={\"host\": host},\n            ) from err\n\n        # Fetch DHW state separately - device may not support hot water\n        dhw: HotWaterState | None = None\n        try:\n            dhw = await self.client.hot_water_state(include=DHW_STATE_INCLUDE)\n        except BSBLANError:\n            # Preserve last known DHW state if available (entity may depend on it)\n            if self.data:\n                dhw = self.data.dhw","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bsblan/coordinator.py#L117-L153","documentation":"Raised by the bsblan coordinator when any state fetch in the update raises BSBLANAuthError. It becomes ConfigEntryAuthFailed with translation key `coordinator_auth_error`, which immediately moves the config entry to SETUP_ERROR/re-auth and halts further coordinator updates until credentials are fixed. This is the runtime counterpart of the setup-time auth error.","triggerScenarios":"A periodic coordinator refresh after the user changed the BSB-LAN web password, credentials were revoked, or auth settings changed on the device — the first state/sensor call then returns 401/403 and BSBLANAuthError propagates out of the inner try (it is explicitly re-raised by `except BSBLANAuthError, BSBLANConnectionError: raise`).","commonSituations":"Password rotation on the device without updating HA; token/session invalidation after firmware update; shared credentials changed by another user.","solutions":["Click re-configure/re-authenticate on the bsblan integration card and enter the new credentials.","Confirm the credentials work in a browser against the device's web UI.","After re-auth, reload the entry so the coordinator resumes scheduled updates."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Update HA credentials immediately after rotating the device password.","Don't share the BSB-LAN login with tools that might change it.","Treat sudden mass-unavailability of bsblan entities as a signal to check auth."],"tags":["home-assistant","bsblan","authentication","coordinator","reauth"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}