diff --git a/homeassistant/components/airnow/__init__.py b/homeassistant/components/airnow/__init__.py index 8fe2291d3b3..d7caaa120fc 100644 --- a/homeassistant/components/airnow/__init__.py +++ b/homeassistant/components/airnow/__init__.py @@ -11,6 +11,7 @@ from homeassistant.const import ( Platform, ) from homeassistant.core import HomeAssistant +from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers.aiohttp_client import async_get_clientsession from .const import DOMAIN @@ -50,6 +51,20 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) + # Clean up unused device entries with no entities + device_registry = dr.async_get(hass) + entity_registry = er.async_get(hass) + + device_entries = dr.async_entries_for_config_entry( + device_registry, config_entry_id=entry.entry_id + ) + for dev in device_entries: + dev_entities = er.async_entries_for_device( + entity_registry, dev.id, include_disabled_entities=True + ) + if not dev_entities: + device_registry.async_remove_device(dev.id) + return True diff --git a/homeassistant/components/airnow/sensor.py b/homeassistant/components/airnow/sensor.py index f9d35d50810..c6ab27a8497 100644 --- a/homeassistant/components/airnow/sensor.py +++ b/homeassistant/components/airnow/sensor.py @@ -148,13 +148,14 @@ class AirNowSensor(CoordinatorEntity[AirNowDataUpdateCoordinator], SensorEntity) ) -> None: """Initialize.""" super().__init__(coordinator) + + _device_id = f"{coordinator.latitude}-{coordinator.longitude}" + self.entity_description = description - self._attr_unique_id = ( - f"{coordinator.latitude}-{coordinator.longitude}-{description.key.lower()}" - ) + self._attr_unique_id = f"{_device_id}-{description.key.lower()}" self._attr_device_info = DeviceInfo( entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, self._attr_unique_id)}, + identifiers={(DOMAIN, _device_id)}, manufacturer=DEFAULT_NAME, name=DEFAULT_NAME, )