From c8f3999c3c2814a8e9effee3aeb9091d29c74046 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Thu, 17 Sep 2026 13:05:17 +0200 Subject: [PATCH] Simplify Airly data update coordinator (#181938) --- homeassistant/components/airly/__init__.py | 6 +--- homeassistant/components/airly/coordinator.py | 29 +++++++++---------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/airly/__init__.py b/homeassistant/components/airly/__init__.py index 1c815668b6a1..aeff456b1be2 100644 --- a/homeassistant/components/airly/__init__.py +++ b/homeassistant/components/airly/__init__.py @@ -1,6 +1,5 @@ """The Airly integration.""" -from datetime import timedelta import logging from homeassistant.components.air_quality import DOMAIN as AIR_QUALITY_DOMAIN @@ -9,7 +8,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers.aiohttp_client import async_get_clientsession -from .const import CONF_USE_NEAREST, DOMAIN, MIN_UPDATE_INTERVAL +from .const import CONF_USE_NEAREST, DOMAIN from .coordinator import AirlyConfigEntry, AirlyDataUpdateCoordinator PLATFORMS = [Platform.SENSOR] @@ -55,8 +54,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirlyConfigEntry) -> boo websession = async_get_clientsession(hass) - update_interval = timedelta(minutes=MIN_UPDATE_INTERVAL) - coordinator = AirlyDataUpdateCoordinator( hass, entry, @@ -64,7 +61,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirlyConfigEntry) -> boo api_key, latitude, longitude, - update_interval, use_nearest, ) await coordinator.async_config_entry_first_refresh() diff --git a/homeassistant/components/airly/coordinator.py b/homeassistant/components/airly/coordinator.py index 2447096e7a41..cac9c25cb234 100644 --- a/homeassistant/components/airly/coordinator.py +++ b/homeassistant/components/airly/coordinator.py @@ -73,7 +73,6 @@ class AirlyDataUpdateCoordinator(DataUpdateCoordinator[dict[str, str | float | i api_key: str, latitude: float, longitude: float, - update_interval: timedelta, use_nearest: bool, ) -> None: """Initialize.""" @@ -82,31 +81,31 @@ class AirlyDataUpdateCoordinator(DataUpdateCoordinator[dict[str, str | float | i # Currently, Airly only supports Polish and English language = "pl" if hass.config.language == "pl" else "en" self.airly = Airly(api_key, session, language=language) - self.use_nearest = use_nearest + + if use_nearest: + self.measurements = self.airly.create_measurements_session_nearest( + latitude, longitude, max_distance_km=5 + ) + else: + self.measurements = self.airly.create_measurements_session_point( + latitude, longitude + ) super().__init__( hass, _LOGGER, config_entry=config_entry, name=DOMAIN, - update_interval=update_interval, + update_interval=timedelta(minutes=MIN_UPDATE_INTERVAL), ) @override async def _async_update_data(self) -> dict[str, str | float | int]: """Update data via library.""" data: dict[str, str | float | int] = {} - if self.use_nearest: - measurements = self.airly.create_measurements_session_nearest( - self.latitude, self.longitude, max_distance_km=5 - ) - else: - measurements = self.airly.create_measurements_session_point( - self.latitude, self.longitude - ) try: async with timeout(DEFAULT_TIMEOUT): - await measurements.update() + await self.measurements.update() except (AirlyError, ClientConnectorError, TimeoutError) as error: raise UpdateFailed( translation_domain=DOMAIN, @@ -131,9 +130,9 @@ class AirlyDataUpdateCoordinator(DataUpdateCoordinator[dict[str, str | float | i self.airly.requests_remaining, ) - values = measurements.current["values"] - index = measurements.current["indexes"][0] - standards = measurements.current["standards"] + values = self.measurements.current["values"] + index = self.measurements.current["indexes"][0] + standards = self.measurements.current["standards"] if index["description"] == NO_AIRLY_SENSORS: raise UpdateFailed(