diff --git a/homeassistant/components/ondilo_ico/__init__.py b/homeassistant/components/ondilo_ico/__init__.py index 28bb6719c7f..12a856d7360 100644 --- a/homeassistant/components/ondilo_ico/__init__.py +++ b/homeassistant/components/ondilo_ico/__init__.py @@ -4,7 +4,6 @@ from homeassistant.components.application_credentials import ( ClientCredential, async_import_client_credential, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady @@ -17,7 +16,7 @@ from homeassistant.helpers.typing import ConfigType from .api import OndiloClient from .const import DOMAIN, OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET -from .coordinator import OndiloIcoPoolsCoordinator +from .coordinator import OndiloIcoConfigEntry, OndiloIcoPoolsCoordinator CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN) PLATFORMS = [Platform.SENSOR] @@ -35,7 +34,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: return True -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: OndiloIcoConfigEntry) -> bool: """Set up Ondilo ICO from a config entry.""" try: implementation = await async_get_config_entry_implementation(hass, entry) @@ -51,17 +50,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator + entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: OndiloIcoConfigEntry) -> bool: """Unload a config entry.""" - unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) - if unload_ok: - hass.data[DOMAIN].pop(entry.entry_id) - - return unload_ok + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) diff --git a/homeassistant/components/ondilo_ico/coordinator.py b/homeassistant/components/ondilo_ico/coordinator.py index 7545f6d61e0..3fbe82a536d 100644 --- a/homeassistant/components/ondilo_ico/coordinator.py +++ b/homeassistant/components/ondilo_ico/coordinator.py @@ -16,8 +16,8 @@ from homeassistant.helpers import device_registry as dr from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from homeassistant.util import dt as dt_util -from . import DOMAIN from .api import OndiloClient +from .const import DOMAIN _LOGGER = logging.getLogger(__name__) @@ -41,13 +41,16 @@ class OndiloIcoMeasurementData: sensors: dict[str, Any] +type OndiloIcoConfigEntry = ConfigEntry[OndiloIcoPoolsCoordinator] + + class OndiloIcoPoolsCoordinator(DataUpdateCoordinator[dict[str, OndiloIcoPoolData]]): """Fetch Ondilo ICO pools data from API.""" - config_entry: ConfigEntry + config_entry: OndiloIcoConfigEntry def __init__( - self, hass: HomeAssistant, config_entry: ConfigEntry, api: OndiloClient + self, hass: HomeAssistant, config_entry: OndiloIcoConfigEntry, api: OndiloClient ) -> None: """Initialize.""" super().__init__( diff --git a/homeassistant/components/ondilo_ico/sensor.py b/homeassistant/components/ondilo_ico/sensor.py index 42e65bd0db2..61080d2577b 100644 --- a/homeassistant/components/ondilo_ico/sensor.py +++ b/homeassistant/components/ondilo_ico/sensor.py @@ -8,7 +8,6 @@ from homeassistant.components.sensor import ( SensorEntityDescription, SensorStateClass, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( CONCENTRATION_PARTS_PER_MILLION, PERCENTAGE, @@ -24,6 +23,7 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN from .coordinator import ( + OndiloIcoConfigEntry, OndiloIcoMeasuresCoordinator, OndiloIcoPoolData, OndiloIcoPoolsCoordinator, @@ -78,11 +78,11 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = ( async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: OndiloIcoConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up the Ondilo ICO sensors.""" - pools_coordinator: OndiloIcoPoolsCoordinator = hass.data[DOMAIN][entry.entry_id] + pools_coordinator = entry.runtime_data known_entities: set[str] = set() async_add_entities(get_new_entities(pools_coordinator, known_entities))