Explicitly pass in the config_entry in flipr coordinator (#137818)

explicitly pass in the config_entry in coordinator
This commit is contained in:
Michael 2025-02-08 15:33:10 +01:00 committed by GitHub
parent d97ef67620
commit c9ffeb8007
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 31 additions and 21 deletions

View File

@ -1,7 +1,6 @@
"""The Flipr integration.""" """The Flipr integration."""
from collections import Counter from collections import Counter
from dataclasses import dataclass
import logging import logging
from flipr_api import FliprAPIRestClient from flipr_api import FliprAPIRestClient
@ -13,24 +12,18 @@ from homeassistant.exceptions import ConfigEntryError
from homeassistant.helpers import issue_registry as ir from homeassistant.helpers import issue_registry as ir
from .const import DOMAIN from .const import DOMAIN
from .coordinator import FliprDataUpdateCoordinator, FliprHubDataUpdateCoordinator from .coordinator import (
FliprConfigEntry,
FliprData,
FliprDataUpdateCoordinator,
FliprHubDataUpdateCoordinator,
)
PLATFORMS = [Platform.BINARY_SENSOR, Platform.SELECT, Platform.SENSOR, Platform.SWITCH] PLATFORMS = [Platform.BINARY_SENSOR, Platform.SELECT, Platform.SENSOR, Platform.SWITCH]
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@dataclass
class FliprData:
"""The Flipr data class."""
flipr_coordinators: list[FliprDataUpdateCoordinator]
hub_coordinators: list[FliprHubDataUpdateCoordinator]
type FliprConfigEntry = ConfigEntry[FliprData]
async def async_setup_entry(hass: HomeAssistant, entry: FliprConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: FliprConfigEntry) -> bool:
"""Set up flipr from a config entry.""" """Set up flipr from a config entry."""
@ -50,13 +43,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: FliprConfigEntry) -> boo
flipr_coordinators = [] flipr_coordinators = []
for flipr_id in ids["flipr"]: for flipr_id in ids["flipr"]:
flipr_coordinator = FliprDataUpdateCoordinator(hass, client, flipr_id) flipr_coordinator = FliprDataUpdateCoordinator(hass, entry, client, flipr_id)
await flipr_coordinator.async_config_entry_first_refresh() await flipr_coordinator.async_config_entry_first_refresh()
flipr_coordinators.append(flipr_coordinator) flipr_coordinators.append(flipr_coordinator)
hub_coordinators = [] hub_coordinators = []
for hub_id in ids["hub"]: for hub_id in ids["hub"]:
hub_coordinator = FliprHubDataUpdateCoordinator(hass, client, hub_id) hub_coordinator = FliprHubDataUpdateCoordinator(hass, entry, client, hub_id)
await hub_coordinator.async_config_entry_first_refresh() await hub_coordinator.async_config_entry_first_refresh()
hub_coordinators.append(hub_coordinator) hub_coordinators.append(hub_coordinator)

View File

@ -10,7 +10,7 @@ from homeassistant.components.binary_sensor import (
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 FliprConfigEntry from .coordinator import FliprConfigEntry
from .entity import FliprEntity from .entity import FliprEntity
BINARY_SENSORS_TYPES: tuple[BinarySensorEntityDescription, ...] = ( BINARY_SENSORS_TYPES: tuple[BinarySensorEntityDescription, ...] = (

View File

@ -1,5 +1,6 @@
"""DataUpdateCoordinator for flipr integration.""" """DataUpdateCoordinator for flipr integration."""
from dataclasses import dataclass
from datetime import timedelta from datetime import timedelta
import logging import logging
from typing import Any from typing import Any
@ -14,13 +15,28 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@dataclass
class FliprData:
"""The Flipr data class."""
flipr_coordinators: list["FliprDataUpdateCoordinator"]
hub_coordinators: list["FliprHubDataUpdateCoordinator"]
type FliprConfigEntry = ConfigEntry[FliprData]
class BaseDataUpdateCoordinator[_DataT](DataUpdateCoordinator[_DataT]): class BaseDataUpdateCoordinator[_DataT](DataUpdateCoordinator[_DataT]):
"""Parent class to hold Flipr and Hub data retrieval.""" """Parent class to hold Flipr and Hub data retrieval."""
config_entry: ConfigEntry config_entry: FliprConfigEntry
def __init__( def __init__(
self, hass: HomeAssistant, client: FliprAPIRestClient, flipr_or_hub_id: str self,
hass: HomeAssistant,
config_entry: FliprConfigEntry,
client: FliprAPIRestClient,
flipr_or_hub_id: str,
) -> None: ) -> None:
"""Initialize.""" """Initialize."""
self.device_id = flipr_or_hub_id self.device_id = flipr_or_hub_id
@ -29,6 +45,7 @@ class BaseDataUpdateCoordinator[_DataT](DataUpdateCoordinator[_DataT]):
super().__init__( super().__init__(
hass, hass,
_LOGGER, _LOGGER,
config_entry=config_entry,
name=f"Flipr or Hub data measure for {self.device_id}", name=f"Flipr or Hub data measure for {self.device_id}",
update_interval=timedelta(minutes=15), update_interval=timedelta(minutes=15),
) )

View File

@ -6,7 +6,7 @@ from homeassistant.components.select import SelectEntity, SelectEntityDescriptio
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 FliprConfigEntry from .coordinator import FliprConfigEntry
from .entity import FliprEntity from .entity import FliprEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View File

@ -12,7 +12,7 @@ from homeassistant.const import PERCENTAGE, UnitOfElectricPotential, UnitOfTempe
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 FliprConfigEntry from .coordinator import FliprConfigEntry
from .entity import FliprEntity from .entity import FliprEntity
SENSOR_TYPES: tuple[SensorEntityDescription, ...] = ( SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (

View File

@ -7,7 +7,7 @@ from homeassistant.components.switch import SwitchEntity, SwitchEntityDescriptio
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 FliprConfigEntry from .coordinator import FliprConfigEntry
from .entity import FliprEntity from .entity import FliprEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)