diff --git a/homeassistant/components/nibe_heatpump/__init__.py b/homeassistant/components/nibe_heatpump/__init__.py index ac201ed23226..6fc5ea49d97c 100644 --- a/homeassistant/components/nibe_heatpump/__init__.py +++ b/homeassistant/components/nibe_heatpump/__init__.py @@ -7,7 +7,6 @@ from nibe.connection.modbus import Modbus from nibe.connection.nibegw import NibeGW, ProductInfo from nibe.heatpump import HeatPump, Model -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( CONF_IP_ADDRESS, CONF_MODEL, @@ -30,7 +29,7 @@ from .const import ( CONF_WORD_SWAP, DOMAIN, ) -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry PLATFORMS: list[Platform] = [ Platform.BINARY_SENSOR, @@ -45,7 +44,9 @@ PLATFORMS: list[Platform] = [ COIL_READ_RETRIES = 5 -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry( + hass: HomeAssistant, entry: NibeHeatpumpConfigEntry +) -> bool: """Set up Nibe Heat Pump from a config entry.""" heatpump = HeatPump(Model[entry.data[CONF_MODEL]]) @@ -83,8 +84,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: coordinator = CoilCoordinator(hass, entry, heatpump, connection) - data = hass.data.setdefault(DOMAIN, {}) - data[entry.entry_id] = coordinator + entry.runtime_data = coordinator reg = dr.async_get(hass) device_entry = reg.async_get_or_create( @@ -113,9 +113,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: return True -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry( + hass: HomeAssistant, entry: NibeHeatpumpConfigEntry +) -> bool: """Unload a config entry.""" - if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): - hass.data[DOMAIN].pop(entry.entry_id) - - return unload_ok + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) diff --git a/homeassistant/components/nibe_heatpump/binary_sensor.py b/homeassistant/components/nibe_heatpump/binary_sensor.py index d49862180bdc..4245a1c76526 100644 --- a/homeassistant/components/nibe_heatpump/binary_sensor.py +++ b/homeassistant/components/nibe_heatpump/binary_sensor.py @@ -5,24 +5,22 @@ from __future__ import annotations from nibe.coil import Coil, CoilData from homeassistant.components.binary_sensor import ENTITY_ID_FORMAT, BinarySensorEntity -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import DOMAIN -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry from .entity import CoilEntity async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( BinarySensor(coordinator, coil) diff --git a/homeassistant/components/nibe_heatpump/button.py b/homeassistant/components/nibe_heatpump/button.py index 8b6c8abf3598..3d63da77f163 100644 --- a/homeassistant/components/nibe_heatpump/button.py +++ b/homeassistant/components/nibe_heatpump/button.py @@ -6,24 +6,23 @@ from nibe.coil_groups import UNIT_COILGROUPS, UnitCoilGroup from nibe.exceptions import CoilNotFoundException from homeassistant.components.button import ButtonEntity -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import DOMAIN, LOGGER -from .coordinator import CoilCoordinator +from .const import LOGGER +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data def reset_buttons(): if unit := UNIT_COILGROUPS.get(coordinator.series, {}).get("main"): diff --git a/homeassistant/components/nibe_heatpump/climate.py b/homeassistant/components/nibe_heatpump/climate.py index 1b8a0ecc0df3..19dcca2362a4 100644 --- a/homeassistant/components/nibe_heatpump/climate.py +++ b/homeassistant/components/nibe_heatpump/climate.py @@ -24,31 +24,29 @@ from homeassistant.components.climate import ( HVACAction, HVACMode, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.exceptions import ServiceValidationError from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import ( - DOMAIN, LOGGER, VALUES_COOL_WITH_ROOM_SENSOR_OFF, VALUES_MIXING_VALVE_CLOSED_STATE, VALUES_PRIORITY_COOLING, VALUES_PRIORITY_HEATING, ) -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data main_unit = UNIT_COILGROUPS[coordinator.series]["main"] diff --git a/homeassistant/components/nibe_heatpump/coordinator.py b/homeassistant/components/nibe_heatpump/coordinator.py index 05e652d7f42f..edd0439de542 100644 --- a/homeassistant/components/nibe_heatpump/coordinator.py +++ b/homeassistant/components/nibe_heatpump/coordinator.py @@ -28,6 +28,8 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda from .const import DOMAIN, LOGGER +type NibeHeatpumpConfigEntry = ConfigEntry[CoilCoordinator] + class ContextCoordinator[_DataTypeT, _ContextTypeT](DataUpdateCoordinator[_DataTypeT]): """Update coordinator with context adjustments.""" @@ -73,12 +75,12 @@ class ContextCoordinator[_DataTypeT, _ContextTypeT](DataUpdateCoordinator[_DataT class CoilCoordinator(ContextCoordinator[dict[int, CoilData], int]): """Update coordinator for nibe heat pumps.""" - config_entry: ConfigEntry + config_entry: NibeHeatpumpConfigEntry def __init__( self, hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, heatpump: HeatPump, connection: Connection, ) -> None: diff --git a/homeassistant/components/nibe_heatpump/number.py b/homeassistant/components/nibe_heatpump/number.py index 59f365f52bf4..b1857067df84 100644 --- a/homeassistant/components/nibe_heatpump/number.py +++ b/homeassistant/components/nibe_heatpump/number.py @@ -5,24 +5,22 @@ from __future__ import annotations from nibe.coil import Coil, CoilData from homeassistant.components.number import ENTITY_ID_FORMAT, NumberEntity, NumberMode -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import DOMAIN -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry from .entity import CoilEntity async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( Number(coordinator, coil) diff --git a/homeassistant/components/nibe_heatpump/select.py b/homeassistant/components/nibe_heatpump/select.py index c92c12a882a3..fa0c936ec5c4 100644 --- a/homeassistant/components/nibe_heatpump/select.py +++ b/homeassistant/components/nibe_heatpump/select.py @@ -5,24 +5,22 @@ from __future__ import annotations from nibe.coil import Coil, CoilData from homeassistant.components.select import ENTITY_ID_FORMAT, SelectEntity -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import DOMAIN -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry from .entity import CoilEntity async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( Select(coordinator, coil) diff --git a/homeassistant/components/nibe_heatpump/sensor.py b/homeassistant/components/nibe_heatpump/sensor.py index 54cd0f7ea34c..92afbbf4bcdb 100644 --- a/homeassistant/components/nibe_heatpump/sensor.py +++ b/homeassistant/components/nibe_heatpump/sensor.py @@ -11,7 +11,6 @@ from homeassistant.components.sensor import ( SensorEntityDescription, SensorStateClass, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( PERCENTAGE, EntityCategory, @@ -28,8 +27,7 @@ from homeassistant.const import ( from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import DOMAIN -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry from .entity import CoilEntity UNIT_DESCRIPTIONS = { @@ -185,12 +183,12 @@ UNIT_DESCRIPTIONS = { async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( Sensor(coordinator, coil, UNIT_DESCRIPTIONS.get(coil.unit)) diff --git a/homeassistant/components/nibe_heatpump/switch.py b/homeassistant/components/nibe_heatpump/switch.py index 452244f05b58..42a104e1f30b 100644 --- a/homeassistant/components/nibe_heatpump/switch.py +++ b/homeassistant/components/nibe_heatpump/switch.py @@ -7,24 +7,22 @@ from typing import Any from nibe.coil import Coil, CoilData from homeassistant.components.switch import ENTITY_ID_FORMAT, SwitchEntity -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import DOMAIN -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry from .entity import CoilEntity async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( Switch(coordinator, coil) diff --git a/homeassistant/components/nibe_heatpump/water_heater.py b/homeassistant/components/nibe_heatpump/water_heater.py index a72851e7eab6..72be4503fe87 100644 --- a/homeassistant/components/nibe_heatpump/water_heater.py +++ b/homeassistant/components/nibe_heatpump/water_heater.py @@ -14,29 +14,27 @@ from homeassistant.components.water_heater import ( WaterHeaterEntity, WaterHeaterEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import ( - DOMAIN, LOGGER, VALUES_TEMPORARY_LUX_INACTIVE, VALUES_TEMPORARY_LUX_ONE_TIME_INCREASE, ) -from .coordinator import CoilCoordinator +from .coordinator import CoilCoordinator, NibeHeatpumpConfigEntry async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: NibeHeatpumpConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up platform.""" - coordinator: CoilCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data def water_heaters(): for key, group in WATER_HEATER_COILGROUPS.get(coordinator.series, ()).items():