diff --git a/.coveragerc b/.coveragerc index a5397971d1f..4f3e82042f6 100644 --- a/.coveragerc +++ b/.coveragerc @@ -82,6 +82,7 @@ omit = homeassistant/components/arwn/sensor.py homeassistant/components/aseko_pool_live/__init__.py homeassistant/components/aseko_pool_live/binary_sensor.py + homeassistant/components/aseko_pool_live/coordinator.py homeassistant/components/aseko_pool_live/entity.py homeassistant/components/aseko_pool_live/sensor.py homeassistant/components/asterisk_cdr/mailbox.py diff --git a/homeassistant/components/aseko_pool_live/__init__.py b/homeassistant/components/aseko_pool_live/__init__.py index 70a66251bdc..b09682fcaf9 100644 --- a/homeassistant/components/aseko_pool_live/__init__.py +++ b/homeassistant/components/aseko_pool_live/__init__.py @@ -1,19 +1,18 @@ """The Aseko Pool Live integration.""" from __future__ import annotations -from datetime import timedelta import logging -from aioaseko import APIUnavailable, MobileAccount, Unit, Variable +from aioaseko import APIUnavailable, MobileAccount from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_ACCESS_TOKEN, Platform from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.helpers.aiohttp_client import async_get_clientsession -from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from .const import DOMAIN +from .coordinator import AsekoDataUpdateCoordinator _LOGGER = logging.getLogger(__name__) @@ -49,28 +48,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.data[DOMAIN].pop(entry.entry_id) return unload_ok - - -class AsekoDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Variable]]): - """Class to manage fetching Aseko unit data from single endpoint.""" - - def __init__(self, hass: HomeAssistant, unit: Unit) -> None: - """Initialize global Aseko unit data updater.""" - self._unit = unit - - if self._unit.name: - name = self._unit.name - else: - name = f"{self._unit.type}-{self._unit.serial_number}" - - super().__init__( - hass, - _LOGGER, - name=name, - update_interval=timedelta(minutes=2), - ) - - async def _async_update_data(self) -> dict[str, Variable]: - """Fetch unit data.""" - await self._unit.get_state() - return {variable.type: variable for variable in self._unit.variables} diff --git a/homeassistant/components/aseko_pool_live/binary_sensor.py b/homeassistant/components/aseko_pool_live/binary_sensor.py index f67ea58bfc4..8178e243279 100644 --- a/homeassistant/components/aseko_pool_live/binary_sensor.py +++ b/homeassistant/components/aseko_pool_live/binary_sensor.py @@ -15,8 +15,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import AsekoDataUpdateCoordinator from .const import DOMAIN +from .coordinator import AsekoDataUpdateCoordinator from .entity import AsekoEntity @@ -31,7 +31,7 @@ class AsekoBinarySensorDescriptionMixin: class AsekoBinarySensorEntityDescription( BinarySensorEntityDescription, AsekoBinarySensorDescriptionMixin ): - """Describes a Aseko binary sensor entity.""" + """Describes an Aseko binary sensor entity.""" UNIT_BINARY_SENSORS: tuple[AsekoBinarySensorEntityDescription, ...] = ( diff --git a/homeassistant/components/aseko_pool_live/coordinator.py b/homeassistant/components/aseko_pool_live/coordinator.py new file mode 100644 index 00000000000..383ab7116b6 --- /dev/null +++ b/homeassistant/components/aseko_pool_live/coordinator.py @@ -0,0 +1,37 @@ +"""The Aseko Pool Live integration.""" +from __future__ import annotations + +from datetime import timedelta +import logging + +from aioaseko import Unit, Variable + +from homeassistant.core import HomeAssistant +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator + +_LOGGER = logging.getLogger(__name__) + + +class AsekoDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Variable]]): + """Class to manage fetching Aseko unit data from single endpoint.""" + + def __init__(self, hass: HomeAssistant, unit: Unit) -> None: + """Initialize global Aseko unit data updater.""" + self._unit = unit + + if self._unit.name: + name = self._unit.name + else: + name = f"{self._unit.type}-{self._unit.serial_number}" + + super().__init__( + hass, + _LOGGER, + name=name, + update_interval=timedelta(minutes=2), + ) + + async def _async_update_data(self) -> dict[str, Variable]: + """Fetch unit data.""" + await self._unit.get_state() + return {variable.type: variable for variable in self._unit.variables} diff --git a/homeassistant/components/aseko_pool_live/entity.py b/homeassistant/components/aseko_pool_live/entity.py index 58974bcc326..9cc402e014c 100644 --- a/homeassistant/components/aseko_pool_live/entity.py +++ b/homeassistant/components/aseko_pool_live/entity.py @@ -4,8 +4,8 @@ from aioaseko import Unit from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity -from . import AsekoDataUpdateCoordinator from .const import DOMAIN +from .coordinator import AsekoDataUpdateCoordinator class AsekoEntity(CoordinatorEntity[AsekoDataUpdateCoordinator]): diff --git a/homeassistant/components/aseko_pool_live/sensor.py b/homeassistant/components/aseko_pool_live/sensor.py index 74051ef454f..09c4af31428 100644 --- a/homeassistant/components/aseko_pool_live/sensor.py +++ b/homeassistant/components/aseko_pool_live/sensor.py @@ -12,8 +12,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import AsekoDataUpdateCoordinator from .const import DOMAIN +from .coordinator import AsekoDataUpdateCoordinator from .entity import AsekoEntity @@ -36,7 +36,7 @@ async def async_setup_entry( class VariableSensorEntity(AsekoEntity, SensorEntity): """Representation of a unit variable sensor entity.""" - attr_state_class = SensorStateClass.MEASUREMENT + _attr_state_class = SensorStateClass.MEASUREMENT def __init__( self, unit: Unit, variable: Variable, coordinator: AsekoDataUpdateCoordinator