home-assistant/core · error · InputValidationError

unknown

unknown

Error message

unknown

What it means

Catch-all failure in the Bond config flow: BondHub.setup() raised a ClientResponseError with any status other than 401 (e.g. 404, 500, 503), or any unexpected exception (logged with a traceback via _LOGGER.exception before raising). It means the hub spoke HTTP but the API call itself failed in an unclassified way.

Solutions

  1. Open Home Assistant logs and read the 'Unexpected exception' traceback — it identifies the real underlying error.
  2. Confirm the target really is a Bond hub: curl http://<host>:30001/v2/devices should return Bond JSON.
  3. Update the bond-api dependency / Home Assistant to pick up fixes, then retry.
  4. If the hub returned 5xx, retry after the hub is idle; reboot the hub if it persists.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    await hub.setup(max_devices=1)
except ClientConnectionError:
    ...  # cannot_connect path
except ClientResponseError as err:
    if err.status == HTTPStatus.UNAUTHORIZED:
        ...  # invalid_auth
    ...  # unknown: log err.status + err.message verbatim
except Exception:
    _LOGGER.exception("Unexpected exception")  # traceback is the real diagnostic
    ...

Prevention

When it happens

Trigger: Pointing the flow at a non-Bond device or reverse proxy that returns 404/500 on /v2/devices; hub returning 503 while busy; a bug in the bond-api library or an unexpected Python exception during setup. The full traceback is in the Home Assistant log at the moment this error appears.

Common situations: Wrong device address (another IoT gadget on the same IP), hub firmware returning unexpected payloads, a proxy/HTTPS endpoint where the plain local API is expected.

Related errors


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/1d60b9cca424591b. Report an issue: GitHub.

Appendix: source

Thrown at homeassistant/components/bond/config_flow.py:67

    bond = Bond(
        data[CONF_HOST],
        data[CONF_ACCESS_TOKEN],
        session=async_get_clientsession(hass),
        requestor_uuid=RequestorUUID.HOME_ASSISTANT,
    )
    try:
        hub = BondHub(bond, data[CONF_HOST])
        await hub.setup(max_devices=1)
    except ClientConnectionError as error:
        raise InputValidationError("cannot_connect") from error
    except ClientResponseError as error:
        if error.status == HTTPStatus.UNAUTHORIZED:
            raise InputValidationError("invalid_auth") from error
        raise InputValidationError("unknown") from error
    except Exception as error:
        _LOGGER.exception("Unexpected exception")
        raise InputValidationError("unknown") from error

    # Return unique ID from the hub to be stored in the config entry.
    if not hub.bond_id:
        raise InputValidationError("old_firmware")

    return hub.bond_id, hub.name


class BondConfigFlow(ConfigFlow, domain=DOMAIN):
    """Handle a config flow for Bond."""

    VERSION = 1

    def __init__(self) -> None:
        """Initialize config flow."""
        self._discovered: dict[str, str] = {}

    async def _async_try_automatic_configure(self) -> None:

View on GitHub (pinned to 58a3fdb3ea)