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