diff --git a/homeassistant/components/tami4/__init__.py b/homeassistant/components/tami4/__init__.py index 8b9a5e1a90f2..6abbf24ed707 100644 --- a/homeassistant/components/tami4/__init__.py +++ b/homeassistant/components/tami4/__init__.py @@ -4,18 +4,17 @@ from __future__ import annotations from Tami4EdgeAPI import Tami4EdgeAPI, exceptions -from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryError, ConfigEntryNotReady -from .const import API, CONF_REFRESH_TOKEN, COORDINATOR, DOMAIN -from .coordinator import Tami4EdgeCoordinator +from .const import CONF_REFRESH_TOKEN +from .coordinator import Tami4ConfigEntry, Tami4EdgeCoordinator PLATFORMS: list[Platform] = [Platform.BUTTON, Platform.SENSOR] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: Tami4ConfigEntry) -> bool: """Set up tami4 from a config entry.""" refresh_token = entry.data.get(CONF_REFRESH_TOKEN) @@ -29,19 +28,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: coordinator = Tami4EdgeCoordinator(hass, entry, api) await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = { - API: api, - COORDINATOR: 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: Tami4ConfigEntry) -> bool: """Unload a config entry.""" - if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): - 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/tami4/button.py b/homeassistant/components/tami4/button.py index a1b8db79674d..bdd3e64ea477 100644 --- a/homeassistant/components/tami4/button.py +++ b/homeassistant/components/tami4/button.py @@ -8,12 +8,11 @@ from Tami4EdgeAPI import Tami4EdgeAPI from Tami4EdgeAPI.drink import Drink from homeassistant.components.button import ButtonEntity, ButtonEntityDescription -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import EntityDescription from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import API, DOMAIN +from .coordinator import Tami4ConfigEntry from .entity import Tami4EdgeBaseEntity _LOGGER = logging.getLogger(__name__) @@ -42,12 +41,12 @@ BOIL_WATER_BUTTON = Tami4EdgeButtonEntityDescription( async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: Tami4ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Perform the setup for Tami4Edge.""" - api: Tami4EdgeAPI = hass.data[DOMAIN][entry.entry_id][API] + api = entry.runtime_data.api buttons: list[Tami4EdgeBaseEntity] = [Tami4EdgeButton(api, BOIL_WATER_BUTTON)] device = await hass.async_add_executor_job(api.get_device) diff --git a/homeassistant/components/tami4/const.py b/homeassistant/components/tami4/const.py index be737b5c9740..9717181eb4a4 100644 --- a/homeassistant/components/tami4/const.py +++ b/homeassistant/components/tami4/const.py @@ -3,5 +3,3 @@ DOMAIN = "tami4" CONF_PHONE = "phone" CONF_REFRESH_TOKEN = "refresh_token" -API = "api" -COORDINATOR = "coordinator" diff --git a/homeassistant/components/tami4/coordinator.py b/homeassistant/components/tami4/coordinator.py index f65c819b3d8a..e872d61dd374 100644 --- a/homeassistant/components/tami4/coordinator.py +++ b/homeassistant/components/tami4/coordinator.py @@ -13,6 +13,8 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda _LOGGER = logging.getLogger(__name__) +type Tami4ConfigEntry = ConfigEntry[Tami4EdgeCoordinator] + @dataclass class FlattenedWaterQuality: @@ -37,10 +39,10 @@ class FlattenedWaterQuality: class Tami4EdgeCoordinator(DataUpdateCoordinator[FlattenedWaterQuality]): """Tami4Edge water quality coordinator.""" - config_entry: ConfigEntry + config_entry: Tami4ConfigEntry def __init__( - self, hass: HomeAssistant, config_entry: ConfigEntry, api: Tami4EdgeAPI + self, hass: HomeAssistant, config_entry: Tami4ConfigEntry, api: Tami4EdgeAPI ) -> None: """Initialize the water quality coordinator.""" super().__init__( @@ -50,12 +52,12 @@ class Tami4EdgeCoordinator(DataUpdateCoordinator[FlattenedWaterQuality]): name="Tami4Edge water quality coordinator", update_interval=timedelta(minutes=60), ) - self._api = api + self.api = api async def _async_update_data(self) -> FlattenedWaterQuality: """Fetch data from the API endpoint.""" try: - device = await self.hass.async_add_executor_job(self._api.get_device) + device = await self.hass.async_add_executor_job(self.api.get_device) return FlattenedWaterQuality(device.water_quality) except exceptions.APIRequestFailedException as ex: diff --git a/homeassistant/components/tami4/sensor.py b/homeassistant/components/tami4/sensor.py index 2bfd3079c19a..c87694e31875 100644 --- a/homeassistant/components/tami4/sensor.py +++ b/homeassistant/components/tami4/sensor.py @@ -2,22 +2,18 @@ import logging -from Tami4EdgeAPI import Tami4EdgeAPI - from homeassistant.components.sensor import ( SensorDeviceClass, SensorEntity, SensorEntityDescription, SensorStateClass, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfVolume from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import API, COORDINATOR, DOMAIN -from .coordinator import Tami4EdgeCoordinator +from .coordinator import Tami4ConfigEntry, Tami4EdgeCoordinator from .entity import Tami4EdgeBaseEntity _LOGGER = logging.getLogger(__name__) @@ -53,18 +49,15 @@ ENTITY_DESCRIPTIONS = [ async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: Tami4ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Perform the setup for Tami4Edge.""" - data = hass.data[DOMAIN][entry.entry_id] - api: Tami4EdgeAPI = data[API] - coordinator: Tami4EdgeCoordinator = data[COORDINATOR] + coordinator = entry.runtime_data async_add_entities( Tami4EdgeSensorEntity( coordinator=coordinator, - api=api, entity_description=entity_description, ) for entity_description in ENTITY_DESCRIPTIONS @@ -81,11 +74,10 @@ class Tami4EdgeSensorEntity( def __init__( self, coordinator: Tami4EdgeCoordinator, - api: Tami4EdgeAPI, entity_description: SensorEntityDescription, ) -> None: """Initialize the Tami4Edge sensor entity.""" - Tami4EdgeBaseEntity.__init__(self, api, entity_description) + Tami4EdgeBaseEntity.__init__(self, coordinator.api, entity_description) CoordinatorEntity.__init__(self, coordinator) self._update_attr()