From da6c6c5201446abfc35ce0150d595525c42ca21d Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 19 May 2025 10:58:34 +0200 Subject: [PATCH] Use runtime_data in ialarm (#145178) --- homeassistant/components/ialarm/__init__.py | 19 +++++-------------- .../components/ialarm/alarm_control_panel.py | 12 ++++-------- homeassistant/components/ialarm/const.py | 2 -- .../components/ialarm/coordinator.py | 10 ++++++++-- 4 files changed, 17 insertions(+), 26 deletions(-) diff --git a/homeassistant/components/ialarm/__init__.py b/homeassistant/components/ialarm/__init__.py index 2484a46f906..1604b37b967 100644 --- a/homeassistant/components/ialarm/__init__.py +++ b/homeassistant/components/ialarm/__init__.py @@ -6,18 +6,16 @@ import asyncio from pyialarm import IAlarm -from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST, CONF_PORT, Platform from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady -from .const import DATA_COORDINATOR, DOMAIN -from .coordinator import IAlarmDataUpdateCoordinator +from .coordinator import IAlarmConfigEntry, IAlarmDataUpdateCoordinator PLATFORMS = [Platform.ALARM_CONTROL_PANEL] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: IAlarmConfigEntry) -> bool: """Set up iAlarm config.""" host: str = entry.data[CONF_HOST] port: int = entry.data[CONF_PORT] @@ -32,20 +30,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: coordinator = IAlarmDataUpdateCoordinator(hass, entry, ialarm, mac) await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {}) - - hass.data[DOMAIN][entry.entry_id] = { - DATA_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: IAlarmConfigEntry) -> bool: """Unload iAlarm config.""" - 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/ialarm/alarm_control_panel.py b/homeassistant/components/ialarm/alarm_control_panel.py index e203f892c35..b2de9b3fefc 100644 --- a/homeassistant/components/ialarm/alarm_control_panel.py +++ b/homeassistant/components/ialarm/alarm_control_panel.py @@ -7,26 +7,22 @@ from homeassistant.components.alarm_control_panel import ( AlarmControlPanelEntityFeature, AlarmControlPanelState, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import DATA_COORDINATOR, DOMAIN -from .coordinator import IAlarmDataUpdateCoordinator +from .const import DOMAIN +from .coordinator import IAlarmConfigEntry, IAlarmDataUpdateCoordinator async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: IAlarmConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up a iAlarm alarm control panel based on a config entry.""" - coordinator: IAlarmDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id][ - DATA_COORDINATOR - ] - async_add_entities([IAlarmPanel(coordinator)], False) + async_add_entities([IAlarmPanel(entry.runtime_data)], False) class IAlarmPanel( diff --git a/homeassistant/components/ialarm/const.py b/homeassistant/components/ialarm/const.py index 1b8074c34f0..01ce47e002a 100644 --- a/homeassistant/components/ialarm/const.py +++ b/homeassistant/components/ialarm/const.py @@ -4,8 +4,6 @@ from pyialarm import IAlarm from homeassistant.components.alarm_control_panel import AlarmControlPanelState -DATA_COORDINATOR = "ialarm" - DEFAULT_PORT = 18034 DOMAIN = "ialarm" diff --git a/homeassistant/components/ialarm/coordinator.py b/homeassistant/components/ialarm/coordinator.py index 61e87c36796..546e0b6b714 100644 --- a/homeassistant/components/ialarm/coordinator.py +++ b/homeassistant/components/ialarm/coordinator.py @@ -19,14 +19,20 @@ from .const import DOMAIN, IALARM_TO_HASS _LOGGER = logging.getLogger(__name__) +type IAlarmConfigEntry = ConfigEntry[IAlarmDataUpdateCoordinator] + class IAlarmDataUpdateCoordinator(DataUpdateCoordinator[None]): """Class to manage fetching iAlarm data.""" - config_entry: ConfigEntry + config_entry: IAlarmConfigEntry def __init__( - self, hass: HomeAssistant, config_entry: ConfigEntry, ialarm: IAlarm, mac: str + self, + hass: HomeAssistant, + config_entry: IAlarmConfigEntry, + ialarm: IAlarm, + mac: str, ) -> None: """Initialize global iAlarm data updater.""" self.ialarm = ialarm