Migrate to runtime data in Overkiz (#133760)

* Migrate to runtime data

* Revert

* Improve typing
This commit is contained in:
Mick Vleeshouwer 2024-12-22 10:25:59 +01:00 committed by GitHub
parent cd6da9d9e8
commit c3d0a01776
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 63 additions and 128 deletions

View File

@ -47,14 +47,17 @@ from .coordinator import OverkizDataUpdateCoordinator
@dataclass @dataclass
class HomeAssistantOverkizData: class HomeAssistantOverkizData:
"""Overkiz data stored in the Home Assistant data object.""" """Overkiz data stored in the runtime data object."""
coordinator: OverkizDataUpdateCoordinator coordinator: OverkizDataUpdateCoordinator
platforms: defaultdict[Platform, list[Device]] platforms: defaultdict[Platform, list[Device]]
scenarios: list[Scenario] scenarios: list[Scenario]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: type OverkizDataConfigEntry = ConfigEntry[HomeAssistantOverkizData]
async def async_setup_entry(hass: HomeAssistant, entry: OverkizDataConfigEntry) -> bool:
"""Set up Overkiz from a config entry.""" """Set up Overkiz from a config entry."""
client: OverkizClient | None = None client: OverkizClient | None = None
api_type = entry.data.get(CONF_API_TYPE, APIType.CLOUD) api_type = entry.data.get(CONF_API_TYPE, APIType.CLOUD)
@ -123,7 +126,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
platforms: defaultdict[Platform, list[Device]] = defaultdict(list) platforms: defaultdict[Platform, list[Device]] = defaultdict(list)
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = HomeAssistantOverkizData( entry.runtime_data = HomeAssistantOverkizData(
coordinator=coordinator, platforms=platforms, scenarios=scenarios coordinator=coordinator, platforms=platforms, scenarios=scenarios
) )
@ -162,17 +165,15 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(
hass: HomeAssistant, entry: OverkizDataConfigEntry
) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
async def _async_migrate_entries( async def _async_migrate_entries(
hass: HomeAssistant, config_entry: ConfigEntry hass: HomeAssistant, config_entry: OverkizDataConfigEntry
) -> bool: ) -> bool:
"""Migrate old entries to new unique IDs.""" """Migrate old entries to new unique IDs."""
entity_registry = er.async_get(hass) entity_registry = er.async_get(hass)

View File

@ -16,14 +16,12 @@ from homeassistant.components.alarm_control_panel import (
AlarmControlPanelEntityFeature, AlarmControlPanelEntityFeature,
AlarmControlPanelState, AlarmControlPanelState,
) )
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.helpers.entity import EntityDescription from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN
from .coordinator import OverkizDataUpdateCoordinator from .coordinator import OverkizDataUpdateCoordinator
from .entity import OverkizDescriptiveEntity from .entity import OverkizDescriptiveEntity
@ -210,11 +208,11 @@ SUPPORTED_DEVICES = {description.key: description for description in ALARM_DESCR
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz alarm control panel from a config entry.""" """Set up the Overkiz alarm control panel from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
OverkizAlarmControlPanel( OverkizAlarmControlPanel(

View File

@ -18,8 +18,7 @@ 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 HomeAssistantOverkizData from .const import IGNORED_OVERKIZ_DEVICES
from .const import DOMAIN, IGNORED_OVERKIZ_DEVICES
from .entity import OverkizDescriptiveEntity from .entity import OverkizDescriptiveEntity
@ -147,7 +146,7 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz binary sensors from a config entry.""" """Set up the Overkiz binary sensors from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
entities: list[OverkizBinarySensor] = [] entities: list[OverkizBinarySensor] = []
for device in data.coordinator.data.values(): for device in data.coordinator.data.values():

View File

@ -12,13 +12,12 @@ from homeassistant.components.button import (
ButtonEntity, ButtonEntity,
ButtonEntityDescription, ButtonEntityDescription,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory 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 HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN, IGNORED_OVERKIZ_DEVICES from .const import IGNORED_OVERKIZ_DEVICES
from .entity import OverkizDescriptiveEntity from .entity import OverkizDescriptiveEntity
@ -100,11 +99,11 @@ SUPPORTED_COMMANDS = {
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz button from a config entry.""" """Set up the Overkiz button from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
entities: list[ButtonEntity] = [] entities: list[ButtonEntity] = []
for device in data.coordinator.data.values(): for device in data.coordinator.data.values():

View File

@ -7,14 +7,12 @@ from enum import StrEnum, unique
from pyoverkiz.enums import Protocol from pyoverkiz.enums import Protocol
from pyoverkiz.enums.ui import UIWidget from pyoverkiz.enums.ui import UIWidget
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.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .. import HomeAssistantOverkizData from .. import OverkizDataConfigEntry
from ..const import DOMAIN
from .atlantic_electrical_heater import AtlanticElectricalHeater from .atlantic_electrical_heater import AtlanticElectricalHeater
from .atlantic_electrical_heater_with_adjustable_temperature_setpoint import ( from .atlantic_electrical_heater_with_adjustable_temperature_setpoint import (
AtlanticElectricalHeaterWithAdjustableTemperatureSetpoint, AtlanticElectricalHeaterWithAdjustableTemperatureSetpoint,
@ -79,11 +77,11 @@ WIDGET_AND_PROTOCOL_TO_CLIMATE_ENTITY = {
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz climate from a config entry.""" """Set up the Overkiz climate from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
# Match devices based on the widget. # Match devices based on the widget.
entities_based_on_widget: list[Entity] = [ entities_based_on_widget: list[Entity] = [

View File

@ -2,23 +2,23 @@
from pyoverkiz.enums import OverkizCommand, UIClass from pyoverkiz.enums import OverkizCommand, UIClass
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.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .. import HomeAssistantOverkizData from .. import OverkizDataConfigEntry
from ..const import DOMAIN
from .awning import Awning from .awning import Awning
from .generic_cover import OverkizGenericCover from .generic_cover import OverkizGenericCover
from .vertical_cover import LowSpeedCover, VerticalCover from .vertical_cover import LowSpeedCover, VerticalCover
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz covers from a config entry.""" """Set up the Overkiz covers from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
entities: list[OverkizGenericCover] = [ entities: list[OverkizGenericCover] = [
Awning(device.device_url, data.coordinator) Awning(device.device_url, data.coordinator)

View File

@ -7,20 +7,18 @@ from typing import Any
from pyoverkiz.enums import APIType from pyoverkiz.enums import APIType
from pyoverkiz.obfuscate import obfuscate_id from pyoverkiz.obfuscate import obfuscate_id
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntry from homeassistant.helpers.device_registry import DeviceEntry
from . import HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import CONF_API_TYPE, CONF_HUB, DOMAIN from .const import CONF_API_TYPE, CONF_HUB
async def async_get_config_entry_diagnostics( async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry hass: HomeAssistant, entry: OverkizDataConfigEntry
) -> dict[str, Any]: ) -> dict[str, Any]:
"""Return diagnostics for a config entry.""" """Return diagnostics for a config entry."""
entry_data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] client = entry.runtime_data.coordinator.client
client = entry_data.coordinator.client
data = { data = {
"setup": await client.get_diagnostic_data(), "setup": await client.get_diagnostic_data(),
@ -39,11 +37,10 @@ async def async_get_config_entry_diagnostics(
async def async_get_device_diagnostics( async def async_get_device_diagnostics(
hass: HomeAssistant, entry: ConfigEntry, device: DeviceEntry hass: HomeAssistant, entry: OverkizDataConfigEntry, device: DeviceEntry
) -> dict[str, Any]: ) -> dict[str, Any]:
"""Return diagnostics for a device entry.""" """Return diagnostics for a device entry."""
entry_data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] client = entry.runtime_data.coordinator.client
client = entry_data.coordinator.client
device_url = min(device.identifiers)[1] device_url = min(device.identifiers)[1]

View File

@ -12,24 +12,22 @@ from homeassistant.components.light import (
ColorMode, ColorMode,
LightEntity, LightEntity,
) )
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.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN
from .coordinator import OverkizDataUpdateCoordinator from .coordinator import OverkizDataUpdateCoordinator
from .entity import OverkizEntity from .entity import OverkizEntity
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz lights from a config entry.""" """Set up the Overkiz lights from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
OverkizLight(device.device_url, data.coordinator) OverkizLight(device.device_url, data.coordinator)

View File

@ -7,23 +7,21 @@ from typing import Any
from pyoverkiz.enums import OverkizCommand, OverkizCommandParam, OverkizState from pyoverkiz.enums import OverkizCommand, OverkizCommandParam, OverkizState
from homeassistant.components.lock import LockEntity from homeassistant.components.lock import LockEntity
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.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN
from .entity import OverkizEntity from .entity import OverkizEntity
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz locks from a config entry.""" """Set up the Overkiz locks from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
OverkizLock(device.device_url, data.coordinator) OverkizLock(device.device_url, data.coordinator)

View File

@ -14,13 +14,12 @@ from homeassistant.components.number import (
NumberEntity, NumberEntity,
NumberEntityDescription, NumberEntityDescription,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory, UnitOfTemperature from homeassistant.const import EntityCategory, UnitOfTemperature
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 HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN, IGNORED_OVERKIZ_DEVICES from .const import IGNORED_OVERKIZ_DEVICES
from .coordinator import OverkizDataUpdateCoordinator from .coordinator import OverkizDataUpdateCoordinator
from .entity import OverkizDescriptiveEntity from .entity import OverkizDescriptiveEntity
@ -191,11 +190,11 @@ SUPPORTED_STATES = {description.key: description for description in NUMBER_DESCR
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz number from a config entry.""" """Set up the Overkiz number from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
entities: list[OverkizNumber] = [] entities: list[OverkizNumber] = []
for device in data.coordinator.data.values(): for device in data.coordinator.data.values():

View File

@ -8,21 +8,19 @@ from pyoverkiz.client import OverkizClient
from pyoverkiz.models import Scenario from pyoverkiz.models import Scenario
from homeassistant.components.scene import Scene from homeassistant.components.scene import Scene
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 HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz scenes from a config entry.""" """Set up the Overkiz scenes from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
OverkizScene(scene, data.coordinator.client) for scene in data.scenarios OverkizScene(scene, data.coordinator.client) for scene in data.scenarios

View File

@ -8,13 +8,12 @@ from dataclasses import dataclass
from pyoverkiz.enums import OverkizCommand, OverkizCommandParam, OverkizState from pyoverkiz.enums import OverkizCommand, OverkizCommandParam, OverkizState
from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.components.select import SelectEntity, SelectEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory 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 HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN, IGNORED_OVERKIZ_DEVICES from .const import IGNORED_OVERKIZ_DEVICES
from .entity import OverkizDescriptiveEntity from .entity import OverkizDescriptiveEntity
@ -129,11 +128,11 @@ SUPPORTED_STATES = {description.key: description for description in SELECT_DESCR
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz select from a config entry.""" """Set up the Overkiz select from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
entities: list[OverkizSelect] = [] entities: list[OverkizSelect] = []
for device in data.coordinator.data.values(): for device in data.coordinator.data.values():

View File

@ -15,7 +15,6 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX, LIGHT_LUX,
@ -34,7 +33,7 @@ from homeassistant.helpers.device_registry import DeviceInfo
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 . import HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import ( from .const import (
DOMAIN, DOMAIN,
IGNORED_OVERKIZ_DEVICES, IGNORED_OVERKIZ_DEVICES,
@ -483,11 +482,11 @@ SUPPORTED_STATES = {description.key: description for description in SENSOR_DESCR
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz sensors from a config entry.""" """Set up the Overkiz sensors from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
entities: list[SensorEntity] = [] entities: list[SensorEntity] = []
for device in data.coordinator.data.values(): for device in data.coordinator.data.values():

View File

@ -10,23 +10,21 @@ from homeassistant.components.siren import (
SirenEntity, SirenEntity,
SirenEntityFeature, SirenEntityFeature,
) )
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.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN
from .entity import OverkizEntity from .entity import OverkizEntity
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz sirens from a config entry.""" """Set up the Overkiz sirens from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
OverkizSiren(device.device_url, data.coordinator) OverkizSiren(device.device_url, data.coordinator)

View File

@ -15,13 +15,11 @@ from homeassistant.components.switch import (
SwitchEntity, SwitchEntity,
SwitchEntityDescription, SwitchEntityDescription,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory, Platform from homeassistant.const import EntityCategory, Platform
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 HomeAssistantOverkizData from . import OverkizDataConfigEntry
from .const import DOMAIN
from .entity import OverkizDescriptiveEntity from .entity import OverkizDescriptiveEntity
@ -111,11 +109,11 @@ SUPPORTED_DEVICES = {
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz switch from a config entry.""" """Set up the Overkiz switch from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
OverkizSwitch( OverkizSwitch(

View File

@ -1,42 +0,0 @@
"""Support for Overkiz water heater devices."""
from __future__ import annotations
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import HomeAssistantOverkizData
from .const import DOMAIN
from .entity import OverkizEntity
from .water_heater_entities import (
CONTROLLABLE_NAME_TO_WATER_HEATER_ENTITY,
WIDGET_TO_WATER_HEATER_ENTITY,
)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Overkiz DHW from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id]
entities: list[OverkizEntity] = []
for device in data.platforms[Platform.WATER_HEATER]:
if device.controllable_name in CONTROLLABLE_NAME_TO_WATER_HEATER_ENTITY:
entities.append(
CONTROLLABLE_NAME_TO_WATER_HEATER_ENTITY[device.controllable_name](
device.device_url, data.coordinator
)
)
elif device.widget in WIDGET_TO_WATER_HEATER_ENTITY:
entities.append(
WIDGET_TO_WATER_HEATER_ENTITY[device.widget](
device.device_url, data.coordinator
)
)
async_add_entities(entities)

View File

@ -4,13 +4,11 @@ from __future__ import annotations
from pyoverkiz.enums.ui import UIWidget from pyoverkiz.enums.ui import UIWidget
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.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .. import HomeAssistantOverkizData from .. import OverkizDataConfigEntry
from ..const import DOMAIN
from ..entity import OverkizEntity from ..entity import OverkizEntity
from .atlantic_domestic_hot_water_production_mlb_component import ( from .atlantic_domestic_hot_water_production_mlb_component import (
AtlanticDomesticHotWaterProductionMBLComponent, AtlanticDomesticHotWaterProductionMBLComponent,
@ -22,11 +20,11 @@ from .hitachi_dhw import HitachiDHW
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: OverkizDataConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Overkiz DHW from a config entry.""" """Set up the Overkiz DHW from a config entry."""
data: HomeAssistantOverkizData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
entities: list[OverkizEntity] = [] entities: list[OverkizEntity] = []
for device in data.platforms[Platform.WATER_HEATER]: for device in data.platforms[Platform.WATER_HEATER]: