From eab428f0e281e1b7829185a000d4926ca7d4ce2b Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Tue, 26 Sep 2023 23:28:25 +0200 Subject: [PATCH] Move poolsense coordinator to its own file (#100964) --- .coveragerc | 1 + .../components/poolsense/__init__.py | 38 +--------------- .../components/poolsense/coordinator.py | 43 +++++++++++++++++++ 3 files changed, 46 insertions(+), 36 deletions(-) create mode 100644 homeassistant/components/poolsense/coordinator.py diff --git a/.coveragerc b/.coveragerc index 6d625e73939..fe53d976bf6 100644 --- a/.coveragerc +++ b/.coveragerc @@ -978,6 +978,7 @@ omit = homeassistant/components/point/sensor.py homeassistant/components/poolsense/__init__.py homeassistant/components/poolsense/binary_sensor.py + homeassistant/components/poolsense/coordinator.py homeassistant/components/poolsense/sensor.py homeassistant/components/powerwall/__init__.py homeassistant/components/progettihwsw/__init__.py diff --git a/homeassistant/components/poolsense/__init__.py b/homeassistant/components/poolsense/__init__.py index 56b7eaaac77..1eccc8b455b 100644 --- a/homeassistant/components/poolsense/__init__.py +++ b/homeassistant/components/poolsense/__init__.py @@ -1,23 +1,17 @@ """The PoolSense integration.""" -import asyncio -from datetime import timedelta import logging from poolsense import PoolSense -from poolsense.exceptions import PoolSenseError from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, Platform from homeassistant.core import HomeAssistant from homeassistant.helpers import aiohttp_client from homeassistant.helpers.entity import EntityDescription -from homeassistant.helpers.update_coordinator import ( - CoordinatorEntity, - DataUpdateCoordinator, - UpdateFailed, -) +from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import ATTRIBUTION, DOMAIN +from .coordinator import PoolSenseDataUpdateCoordinator PLATFORMS = [Platform.BINARY_SENSOR, Platform.SENSOR] @@ -70,31 +64,3 @@ class PoolSenseEntity(CoordinatorEntity): self.entity_description = description self._attr_name = f"PoolSense {description.name}" self._attr_unique_id = f"{email}-{description.key}" - - -class PoolSenseDataUpdateCoordinator(DataUpdateCoordinator): - """Define an object to hold PoolSense data.""" - - def __init__(self, hass, entry): - """Initialize.""" - self.poolsense = PoolSense( - aiohttp_client.async_get_clientsession(hass), - entry.data[CONF_EMAIL], - entry.data[CONF_PASSWORD], - ) - self.hass = hass - self.entry = entry - - super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=timedelta(hours=1)) - - async def _async_update_data(self): - """Update data via library.""" - data = {} - async with asyncio.timeout(10): - try: - data = await self.poolsense.get_poolsense_data() - except PoolSenseError as error: - _LOGGER.error("PoolSense query did not complete") - raise UpdateFailed(error) from error - - return data diff --git a/homeassistant/components/poolsense/coordinator.py b/homeassistant/components/poolsense/coordinator.py new file mode 100644 index 00000000000..3a5089b5022 --- /dev/null +++ b/homeassistant/components/poolsense/coordinator.py @@ -0,0 +1,43 @@ +"""DataUpdateCoordinator for poolsense integration.""" +import asyncio +from datetime import timedelta +import logging + +from poolsense import PoolSense +from poolsense.exceptions import PoolSenseError + +from homeassistant.const import CONF_EMAIL, CONF_PASSWORD +from homeassistant.helpers import aiohttp_client +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed + +from .const import DOMAIN + +_LOGGER = logging.getLogger(__name__) + + +class PoolSenseDataUpdateCoordinator(DataUpdateCoordinator): + """Define an object to hold PoolSense data.""" + + def __init__(self, hass, entry): + """Initialize.""" + self.poolsense = PoolSense( + aiohttp_client.async_get_clientsession(hass), + entry.data[CONF_EMAIL], + entry.data[CONF_PASSWORD], + ) + self.hass = hass + self.entry = entry + + super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=timedelta(hours=1)) + + async def _async_update_data(self): + """Update data via library.""" + data = {} + async with asyncio.timeout(10): + try: + data = await self.poolsense.get_poolsense_data() + except PoolSenseError as error: + _LOGGER.error("PoolSense query did not complete") + raise UpdateFailed(error) from error + + return data