{"record":{"id":"e778c97a5ab428a5","repo":"home-assistant/core","slug":"unable-to-connect-to-abode-ex","errorCode":null,"errorMessage":"Unable to connect to Abode: {ex}","messagePattern":"Unable to connect to Abode: (.+?)","errorType":"exception","errorClass":"ConfigEntryNotReady","httpStatus":null,"severity":"error","filePath":"homeassistant/components/abode/__init__.py","lineNumber":101,"sourceCode":"    # Configure abode library to use config directory for storing data\n    jaraco.abode.config.paths.override(user_data=Path(hass.config.path(\"Abode\")))\n\n    # For previous config entries where unique_id is None\n    if entry.unique_id is None:\n        hass.config_entries.async_update_entry(\n            entry, unique_id=entry.data[CONF_USERNAME]\n        )\n\n    try:\n        abode = await hass.async_add_executor_job(\n            Abode, username, password, True, True, True\n        )\n\n    except AbodeAuthenticationException as ex:\n        raise ConfigEntryAuthFailed(f\"Invalid credentials: {ex}\") from ex\n\n    except (AbodeException, ConnectTimeout, HTTPError) as ex:\n        raise ConfigEntryNotReady(f\"Unable to connect to Abode: {ex}\") from ex\n\n    entry.runtime_data = AbodeSystem(abode, polling)\n\n    await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)\n\n    await setup_hass_events(hass, entry)\n    await hass.async_add_executor_job(setup_abode_events, hass, entry)\n\n    return True\n\n\ndef _shutdown_client(abode: Abode) -> None:\n    \"\"\"Shutdown client.\"\"\"\n    abode.events.stop()\n    abode.logout()\n\n\nasync def async_unload_entry(hass: HomeAssistant, entry: AbodeConfigEntry) -> bool:","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/abode/__init__.py#L83-L119","documentation":"Wrapped as ConfigEntryNotReady when the Abode client constructor raises any non-auth failure: AbodeException, requests ConnectTimeout, or HTTPError. Home Assistant will mark the entry as setup-retry and back off, retrying automatically rather than failing permanently.","triggerScenarios":"Abode(username, password, True, True, True) raises AbodeException (library-level API error) or the underlying HTTP request times out or returns an HTTP error status during login/initial fetch.","commonSituations":"Abode cloud API outage or rate limiting, local network/DNS problems blocking goabode.com, transient 5xx responses, or an expired TLS interception cert on the network.","solutions":["Wait for Home Assistant's automatic retry (ConfigEntryNotReady backs off and retries) — often transient","Check https://status.goabode.com and Abode app for cloud issues","Verify outbound HTTPS to goabode.com from the host (DNS, firewall, proxy)","If it persists with valid credentials, capture a debug log of the Abode exception detail and report it"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"except (AbodeException, ConnectTimeout, HTTPError) as ex:\n    raise ConfigEntryNotReady(f\"Unable to connect to Abode: {ex}\") from ex\n# Home Assistant backs off and retries automatically","preventionTips":["Map transient errors to ConfigEntryNotReady, never ConfigEntryError","Keep auth and connectivity exceptions in separate except clauses","Log the underlying exception via chaining for debugging"],"tags":["config-entry","network","abode","retryable","integration-setup"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}