Explicitly pass in the config_entry in incomfort coordinator (#138131)

This commit is contained in:
Jan Bouwhuis 2025-02-09 20:19:09 +01:00 committed by GitHub
parent 56eecf05e7
commit 2dbf475d6f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 32 additions and 20 deletions

View File

@ -5,14 +5,18 @@ from __future__ import annotations
from aiohttp import ClientResponseError
from incomfortclient import InvalidGateway, InvalidHeaterList
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers import device_registry as dr
from .const import DOMAIN
from .coordinator import InComfortData, InComfortDataCoordinator, async_connect_gateway
from .coordinator import (
InComfortConfigEntry,
InComfortData,
InComfortDataCoordinator,
async_connect_gateway,
)
from .errors import InComfortTimeout, InComfortUnknownError, NoHeaters, NotFound
PLATFORMS = (
@ -24,8 +28,6 @@ PLATFORMS = (
INTEGRATION_TITLE = "Intergas InComfort/Intouch Lan2RF gateway"
type InComfortConfigEntry = ConfigEntry[InComfortDataCoordinator]
@callback
def async_cleanup_stale_devices(
@ -93,7 +95,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: InComfortConfigEntry) ->
name="RFGateway",
)
async_cleanup_stale_devices(hass, entry, data, gateway_device)
coordinator = InComfortDataCoordinator(hass, data, entry.entry_id)
coordinator = InComfortDataCoordinator(hass, entry, data)
entry.runtime_data = coordinator
await coordinator.async_config_entry_first_refresh()

View File

@ -17,8 +17,7 @@ from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import InComfortConfigEntry
from .coordinator import InComfortDataCoordinator
from .coordinator import InComfortConfigEntry, InComfortDataCoordinator
from .entity import IncomfortBoilerEntity
PARALLEL_UPDATES = 0

View File

@ -17,9 +17,8 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import InComfortConfigEntry
from .const import CONF_LEGACY_SETPOINT_STATUS, DOMAIN
from .coordinator import InComfortDataCoordinator
from .coordinator import InComfortConfigEntry, InComfortDataCoordinator
from .entity import IncomfortEntity
PARALLEL_UPDATES = 1
@ -74,7 +73,10 @@ class InComfortClimate(IncomfortEntity, ClimateEntity):
name=f"Thermostat {room.room_no}",
)
if coordinator.unique_id:
self._attr_device_info["via_device"] = (DOMAIN, coordinator.unique_id)
self._attr_device_info["via_device"] = (
DOMAIN,
coordinator.config_entry.entry_id,
)
@property
def extra_state_attributes(self) -> dict[str, Any]:

View File

@ -28,9 +28,8 @@ from homeassistant.helpers.selector import (
)
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo
from . import InComfortConfigEntry
from .const import CONF_LEGACY_SETPOINT_STATUS, DOMAIN
from .coordinator import async_connect_gateway
from .coordinator import InComfortConfigEntry, async_connect_gateway
TITLE = "Intergas InComfort/Intouch Lan2RF gateway"

View File

@ -12,12 +12,15 @@ from incomfortclient import (
InvalidHeaterList,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryError
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
type InComfortConfigEntry = ConfigEntry[InComfortDataCoordinator]
_LOGGER = logging.getLogger(__name__)
UPDATE_INTERVAL = 30
@ -50,14 +53,20 @@ async def async_connect_gateway(
class InComfortDataCoordinator(DataUpdateCoordinator[InComfortData]):
"""Data coordinator for InComfort entities."""
config_entry: InComfortConfigEntry
def __init__(
self, hass: HomeAssistant, incomfort_data: InComfortData, unique_id: str | None
self,
hass: HomeAssistant,
config_entry: InComfortConfigEntry,
incomfort_data: InComfortData,
) -> None:
"""Initialize coordinator."""
self.unique_id = unique_id
self.unique_id = config_entry.unique_id
super().__init__(
hass,
_LOGGER,
config_entry=config_entry,
name="InComfort datacoordinator",
update_interval=timedelta(seconds=UPDATE_INTERVAL),
)

View File

@ -8,7 +8,7 @@ from homeassistant.components.diagnostics import async_redact_data
from homeassistant.const import CONF_PASSWORD
from homeassistant.core import HomeAssistant, callback
from . import InComfortConfigEntry
from .coordinator import InComfortConfigEntry
REDACT_CONFIG = {CONF_PASSWORD}

View File

@ -29,4 +29,7 @@ class IncomfortBoilerEntity(IncomfortEntity):
serial_number=heater.serial_no,
)
if coordinator.unique_id:
self._attr_device_info["via_device"] = (DOMAIN, coordinator.unique_id)
self._attr_device_info["via_device"] = (
DOMAIN,
coordinator.config_entry.entry_id,
)

View File

@ -18,8 +18,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from . import InComfortConfigEntry
from .coordinator import InComfortDataCoordinator
from .coordinator import InComfortConfigEntry, InComfortDataCoordinator
from .entity import IncomfortBoilerEntity
PARALLEL_UPDATES = 0

View File

@ -12,8 +12,7 @@ from homeassistant.const import EntityCategory, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import InComfortConfigEntry
from .coordinator import InComfortDataCoordinator
from .coordinator import InComfortConfigEntry, InComfortDataCoordinator
from .entity import IncomfortBoilerEntity
_LOGGER = logging.getLogger(__name__)