From 7b42dc5c35dd6350642df877f0c22dbd0e178faa Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:44:18 +0100 Subject: [PATCH] Explicitly pass in the config_entry in risco coordinator (#137972) explicitly pass in the config_entry in coordinator --- homeassistant/components/risco/__init__.py | 9 ++--- homeassistant/components/risco/coordinator.py | 34 ++++++++++++++----- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/risco/__init__.py b/homeassistant/components/risco/__init__.py index 7255c724e3f..56c7a509cca 100644 --- a/homeassistant/components/risco/__init__.py +++ b/homeassistant/components/risco/__init__.py @@ -16,7 +16,6 @@ from homeassistant.const import ( CONF_PASSWORD, CONF_PIN, CONF_PORT, - CONF_SCAN_INTERVAL, CONF_TYPE, CONF_USERNAME, Platform, @@ -30,7 +29,6 @@ from .const import ( CONF_CONCURRENCY, DATA_COORDINATOR, DEFAULT_CONCURRENCY, - DEFAULT_SCAN_INTERVAL, DOMAIN, EVENTS_COORDINATOR, SYSTEM_UPDATE_SIGNAL, @@ -144,12 +142,9 @@ async def _async_setup_cloud_entry(hass: HomeAssistant, entry: ConfigEntry) -> b except UnauthorizedError as error: raise ConfigEntryAuthFailed from error - scan_interval = entry.options.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) - coordinator = RiscoDataUpdateCoordinator(hass, risco, scan_interval) + coordinator = RiscoDataUpdateCoordinator(hass, entry, risco) await coordinator.async_config_entry_first_refresh() - events_coordinator = RiscoEventsDataUpdateCoordinator( - hass, risco, entry.entry_id, 60 - ) + events_coordinator = RiscoEventsDataUpdateCoordinator(hass, entry, risco) entry.async_on_unload(entry.add_update_listener(_update_listener)) diff --git a/homeassistant/components/risco/coordinator.py b/homeassistant/components/risco/coordinator.py index 8430b6a6172..e7140eb9616 100644 --- a/homeassistant/components/risco/coordinator.py +++ b/homeassistant/components/risco/coordinator.py @@ -10,11 +10,13 @@ from pyrisco import CannotConnectError, OperationError, RiscoCloud, Unauthorized from pyrisco.cloud.alarm import Alarm from pyrisco.cloud.event import Event +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_SCAN_INTERVAL from homeassistant.core import HomeAssistant from homeassistant.helpers.storage import Store from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed -from .const import DOMAIN +from .const import DEFAULT_SCAN_INTERVAL, DOMAIN LAST_EVENT_STORAGE_VERSION = 1 LAST_EVENT_TIMESTAMP_KEY = "last_event_timestamp" @@ -24,17 +26,26 @@ _LOGGER = logging.getLogger(__name__) class RiscoDataUpdateCoordinator(DataUpdateCoordinator[Alarm]): """Class to manage fetching risco data.""" + config_entry: ConfigEntry + def __init__( - self, hass: HomeAssistant, risco: RiscoCloud, scan_interval: int + self, + hass: HomeAssistant, + config_entry: ConfigEntry, + risco: RiscoCloud, ) -> None: """Initialize global risco data updater.""" self.risco = risco - interval = timedelta(seconds=scan_interval) super().__init__( hass, _LOGGER, + config_entry=config_entry, name=DOMAIN, - update_interval=interval, + update_interval=timedelta( + seconds=config_entry.options.get( + CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL + ) + ), ) async def _async_update_data(self) -> Alarm: @@ -48,20 +59,27 @@ class RiscoDataUpdateCoordinator(DataUpdateCoordinator[Alarm]): class RiscoEventsDataUpdateCoordinator(DataUpdateCoordinator[list[Event]]): """Class to manage fetching risco data.""" + config_entry: ConfigEntry + def __init__( - self, hass: HomeAssistant, risco: RiscoCloud, eid: str, scan_interval: int + self, + hass: HomeAssistant, + config_entry: ConfigEntry, + risco: RiscoCloud, ) -> None: """Initialize global risco data updater.""" self.risco = risco self._store = Store[dict[str, Any]]( - hass, LAST_EVENT_STORAGE_VERSION, f"risco_{eid}_last_event_timestamp" + hass, + LAST_EVENT_STORAGE_VERSION, + f"risco_{config_entry.entry_id}_last_event_timestamp", ) - interval = timedelta(seconds=scan_interval) super().__init__( hass, _LOGGER, + config_entry=config_entry, name=f"{DOMAIN}_events", - update_interval=interval, + update_interval=timedelta(seconds=60), ) async def _async_update_data(self) -> list[Event]: