Use runtime_data in comelit (#136384)

This commit is contained in:
epenet 2025-01-24 00:50:36 +01:00 committed by GitHub
parent 1593b40f52
commit c691f8cc1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 79 additions and 69 deletions

View File

@ -2,12 +2,16 @@
from aiocomelit.const import BRIDGE from aiocomelit.const import BRIDGE
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, CONF_PIN, CONF_PORT, CONF_TYPE, Platform from homeassistant.const import CONF_HOST, CONF_PIN, CONF_PORT, CONF_TYPE, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .const import DEFAULT_PORT, DOMAIN from .const import DEFAULT_PORT
from .coordinator import ComelitBaseCoordinator, ComelitSerialBridge, ComelitVedoSystem from .coordinator import (
ComelitBaseCoordinator,
ComelitConfigEntry,
ComelitSerialBridge,
ComelitVedoSystem,
)
BRIDGE_PLATFORMS = [ BRIDGE_PLATFORMS = [
Platform.CLIMATE, Platform.CLIMATE,
@ -24,13 +28,14 @@ VEDO_PLATFORMS = [
] ]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: ComelitConfigEntry) -> bool:
"""Set up Comelit platform.""" """Set up Comelit platform."""
coordinator: ComelitBaseCoordinator coordinator: ComelitBaseCoordinator
if entry.data.get(CONF_TYPE, BRIDGE) == BRIDGE: if entry.data.get(CONF_TYPE, BRIDGE) == BRIDGE:
coordinator = ComelitSerialBridge( coordinator = ComelitSerialBridge(
hass, hass,
entry,
entry.data[CONF_HOST], entry.data[CONF_HOST],
entry.data.get(CONF_PORT, DEFAULT_PORT), entry.data.get(CONF_PORT, DEFAULT_PORT),
entry.data[CONF_PIN], entry.data[CONF_PIN],
@ -39,6 +44,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
else: else:
coordinator = ComelitVedoSystem( coordinator = ComelitVedoSystem(
hass, hass,
entry,
entry.data[CONF_HOST], entry.data[CONF_HOST],
entry.data.get(CONF_PORT, DEFAULT_PORT), entry.data.get(CONF_PORT, DEFAULT_PORT),
entry.data[CONF_PIN], entry.data[CONF_PIN],
@ -47,14 +53,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator entry.runtime_data = coordinator
await hass.config_entries.async_forward_entry_setups(entry, platforms) await hass.config_entries.async_forward_entry_setups(entry, platforms)
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: ComelitConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
if entry.data.get(CONF_TYPE, BRIDGE) == BRIDGE: if entry.data.get(CONF_TYPE, BRIDGE) == BRIDGE:
@ -62,10 +68,9 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
else: else:
platforms = VEDO_PLATFORMS platforms = VEDO_PLATFORMS
coordinator: ComelitBaseCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
if unload_ok := await hass.config_entries.async_unload_platforms(entry, platforms): if unload_ok := await hass.config_entries.async_unload_platforms(entry, platforms):
await coordinator.api.logout() await coordinator.api.logout()
await coordinator.api.close() await coordinator.api.close()
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok return unload_ok

View File

@ -3,6 +3,7 @@
from __future__ import annotations from __future__ import annotations
import logging import logging
from typing import cast
from aiocomelit.api import ComelitVedoAreaObject from aiocomelit.api import ComelitVedoAreaObject
from aiocomelit.const import ALARM_AREAS, AlarmAreaState from aiocomelit.const import ALARM_AREAS, AlarmAreaState
@ -13,13 +14,11 @@ from homeassistant.components.alarm_control_panel import (
AlarmControlPanelState, AlarmControlPanelState,
CodeFormat, CodeFormat,
) )
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 homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .coordinator import ComelitConfigEntry, ComelitVedoSystem
from .coordinator import ComelitVedoSystem
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -48,12 +47,12 @@ ALARM_AREA_ARMED_STATUS: dict[str, int] = {
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Comelit VEDO system alarm control panel devices.""" """Set up the Comelit VEDO system alarm control panel devices."""
coordinator: ComelitVedoSystem = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitVedoSystem, config_entry.runtime_data)
async_add_entities( async_add_entities(
ComelitAlarmEntity(coordinator, device, config_entry.entry_id) ComelitAlarmEntity(coordinator, device, config_entry.entry_id)

View File

@ -2,6 +2,8 @@
from __future__ import annotations from __future__ import annotations
from typing import cast
from aiocomelit import ComelitVedoZoneObject from aiocomelit import ComelitVedoZoneObject
from aiocomelit.const import ALARM_ZONES from aiocomelit.const import ALARM_ZONES
@ -9,23 +11,21 @@ from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass, BinarySensorDeviceClass,
BinarySensorEntity, BinarySensorEntity,
) )
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 homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .coordinator import ComelitConfigEntry, ComelitVedoSystem
from .coordinator import ComelitVedoSystem
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit VEDO presence sensors.""" """Set up Comelit VEDO presence sensors."""
coordinator: ComelitVedoSystem = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitVedoSystem, config_entry.runtime_data)
async_add_entities( async_add_entities(
ComelitVedoBinarySensorEntity(coordinator, device, config_entry.entry_id) ComelitVedoBinarySensorEntity(coordinator, device, config_entry.entry_id)

View File

@ -3,7 +3,7 @@
from __future__ import annotations from __future__ import annotations
from enum import StrEnum from enum import StrEnum
from typing import Any from typing import Any, cast
from aiocomelit import ComelitSerialBridgeObject from aiocomelit import ComelitSerialBridgeObject
from aiocomelit.const import CLIMATE from aiocomelit.const import CLIMATE
@ -15,14 +15,12 @@ from homeassistant.components.climate import (
HVACMode, HVACMode,
UnitOfTemperature, UnitOfTemperature,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_TENTHS from homeassistant.const import ATTR_TEMPERATURE, PRECISION_TENTHS
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 homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .coordinator import ComelitConfigEntry, ComelitSerialBridge
from .coordinator import ComelitSerialBridge
class ClimaComelitMode(StrEnum): class ClimaComelitMode(StrEnum):
@ -72,12 +70,12 @@ MODE_TO_ACTION: dict[HVACMode, ClimaComelitCommand] = {
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit climates.""" """Set up Comelit climates."""
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitSerialBridge, config_entry.runtime_data)
async_add_entities( async_add_entities(
ComelitClimateEntity(coordinator, device, config_entry.entry_id) ComelitClimateEntity(coordinator, device, config_entry.entry_id)

View File

@ -23,15 +23,19 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
from .const import _LOGGER, DOMAIN from .const import _LOGGER, DOMAIN
type ComelitConfigEntry = ConfigEntry[ComelitBaseCoordinator]
class ComelitBaseCoordinator(DataUpdateCoordinator[dict[str, Any]]): class ComelitBaseCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""Base coordinator for Comelit Devices.""" """Base coordinator for Comelit Devices."""
_hw_version: str _hw_version: str
config_entry: ConfigEntry config_entry: ComelitConfigEntry
api: ComelitCommonApi api: ComelitCommonApi
def __init__(self, hass: HomeAssistant, device: str, host: str) -> None: def __init__(
self, hass: HomeAssistant, entry: ComelitConfigEntry, device: str, host: str
) -> None:
"""Initialize the scanner.""" """Initialize the scanner."""
self._device = device self._device = device
@ -40,13 +44,14 @@ class ComelitBaseCoordinator(DataUpdateCoordinator[dict[str, Any]]):
super().__init__( super().__init__(
hass=hass, hass=hass,
logger=_LOGGER, logger=_LOGGER,
config_entry=entry,
name=f"{DOMAIN}-{host}-coordinator", name=f"{DOMAIN}-{host}-coordinator",
update_interval=timedelta(seconds=5), update_interval=timedelta(seconds=5),
) )
device_registry = dr.async_get(self.hass) device_registry = dr.async_get(self.hass)
device_registry.async_get_or_create( device_registry.async_get_or_create(
config_entry_id=self.config_entry.entry_id, config_entry_id=entry.entry_id,
identifiers={(DOMAIN, self.config_entry.entry_id)}, identifiers={(DOMAIN, entry.entry_id)},
model=device, model=device,
name=f"{device} ({self._host})", name=f"{device} ({self._host})",
manufacturer="Comelit", manufacturer="Comelit",
@ -98,10 +103,17 @@ class ComelitSerialBridge(ComelitBaseCoordinator):
_hw_version = "20003101" _hw_version = "20003101"
api: ComeliteSerialBridgeApi api: ComeliteSerialBridgeApi
def __init__(self, hass: HomeAssistant, host: str, port: int, pin: int) -> None: def __init__(
self,
hass: HomeAssistant,
entry: ComelitConfigEntry,
host: str,
port: int,
pin: int,
) -> None:
"""Initialize the scanner.""" """Initialize the scanner."""
self.api = ComeliteSerialBridgeApi(host, port, pin) self.api = ComeliteSerialBridgeApi(host, port, pin)
super().__init__(hass, BRIDGE, host) super().__init__(hass, entry, BRIDGE, host)
async def _async_update_system_data(self) -> dict[str, Any]: async def _async_update_system_data(self) -> dict[str, Any]:
"""Specific method for updating data.""" """Specific method for updating data."""
@ -114,10 +126,17 @@ class ComelitVedoSystem(ComelitBaseCoordinator):
_hw_version = "VEDO IP" _hw_version = "VEDO IP"
api: ComelitVedoApi api: ComelitVedoApi
def __init__(self, hass: HomeAssistant, host: str, port: int, pin: int) -> None: def __init__(
self,
hass: HomeAssistant,
entry: ComelitConfigEntry,
host: str,
port: int,
pin: int,
) -> None:
"""Initialize the scanner.""" """Initialize the scanner."""
self.api = ComelitVedoApi(host, port, pin) self.api = ComelitVedoApi(host, port, pin)
super().__init__(hass, VEDO, host) super().__init__(hass, entry, VEDO, host)
async def _async_update_system_data(self) -> dict[str, Any]: async def _async_update_system_data(self) -> dict[str, Any]:
"""Specific method for updating data.""" """Specific method for updating data."""

View File

@ -2,30 +2,28 @@
from __future__ import annotations from __future__ import annotations
from typing import Any from typing import Any, cast
from aiocomelit import ComelitSerialBridgeObject from aiocomelit import ComelitSerialBridgeObject
from aiocomelit.const import COVER, STATE_COVER, STATE_OFF, STATE_ON from aiocomelit.const import COVER, STATE_COVER, STATE_OFF, STATE_ON
from homeassistant.components.cover import CoverDeviceClass, CoverEntity, CoverState from homeassistant.components.cover import CoverDeviceClass, CoverEntity, CoverState
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 homeassistant.helpers.restore_state import RestoreEntity from homeassistant.helpers.restore_state import RestoreEntity
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .coordinator import ComelitConfigEntry, ComelitSerialBridge
from .coordinator import ComelitSerialBridge
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit covers.""" """Set up Comelit covers."""
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitSerialBridge, config_entry.runtime_data)
async_add_entities( async_add_entities(
ComelitCoverEntity(coordinator, device, config_entry.entry_id) ComelitCoverEntity(coordinator, device, config_entry.entry_id)

View File

@ -12,22 +12,20 @@ from aiocomelit import (
from aiocomelit.const import BRIDGE from aiocomelit.const import BRIDGE
from homeassistant.components.diagnostics import async_redact_data from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_PIN, CONF_TYPE from homeassistant.const import CONF_PIN, CONF_TYPE
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .const import DOMAIN from .coordinator import ComelitConfigEntry
from .coordinator import ComelitBaseCoordinator
TO_REDACT = {CONF_PIN} TO_REDACT = {CONF_PIN}
async def async_get_config_entry_diagnostics( async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry hass: HomeAssistant, entry: ComelitConfigEntry
) -> dict[str, Any]: ) -> dict[str, Any]:
"""Return diagnostics for a config entry.""" """Return diagnostics for a config entry."""
coordinator: ComelitBaseCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
dev_list: list[dict[str, Any]] = [] dev_list: list[dict[str, Any]] = []
dev_type_list: list[dict[int, Any]] = [] dev_type_list: list[dict[int, Any]] = []

View File

@ -3,7 +3,7 @@
from __future__ import annotations from __future__ import annotations
from enum import StrEnum from enum import StrEnum
from typing import Any from typing import Any, cast
from aiocomelit import ComelitSerialBridgeObject from aiocomelit import ComelitSerialBridgeObject
from aiocomelit.const import CLIMATE from aiocomelit.const import CLIMATE
@ -16,14 +16,13 @@ from homeassistant.components.humidifier import (
HumidifierEntity, HumidifierEntity,
HumidifierEntityFeature, HumidifierEntityFeature,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ServiceValidationError from homeassistant.exceptions import ServiceValidationError
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .const import DOMAIN
from .coordinator import ComelitSerialBridge from .coordinator import ComelitConfigEntry, ComelitSerialBridge
class HumidifierComelitMode(StrEnum): class HumidifierComelitMode(StrEnum):
@ -55,12 +54,12 @@ MODE_TO_ACTION: dict[str, HumidifierComelitCommand] = {
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit humidifiers.""" """Set up Comelit humidifiers."""
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitSerialBridge, config_entry.runtime_data)
entities: list[ComelitHumidifierEntity] = [] entities: list[ComelitHumidifierEntity] = []
for device in coordinator.data[CLIMATE].values(): for device in coordinator.data[CLIMATE].values():

View File

@ -2,29 +2,27 @@
from __future__ import annotations from __future__ import annotations
from typing import Any from typing import Any, cast
from aiocomelit import ComelitSerialBridgeObject from aiocomelit import ComelitSerialBridgeObject
from aiocomelit.const import LIGHT, STATE_OFF, STATE_ON from aiocomelit.const import LIGHT, STATE_OFF, STATE_ON
from homeassistant.components.light import ColorMode, LightEntity from homeassistant.components.light import ColorMode, LightEntity
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 homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .coordinator import ComelitConfigEntry, ComelitSerialBridge
from .coordinator import ComelitSerialBridge
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit lights.""" """Set up Comelit lights."""
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitSerialBridge, config_entry.runtime_data)
async_add_entities( async_add_entities(
ComelitLightEntity(coordinator, device, config_entry.entry_id) ComelitLightEntity(coordinator, device, config_entry.entry_id)

View File

@ -2,7 +2,7 @@
from __future__ import annotations from __future__ import annotations
from typing import Final from typing import Final, cast
from aiocomelit import ComelitSerialBridgeObject, ComelitVedoZoneObject from aiocomelit import ComelitSerialBridgeObject, ComelitVedoZoneObject
from aiocomelit.const import ALARM_ZONES, BRIDGE, OTHER, AlarmZoneState from aiocomelit.const import ALARM_ZONES, BRIDGE, OTHER, AlarmZoneState
@ -12,15 +12,13 @@ from homeassistant.components.sensor import (
SensorEntity, SensorEntity,
SensorEntityDescription, SensorEntityDescription,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_TYPE, UnitOfPower from homeassistant.const import CONF_TYPE, UnitOfPower
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 homeassistant.helpers.typing import StateType from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .coordinator import ComelitConfigEntry, ComelitSerialBridge, ComelitVedoSystem
from .coordinator import ComelitSerialBridge, ComelitVedoSystem
SENSOR_BRIDGE_TYPES: Final = ( SENSOR_BRIDGE_TYPES: Final = (
SensorEntityDescription( SensorEntityDescription(
@ -43,7 +41,7 @@ SENSOR_VEDO_TYPES: Final = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit sensors.""" """Set up Comelit sensors."""
@ -56,12 +54,12 @@ async def async_setup_entry(
async def async_setup_bridge_entry( async def async_setup_bridge_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit Bridge sensors.""" """Set up Comelit Bridge sensors."""
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitSerialBridge, config_entry.runtime_data)
entities: list[ComelitBridgeSensorEntity] = [] entities: list[ComelitBridgeSensorEntity] = []
for device in coordinator.data[OTHER].values(): for device in coordinator.data[OTHER].values():
@ -76,12 +74,12 @@ async def async_setup_bridge_entry(
async def async_setup_vedo_entry( async def async_setup_vedo_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit VEDO sensors.""" """Set up Comelit VEDO sensors."""
coordinator: ComelitVedoSystem = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitVedoSystem, config_entry.runtime_data)
entities: list[ComelitVedoSensorEntity] = [] entities: list[ComelitVedoSensorEntity] = []
for device in coordinator.data[ALARM_ZONES].values(): for device in coordinator.data[ALARM_ZONES].values():

View File

@ -2,29 +2,27 @@
from __future__ import annotations from __future__ import annotations
from typing import Any from typing import Any, cast
from aiocomelit import ComelitSerialBridgeObject from aiocomelit import ComelitSerialBridgeObject
from aiocomelit.const import IRRIGATION, OTHER, STATE_OFF, STATE_ON from aiocomelit.const import IRRIGATION, OTHER, STATE_OFF, STATE_ON
from homeassistant.components.switch import SwitchDeviceClass, SwitchEntity from homeassistant.components.switch import SwitchDeviceClass, SwitchEntity
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 homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from .coordinator import ComelitConfigEntry, ComelitSerialBridge
from .coordinator import ComelitSerialBridge
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: ComelitConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Comelit switches.""" """Set up Comelit switches."""
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator = cast(ComelitSerialBridge, config_entry.runtime_data)
entities: list[ComelitSwitchEntity] = [] entities: list[ComelitSwitchEntity] = []
entities.extend( entities.extend(