home-assistant/core · warning · ConfigEntryNotReady
Could not find Airthings device with address {address}: {rea
Error message
Could not find Airthings device with address {address}: {reason} What it means
ConfigEntryNotReady raised during airthings_ble coordinator setup when no Bluetooth device matching the config entry's unique_id (the BLE address) is currently known to the Bluetooth integration. The message is fully translated with the address and a reachability diagnostic reason explaining why the address is unknown or unreachable. Home Assistant will retry setup as Bluetooth discovery continues.
Source
Thrown at homeassistant/components/airthings_ble/coordinator.py:65
_LOGGER,
config_entry=entry,
name=DOMAIN,
update_interval=timedelta(seconds=interval),
)
@override
async def _async_setup(self) -> None:
"""Set up the coordinator."""
address = self.config_entry.unique_id
assert address is not None
await close_stale_connections_by_address(address)
ble_device = bluetooth.async_ble_device_from_address(self.hass, address)
if not ble_device:
raise ConfigEntryNotReady(
translation_domain=DOMAIN,
translation_key="device_not_found",
translation_placeholders={
"address": address,
"reason": bluetooth.async_address_reachability_diagnostics(
self.hass,
address.upper(),
BluetoothReachabilityIntent.CONNECTION,
),
},
)
self.ble_device = ble_device
if DEVICE_MODEL not in self.config_entry.data:
_LOGGER.debug("Fetching device info for migration")
try:
data = await self.airthings.update_device(self.ble_device)
except Exception as err:View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Bring the Airthings device close to the Home Assistant host or a Bluetooth proxy and wake it (press its button).
- Confirm the Bluetooth integration is active and an adapter or proxy is available (Settings > Devices & Services > Bluetooth).
- Check the 'reason' text — it states whether the address was never seen vs previously known, which distinguishes discovery issues from range issues.
- Verify the device's battery.
- Wait — ConfigEntryNotReady means setup retries automatically as discovery proceeds.
Defensive patterns
Strategy: validation
Validate before calling
from homeassistant.components import bluetooth
def ble_device_known(hass, address: str) -> bool:
return bluetooth.async_ble_device_from_address(hass, address) is not None Type guard
def is_airthings_ble_not_ready(err: Exception) -> bool:
return isinstance(err, ConfigEntryNotReady) and getattr(err, "translation_domain", None) == "airthings_ble" Try / catch
try:
await coordinator.async_config_entry_first_refresh()
except ConfigEntryNotReady:
# normal during BLE discovery: no action needed, HA retries as advertisements arrive
pass Prevention
- Place a Bluetooth proxy near the Airthings device before setup.
- Wake the device (button press) and confirm it appears in the Bluetooth integration's discovered devices list before adding it.
- Replace batteries proactively; weak batteries shrink advertisement range.
When it happens
Trigger: async_ble_device_from_address returns None at setup time: device not yet discovered, out of range, powered off, battery dead, or no Bluetooth adapter/interface scanning. The placeholder 'reason' comes from async_address_reachability_diagnostics describing whether the address was ever seen and its last known state.
Common situations: Device battery empty, device too far from the Bluetooth proxy/adapter, Bluetooth adapter missing or HCI down, device MAC changed (some devices randomize), or setup raced ahead of first BLE advertisement.
Related errors
- Unable to fetch data for migration: {err}
- Unable to fetch data: {err}
- device_not_found
- BTHome trigger {event_class} is not valid for device_id '{de
- Unable to fetch data: {err}
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/026b6f151d0a5fc8.
Report an issue: GitHub.