Extract Rituals Perfume Genie DataUpdateCoordinator into module (#92284)

This commit is contained in:
Franck Nijhof 2023-04-30 17:07:55 +02:00 committed by GitHub
parent b629bf37bb
commit 2cc31d6a5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 42 additions and 33 deletions

View File

@ -1,18 +1,15 @@
"""The Rituals Perfume Genie integration.""" """The Rituals Perfume Genie integration."""
from datetime import timedelta
import logging
import aiohttp import aiohttp
from pyrituals import Account, Diffuser from pyrituals import Account
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession 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 .const import ACCOUNT_HASH, COORDINATORS, DEVICES, DOMAIN
from .coordinator import RitualsDataUpdateCoordinator
PLATFORMS = [ PLATFORMS = [
Platform.BINARY_SENSOR, Platform.BINARY_SENSOR,
@ -22,10 +19,6 @@ PLATFORMS = [
Platform.SWITCH, Platform.SWITCH,
] ]
_LOGGER = logging.getLogger(__name__)
UPDATE_INTERVAL = timedelta(minutes=2)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Rituals Perfume Genie from a config entry.""" """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) hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok 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()

View File

@ -12,8 +12,8 @@ from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RitualsDataUpdateCoordinator
from .const import COORDINATORS, DEVICES, DOMAIN from .const import COORDINATORS, DEVICES, DOMAIN
from .coordinator import RitualsDataUpdateCoordinator
from .entity import DiffuserEntity from .entity import DiffuserEntity
CHARGING_SUFFIX = " Battery Charging" CHARGING_SUFFIX = " Battery Charging"

View File

@ -1,7 +1,12 @@
"""Constants for the Rituals Perfume Genie integration.""" """Constants for the Rituals Perfume Genie integration."""
from datetime import timedelta
DOMAIN = "rituals_perfume_genie" DOMAIN = "rituals_perfume_genie"
ACCOUNT_HASH = "account_hash" ACCOUNT_HASH = "account_hash"
COORDINATORS = "coordinators" COORDINATORS = "coordinators"
DEVICES = "devices" DEVICES = "devices"
UPDATE_INTERVAL = timedelta(minutes=2)

View File

@ -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()

View File

@ -6,8 +6,8 @@ from pyrituals import Diffuser
from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import RitualsDataUpdateCoordinator
from .const import DOMAIN from .const import DOMAIN
from .coordinator import RitualsDataUpdateCoordinator
MANUFACTURER = "Rituals Cosmetics" MANUFACTURER = "Rituals Cosmetics"
MODEL = "The Perfume Genie" MODEL = "The Perfume Genie"

View File

@ -8,8 +8,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RitualsDataUpdateCoordinator
from .const import COORDINATORS, DEVICES, DOMAIN from .const import COORDINATORS, DEVICES, DOMAIN
from .coordinator import RitualsDataUpdateCoordinator
from .entity import DiffuserEntity from .entity import DiffuserEntity
MIN_PERFUME_AMOUNT = 1 MIN_PERFUME_AMOUNT = 1

View File

@ -9,8 +9,8 @@ from homeassistant.const import AREA_SQUARE_METERS, EntityCategory
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RitualsDataUpdateCoordinator
from .const import COORDINATORS, DEVICES, DOMAIN from .const import COORDINATORS, DEVICES, DOMAIN
from .coordinator import RitualsDataUpdateCoordinator
from .entity import DiffuserEntity from .entity import DiffuserEntity
ROOM_SIZE_SUFFIX = " Room Size" ROOM_SIZE_SUFFIX = " Room Size"

View File

@ -9,8 +9,8 @@ from homeassistant.const import PERCENTAGE, EntityCategory
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RitualsDataUpdateCoordinator
from .const import COORDINATORS, DEVICES, DOMAIN from .const import COORDINATORS, DEVICES, DOMAIN
from .coordinator import RitualsDataUpdateCoordinator
from .entity import DiffuserEntity from .entity import DiffuserEntity
BATTERY_SUFFIX = " Battery" BATTERY_SUFFIX = " Battery"

View File

@ -10,8 +10,8 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RitualsDataUpdateCoordinator
from .const import COORDINATORS, DEVICES, DOMAIN from .const import COORDINATORS, DEVICES, DOMAIN
from .coordinator import RitualsDataUpdateCoordinator
from .entity import DiffuserEntity from .entity import DiffuserEntity