mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Use runtime_data in econet (#136691)
This commit is contained in:
parent
b1a4ba7b7c
commit
ff73545a86
@ -6,7 +6,7 @@ import logging
|
||||
|
||||
from aiohttp.client_exceptions import ClientError
|
||||
from pyeconet import EcoNetApiInterface
|
||||
from pyeconet.equipment import EquipmentType
|
||||
from pyeconet.equipment import Equipment, EquipmentType
|
||||
from pyeconet.errors import (
|
||||
GenericHTTPError,
|
||||
InvalidCredentialsError,
|
||||
@ -21,7 +21,7 @@ from homeassistant.exceptions import ConfigEntryNotReady
|
||||
from homeassistant.helpers.dispatcher import dispatcher_send
|
||||
from homeassistant.helpers.event import async_track_time_interval
|
||||
|
||||
from .const import API_CLIENT, DOMAIN, EQUIPMENT, PUSH_UPDATE
|
||||
from .const import PUSH_UPDATE
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -36,7 +36,12 @@ PLATFORMS = [
|
||||
INTERVAL = timedelta(minutes=60)
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
|
||||
type EconetConfigEntry = ConfigEntry[dict[EquipmentType, list[Equipment]]]
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, config_entry: EconetConfigEntry
|
||||
) -> bool:
|
||||
"""Set up EcoNet as config entry."""
|
||||
|
||||
email = config_entry.data[CONF_EMAIL]
|
||||
@ -57,9 +62,8 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
|
||||
)
|
||||
except (ClientError, GenericHTTPError, InvalidResponseFormat) as err:
|
||||
raise ConfigEntryNotReady from err
|
||||
hass.data.setdefault(DOMAIN, {API_CLIENT: {}, EQUIPMENT: {}})
|
||||
hass.data[DOMAIN][API_CLIENT][config_entry.entry_id] = api
|
||||
hass.data[DOMAIN][EQUIPMENT][config_entry.entry_id] = equipment
|
||||
|
||||
config_entry.runtime_data = equipment
|
||||
|
||||
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
|
||||
|
||||
@ -89,10 +93,6 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
|
||||
return True
|
||||
|
||||
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: EconetConfigEntry) -> bool:
|
||||
"""Unload a EcoNet config entry."""
|
||||
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||
if unload_ok:
|
||||
hass.data[DOMAIN][API_CLIENT].pop(entry.entry_id)
|
||||
hass.data[DOMAIN][EQUIPMENT].pop(entry.entry_id)
|
||||
return unload_ok
|
||||
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||
|
@ -9,11 +9,10 @@ from homeassistant.components.binary_sensor import (
|
||||
BinarySensorEntity,
|
||||
BinarySensorEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DOMAIN, EQUIPMENT
|
||||
from . import EconetConfigEntry
|
||||
from .entity import EcoNetEntity
|
||||
|
||||
BINARY_SENSOR_TYPES: tuple[BinarySensorEntityDescription, ...] = (
|
||||
@ -41,10 +40,12 @@ BINARY_SENSOR_TYPES: tuple[BinarySensorEntityDescription, ...] = (
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant,
|
||||
entry: EconetConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up EcoNet binary sensor based on a config entry."""
|
||||
equipment = hass.data[DOMAIN][EQUIPMENT][entry.entry_id]
|
||||
equipment = entry.runtime_data
|
||||
all_equipment = equipment[EquipmentType.WATER_HEATER].copy()
|
||||
all_equipment.extend(equipment[EquipmentType.THERMOSTAT].copy())
|
||||
|
||||
|
@ -16,13 +16,13 @@ from homeassistant.components.climate import (
|
||||
ClimateEntityFeature,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
||||
|
||||
from .const import DOMAIN, EQUIPMENT
|
||||
from . import EconetConfigEntry
|
||||
from .const import DOMAIN
|
||||
from .entity import EcoNetEntity
|
||||
|
||||
ECONET_STATE_TO_HA = {
|
||||
@ -51,10 +51,12 @@ SUPPORT_FLAGS_THERMOSTAT = (
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant,
|
||||
entry: EconetConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up EcoNet thermostat based on a config entry."""
|
||||
equipment = hass.data[DOMAIN][EQUIPMENT][entry.entry_id]
|
||||
equipment = entry.runtime_data
|
||||
async_add_entities(
|
||||
[
|
||||
EcoNetThermostat(thermostat)
|
||||
|
@ -1,7 +1,5 @@
|
||||
"""Constants for Econet integration."""
|
||||
|
||||
DOMAIN = "econet"
|
||||
API_CLIENT = "api_client"
|
||||
EQUIPMENT = "equipment"
|
||||
|
||||
PUSH_UPDATE = "econet.push_update"
|
||||
|
@ -10,7 +10,6 @@ from homeassistant.components.sensor import (
|
||||
SensorEntityDescription,
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
PERCENTAGE,
|
||||
SIGNAL_STRENGTH_DECIBELS,
|
||||
@ -21,7 +20,7 @@ from homeassistant.const import (
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DOMAIN, EQUIPMENT
|
||||
from . import EconetConfigEntry
|
||||
from .entity import EcoNetEntity
|
||||
|
||||
SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
||||
@ -82,11 +81,13 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant,
|
||||
entry: EconetConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up EcoNet sensor based on a config entry."""
|
||||
|
||||
data = hass.data[DOMAIN][EQUIPMENT][entry.entry_id]
|
||||
data = entry.runtime_data
|
||||
equipment = data[EquipmentType.WATER_HEATER].copy()
|
||||
equipment.extend(data[EquipmentType.THERMOSTAT].copy())
|
||||
|
||||
|
@ -9,11 +9,10 @@ from pyeconet.equipment import EquipmentType
|
||||
from pyeconet.equipment.thermostat import ThermostatOperationMode
|
||||
|
||||
from homeassistant.components.switch import SwitchEntity
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DOMAIN, EQUIPMENT
|
||||
from . import EconetConfigEntry
|
||||
from .entity import EcoNetEntity
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@ -21,11 +20,11 @@ _LOGGER = logging.getLogger(__name__)
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
entry: ConfigEntry,
|
||||
entry: EconetConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up the ecobee thermostat switch entity."""
|
||||
equipment = hass.data[DOMAIN][EQUIPMENT][entry.entry_id]
|
||||
equipment = entry.runtime_data
|
||||
async_add_entities(
|
||||
EcoNetSwitchAuxHeatOnly(thermostat)
|
||||
for thermostat in equipment[EquipmentType.THERMOSTAT]
|
||||
|
@ -17,12 +17,11 @@ from homeassistant.components.water_heater import (
|
||||
WaterHeaterEntity,
|
||||
WaterHeaterEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_TEMPERATURE, STATE_OFF, UnitOfTemperature
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DOMAIN, EQUIPMENT
|
||||
from . import EconetConfigEntry
|
||||
from .entity import EcoNetEntity
|
||||
|
||||
SCAN_INTERVAL = timedelta(hours=1)
|
||||
@ -47,10 +46,12 @@ SUPPORT_FLAGS_HEATER = (
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant,
|
||||
entry: EconetConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up EcoNet water heater based on a config entry."""
|
||||
equipment = hass.data[DOMAIN][EQUIPMENT][entry.entry_id]
|
||||
equipment = entry.runtime_data
|
||||
async_add_entities(
|
||||
[
|
||||
EcoNetWaterHeater(water_heater)
|
||||
|
@ -5,7 +5,7 @@ from unittest.mock import patch
|
||||
from pyeconet.api import EcoNetApiInterface
|
||||
from pyeconet.errors import InvalidCredentialsError, PyeconetError
|
||||
|
||||
from homeassistant.components.econet import DOMAIN
|
||||
from homeassistant.components.econet.const import DOMAIN
|
||||
from homeassistant.config_entries import SOURCE_USER
|
||||
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
Loading…
x
Reference in New Issue
Block a user