Use runtime data in Meater (#146961)

This commit is contained in:
Joost Lekkerkerker 2025-06-16 17:18:21 +02:00 committed by GitHub
parent 4add783108
commit dffaf49eca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 16 deletions

View File

@ -1,33 +1,28 @@
"""The Meater Temperature Probe integration.""" """The Meater Temperature Probe integration."""
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .const import DOMAIN from .const import DOMAIN
from .coordinator import MeaterCoordinator from .coordinator import MeaterConfigEntry, MeaterCoordinator
PLATFORMS = [Platform.SENSOR] PLATFORMS = [Platform.SENSOR]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: MeaterConfigEntry) -> bool:
"""Set up Meater Temperature Probe from a config entry.""" """Set up Meater Temperature Probe from a config entry."""
coordinator = MeaterCoordinator(hass, entry) coordinator = MeaterCoordinator(hass, entry)
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {}) hass.data.setdefault(DOMAIN, {}).setdefault("known_probes", set())
hass.data[DOMAIN].setdefault("known_probes", set())
hass.data[DOMAIN][entry.entry_id] = coordinator entry.runtime_data = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: MeaterConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@ -21,16 +21,18 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
type MeaterConfigEntry = ConfigEntry[MeaterCoordinator]
class MeaterCoordinator(DataUpdateCoordinator[dict[str, MeaterProbe]]): class MeaterCoordinator(DataUpdateCoordinator[dict[str, MeaterProbe]]):
"""Meater Coordinator.""" """Meater Coordinator."""
config_entry: ConfigEntry config_entry: MeaterConfigEntry
def __init__( def __init__(
self, self,
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: MeaterConfigEntry,
) -> None: ) -> None:
"""Initialize the Meater Coordinator.""" """Initialize the Meater Coordinator."""
super().__init__( super().__init__(

View File

@ -14,7 +14,6 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import UnitOfTemperature from homeassistant.const import UnitOfTemperature
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.device_registry import DeviceInfo
@ -24,6 +23,7 @@ from homeassistant.util import dt as dt_util
from . import MeaterCoordinator from . import MeaterCoordinator
from .const import DOMAIN from .const import DOMAIN
from .coordinator import MeaterConfigEntry
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
@ -135,11 +135,11 @@ SENSOR_TYPES = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: MeaterConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback, async_add_entities: AddConfigEntryEntitiesCallback,
) -> None: ) -> None:
"""Set up the entry.""" """Set up the entry."""
coordinator: MeaterCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
@callback @callback
def async_update_data(): def async_update_data():