From 2cc31d6a5bbb4c869fedf1f56d53d18c32dee30a Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 30 Apr 2023 17:07:55 +0200 Subject: [PATCH] Extract Rituals Perfume Genie DataUpdateCoordinator into module (#92284) --- .../rituals_perfume_genie/__init__.py | 29 ++----------------- .../rituals_perfume_genie/binary_sensor.py | 2 +- .../components/rituals_perfume_genie/const.py | 5 ++++ .../rituals_perfume_genie/coordinator.py | 29 +++++++++++++++++++ .../rituals_perfume_genie/entity.py | 2 +- .../rituals_perfume_genie/number.py | 2 +- .../rituals_perfume_genie/select.py | 2 +- .../rituals_perfume_genie/sensor.py | 2 +- .../rituals_perfume_genie/switch.py | 2 +- 9 files changed, 42 insertions(+), 33 deletions(-) create mode 100644 homeassistant/components/rituals_perfume_genie/coordinator.py diff --git a/homeassistant/components/rituals_perfume_genie/__init__.py b/homeassistant/components/rituals_perfume_genie/__init__.py index 18fd30754e2..7f079c003fc 100644 --- a/homeassistant/components/rituals_perfume_genie/__init__.py +++ b/homeassistant/components/rituals_perfume_genie/__init__.py @@ -1,18 +1,15 @@ """The Rituals Perfume Genie integration.""" -from datetime import timedelta -import logging - import aiohttp -from pyrituals import Account, Diffuser +from pyrituals import Account from homeassistant.config_entries import ConfigEntry from homeassistant.const import 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 ACCOUNT_HASH, COORDINATORS, DEVICES, DOMAIN +from .coordinator import RitualsDataUpdateCoordinator PLATFORMS = [ Platform.BINARY_SENSOR, @@ -22,10 +19,6 @@ PLATFORMS = [ Platform.SWITCH, ] -_LOGGER = logging.getLogger(__name__) - -UPDATE_INTERVAL = timedelta(minutes=2) - async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Rituals Perfume Genie from a config entry.""" @@ -63,21 +56,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.data[DOMAIN].pop(entry.entry_id) return unload_ok - - -class RitualsDataUpdateCoordinator(DataUpdateCoordinator[None]): - """Class to manage fetching Rituals Perfume Genie device data from single endpoint.""" - - def __init__(self, hass: HomeAssistant, device: Diffuser) -> None: - """Initialize global Rituals Perfume Genie data updater.""" - self._device = device - super().__init__( - hass, - _LOGGER, - name=f"{DOMAIN}-{device.hublot}", - update_interval=UPDATE_INTERVAL, - ) - - async def _async_update_data(self) -> None: - """Fetch data from Rituals.""" - await self._device.update_data() diff --git a/homeassistant/components/rituals_perfume_genie/binary_sensor.py b/homeassistant/components/rituals_perfume_genie/binary_sensor.py index 5e81ecb5cae..05eac9377ab 100644 --- a/homeassistant/components/rituals_perfume_genie/binary_sensor.py +++ b/homeassistant/components/rituals_perfume_genie/binary_sensor.py @@ -12,8 +12,8 @@ from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RitualsDataUpdateCoordinator from .const import COORDINATORS, DEVICES, DOMAIN +from .coordinator import RitualsDataUpdateCoordinator from .entity import DiffuserEntity CHARGING_SUFFIX = " Battery Charging" diff --git a/homeassistant/components/rituals_perfume_genie/const.py b/homeassistant/components/rituals_perfume_genie/const.py index 21c570ffb93..05c03419620 100644 --- a/homeassistant/components/rituals_perfume_genie/const.py +++ b/homeassistant/components/rituals_perfume_genie/const.py @@ -1,7 +1,12 @@ """Constants for the Rituals Perfume Genie integration.""" + +from datetime import timedelta + DOMAIN = "rituals_perfume_genie" ACCOUNT_HASH = "account_hash" COORDINATORS = "coordinators" DEVICES = "devices" + +UPDATE_INTERVAL = timedelta(minutes=2) diff --git a/homeassistant/components/rituals_perfume_genie/coordinator.py b/homeassistant/components/rituals_perfume_genie/coordinator.py new file mode 100644 index 00000000000..ac6c252f4d2 --- /dev/null +++ b/homeassistant/components/rituals_perfume_genie/coordinator.py @@ -0,0 +1,29 @@ +"""The Rituals Perfume Genie data update coordinator.""" +import logging + +from pyrituals import Diffuser + +from homeassistant.core import HomeAssistant +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator + +from .const import DOMAIN, UPDATE_INTERVAL + +_LOGGER = logging.getLogger(__name__) + + +class RitualsDataUpdateCoordinator(DataUpdateCoordinator[None]): + """Class to manage fetching Rituals Perfume Genie device data from single endpoint.""" + + def __init__(self, hass: HomeAssistant, device: Diffuser) -> None: + """Initialize global Rituals Perfume Genie data updater.""" + self._device = device + super().__init__( + hass, + _LOGGER, + name=f"{DOMAIN}-{device.hublot}", + update_interval=UPDATE_INTERVAL, + ) + + async def _async_update_data(self) -> None: + """Fetch data from Rituals.""" + await self._device.update_data() diff --git a/homeassistant/components/rituals_perfume_genie/entity.py b/homeassistant/components/rituals_perfume_genie/entity.py index e3bf1ef4e63..fb049842c07 100644 --- a/homeassistant/components/rituals_perfume_genie/entity.py +++ b/homeassistant/components/rituals_perfume_genie/entity.py @@ -6,8 +6,8 @@ from pyrituals import Diffuser from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity -from . import RitualsDataUpdateCoordinator from .const import DOMAIN +from .coordinator import RitualsDataUpdateCoordinator MANUFACTURER = "Rituals Cosmetics" MODEL = "The Perfume Genie" diff --git a/homeassistant/components/rituals_perfume_genie/number.py b/homeassistant/components/rituals_perfume_genie/number.py index 8fe0a663e37..232621ff576 100644 --- a/homeassistant/components/rituals_perfume_genie/number.py +++ b/homeassistant/components/rituals_perfume_genie/number.py @@ -8,8 +8,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RitualsDataUpdateCoordinator from .const import COORDINATORS, DEVICES, DOMAIN +from .coordinator import RitualsDataUpdateCoordinator from .entity import DiffuserEntity MIN_PERFUME_AMOUNT = 1 diff --git a/homeassistant/components/rituals_perfume_genie/select.py b/homeassistant/components/rituals_perfume_genie/select.py index 918ec7022c4..b7119e6d947 100644 --- a/homeassistant/components/rituals_perfume_genie/select.py +++ b/homeassistant/components/rituals_perfume_genie/select.py @@ -9,8 +9,8 @@ from homeassistant.const import AREA_SQUARE_METERS, EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RitualsDataUpdateCoordinator from .const import COORDINATORS, DEVICES, DOMAIN +from .coordinator import RitualsDataUpdateCoordinator from .entity import DiffuserEntity ROOM_SIZE_SUFFIX = " Room Size" diff --git a/homeassistant/components/rituals_perfume_genie/sensor.py b/homeassistant/components/rituals_perfume_genie/sensor.py index 04102e8abcc..fa6f75b288f 100644 --- a/homeassistant/components/rituals_perfume_genie/sensor.py +++ b/homeassistant/components/rituals_perfume_genie/sensor.py @@ -9,8 +9,8 @@ from homeassistant.const import PERCENTAGE, EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RitualsDataUpdateCoordinator from .const import COORDINATORS, DEVICES, DOMAIN +from .coordinator import RitualsDataUpdateCoordinator from .entity import DiffuserEntity BATTERY_SUFFIX = " Battery" diff --git a/homeassistant/components/rituals_perfume_genie/switch.py b/homeassistant/components/rituals_perfume_genie/switch.py index a213db4e5db..3c43a960a2d 100644 --- a/homeassistant/components/rituals_perfume_genie/switch.py +++ b/homeassistant/components/rituals_perfume_genie/switch.py @@ -10,8 +10,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RitualsDataUpdateCoordinator from .const import COORDINATORS, DEVICES, DOMAIN +from .coordinator import RitualsDataUpdateCoordinator from .entity import DiffuserEntity