mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Use runtime_data in melcloud (#148012)
Co-authored-by: Franck Nijhof <git@frenck.dev> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
parent
04e69479f4
commit
e42235285d
@ -27,9 +27,11 @@ MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)
|
|||||||
|
|
||||||
PLATFORMS = [Platform.CLIMATE, Platform.SENSOR, Platform.WATER_HEATER]
|
PLATFORMS = [Platform.CLIMATE, Platform.SENSOR, Platform.WATER_HEATER]
|
||||||
|
|
||||||
|
type MelCloudConfigEntry = ConfigEntry[dict[str, list[MelCloudDevice]]]
|
||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
||||||
"""Establish connection with MELClooud."""
|
async def async_setup_entry(hass: HomeAssistant, entry: MelCloudConfigEntry) -> bool:
|
||||||
|
"""Establish connection with MELCloud."""
|
||||||
conf = entry.data
|
conf = entry.data
|
||||||
try:
|
try:
|
||||||
mel_devices = await mel_devices_setup(hass, conf[CONF_TOKEN])
|
mel_devices = await mel_devices_setup(hass, conf[CONF_TOKEN])
|
||||||
@ -40,20 +42,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
except (TimeoutError, ClientConnectionError) as ex:
|
except (TimeoutError, ClientConnectionError) as ex:
|
||||||
raise ConfigEntryNotReady from ex
|
raise ConfigEntryNotReady from ex
|
||||||
|
|
||||||
hass.data.setdefault(DOMAIN, {}).update({entry.entry_id: mel_devices})
|
entry.runtime_data = mel_devices
|
||||||
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, config_entry: ConfigEntry) -> bool:
|
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
|
||||||
"""Unload a config entry."""
|
"""Unload a config entry."""
|
||||||
unload_ok = await hass.config_entries.async_unload_platforms(
|
return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS)
|
||||||
config_entry, PLATFORMS
|
|
||||||
)
|
|
||||||
hass.data[DOMAIN].pop(config_entry.entry_id)
|
|
||||||
if not hass.data[DOMAIN]:
|
|
||||||
hass.data.pop(DOMAIN)
|
|
||||||
return unload_ok
|
|
||||||
|
|
||||||
|
|
||||||
class MelCloudDevice:
|
class MelCloudDevice:
|
||||||
|
@ -24,13 +24,12 @@ from homeassistant.components.climate import (
|
|||||||
HVACAction,
|
HVACAction,
|
||||||
HVACMode,
|
HVACMode,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
|
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
from . import MelCloudDevice
|
from . import MelCloudConfigEntry, MelCloudDevice
|
||||||
from .const import (
|
from .const import (
|
||||||
ATTR_STATUS,
|
ATTR_STATUS,
|
||||||
ATTR_VANE_HORIZONTAL,
|
ATTR_VANE_HORIZONTAL,
|
||||||
@ -38,7 +37,6 @@ from .const import (
|
|||||||
ATTR_VANE_VERTICAL,
|
ATTR_VANE_VERTICAL,
|
||||||
ATTR_VANE_VERTICAL_POSITIONS,
|
ATTR_VANE_VERTICAL_POSITIONS,
|
||||||
CONF_POSITION,
|
CONF_POSITION,
|
||||||
DOMAIN,
|
|
||||||
SERVICE_SET_VANE_HORIZONTAL,
|
SERVICE_SET_VANE_HORIZONTAL,
|
||||||
SERVICE_SET_VANE_VERTICAL,
|
SERVICE_SET_VANE_VERTICAL,
|
||||||
)
|
)
|
||||||
@ -77,11 +75,11 @@ ATW_ZONE_HVAC_ACTION_LOOKUP = {
|
|||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entry: ConfigEntry,
|
entry: MelCloudConfigEntry,
|
||||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MelCloud device climate based on config_entry."""
|
"""Set up MelCloud device climate based on config_entry."""
|
||||||
mel_devices = hass.data[DOMAIN][entry.entry_id]
|
mel_devices = entry.runtime_data
|
||||||
entities: list[AtaDeviceClimate | AtwDeviceZoneClimate] = [
|
entities: list[AtaDeviceClimate | AtwDeviceZoneClimate] = [
|
||||||
AtaDeviceClimate(mel_device, mel_device.device)
|
AtaDeviceClimate(mel_device, mel_device.device)
|
||||||
for mel_device in mel_devices[DEVICE_TYPE_ATA]
|
for mel_device in mel_devices[DEVICE_TYPE_ATA]
|
||||||
|
@ -5,11 +5,12 @@ from __future__ import annotations
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
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_TOKEN, CONF_USERNAME
|
from homeassistant.const import CONF_TOKEN, CONF_USERNAME
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import entity_registry as er
|
from homeassistant.helpers import entity_registry as er
|
||||||
|
|
||||||
|
from . import MelCloudConfigEntry
|
||||||
|
|
||||||
TO_REDACT = {
|
TO_REDACT = {
|
||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
CONF_TOKEN,
|
CONF_TOKEN,
|
||||||
@ -17,7 +18,7 @@ TO_REDACT = {
|
|||||||
|
|
||||||
|
|
||||||
async def async_get_config_entry_diagnostics(
|
async def async_get_config_entry_diagnostics(
|
||||||
hass: HomeAssistant, entry: ConfigEntry
|
hass: HomeAssistant, entry: MelCloudConfigEntry
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
"""Return diagnostics for the config entry."""
|
"""Return diagnostics for the config entry."""
|
||||||
ent_reg = er.async_get(hass)
|
ent_reg = er.async_get(hass)
|
||||||
|
@ -15,13 +15,11 @@ from homeassistant.components.sensor import (
|
|||||||
SensorEntityDescription,
|
SensorEntityDescription,
|
||||||
SensorStateClass,
|
SensorStateClass,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import UnitOfEnergy, UnitOfTemperature
|
from homeassistant.const import UnitOfEnergy, UnitOfTemperature
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
from . import MelCloudDevice
|
from . import MelCloudConfigEntry, MelCloudDevice
|
||||||
from .const import DOMAIN
|
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass(frozen=True, kw_only=True)
|
@dataclasses.dataclass(frozen=True, kw_only=True)
|
||||||
@ -105,11 +103,11 @@ ATW_ZONE_SENSORS: tuple[MelcloudSensorEntityDescription, ...] = (
|
|||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entry: ConfigEntry,
|
entry: MelCloudConfigEntry,
|
||||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MELCloud device sensors based on config_entry."""
|
"""Set up MELCloud device sensors based on config_entry."""
|
||||||
mel_devices = hass.data[DOMAIN].get(entry.entry_id)
|
mel_devices = entry.runtime_data
|
||||||
|
|
||||||
entities: list[MelDeviceSensor] = [
|
entities: list[MelDeviceSensor] = [
|
||||||
MelDeviceSensor(mel_device, description)
|
MelDeviceSensor(mel_device, description)
|
||||||
|
@ -17,22 +17,21 @@ from homeassistant.components.water_heater import (
|
|||||||
WaterHeaterEntity,
|
WaterHeaterEntity,
|
||||||
WaterHeaterEntityFeature,
|
WaterHeaterEntityFeature,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import UnitOfTemperature
|
from homeassistant.const import UnitOfTemperature
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
|
|
||||||
from . import DOMAIN, MelCloudDevice
|
from . import MelCloudConfigEntry, MelCloudDevice
|
||||||
from .const import ATTR_STATUS
|
from .const import ATTR_STATUS
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entry: ConfigEntry,
|
entry: MelCloudConfigEntry,
|
||||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MelCloud device climate based on config_entry."""
|
"""Set up MelCloud device climate based on config_entry."""
|
||||||
mel_devices = hass.data[DOMAIN][entry.entry_id]
|
mel_devices = entry.runtime_data
|
||||||
async_add_entities(
|
async_add_entities(
|
||||||
[
|
[
|
||||||
AtwWaterHeater(mel_device, mel_device.device)
|
AtwWaterHeater(mel_device, mel_device.device)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user