Migrate aosmith to use runtime_data (#125538)

This commit is contained in:
epenet 2024-09-08 22:05:48 +02:00 committed by GitHub
parent 6f88b6e64e
commit 7209b3c7d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 19 additions and 22 deletions

View File

@ -16,6 +16,8 @@ from .coordinator import AOSmithEnergyCoordinator, AOSmithStatusCoordinator
PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.WATER_HEATER] PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.WATER_HEATER]
type AOSmithConfigEntry = ConfigEntry[AOSmithData]
@dataclass @dataclass
class AOSmithData: class AOSmithData:
@ -26,7 +28,7 @@ class AOSmithData:
energy_coordinator: AOSmithEnergyCoordinator energy_coordinator: AOSmithEnergyCoordinator
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: AOSmithConfigEntry) -> bool:
"""Set up A. O. Smith from a config entry.""" """Set up A. O. Smith from a config entry."""
email = entry.data[CONF_EMAIL] email = entry.data[CONF_EMAIL]
password = entry.data[CONF_PASSWORD] password = entry.data[CONF_PASSWORD]
@ -55,7 +57,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
) )
await energy_coordinator.async_config_entry_first_refresh() await energy_coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = AOSmithData( entry.runtime_data = AOSmithData(
client, client,
status_coordinator, status_coordinator,
energy_coordinator, energy_coordinator,
@ -66,9 +68,6 @@ 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: AOSmithConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@ -5,11 +5,9 @@ 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.core import HomeAssistant from homeassistant.core import HomeAssistant
from . import AOSmithData from . import AOSmithConfigEntry
from .const import DOMAIN
TO_REDACT = { TO_REDACT = {
"address", "address",
@ -31,10 +29,10 @@ TO_REDACT = {
async def async_get_config_entry_diagnostics( async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry hass: HomeAssistant, config_entry: AOSmithConfigEntry
) -> dict[str, Any]: ) -> dict[str, Any]:
"""Return diagnostics for a config entry.""" """Return diagnostics for a config entry."""
data: AOSmithData = hass.data[DOMAIN][config_entry.entry_id] data = config_entry.runtime_data
all_device_info = await data.client.get_all_device_info() all_device_info = await data.client.get_all_device_info()
return async_redact_data(all_device_info, TO_REDACT) return async_redact_data(all_device_info, TO_REDACT)

View File

@ -11,13 +11,11 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import UnitOfEnergy from homeassistant.const import UnitOfEnergy
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 AOSmithData from . import AOSmithConfigEntry
from .const import DOMAIN
from .coordinator import AOSmithEnergyCoordinator, AOSmithStatusCoordinator from .coordinator import AOSmithEnergyCoordinator, AOSmithStatusCoordinator
from .entity import AOSmithEnergyEntity, AOSmithStatusEntity from .entity import AOSmithEnergyEntity, AOSmithStatusEntity
@ -49,10 +47,12 @@ HOT_WATER_STATUS_MAP: dict[HotWaterStatus, str] = {
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: AOSmithConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up A. O. Smith sensor platform.""" """Set up A. O. Smith sensor platform."""
data: AOSmithData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
AOSmithStatusSensorEntity(data.status_coordinator, description, junction_id) AOSmithStatusSensorEntity(data.status_coordinator, description, junction_id)

View File

@ -12,14 +12,12 @@ 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.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AOSmithData from . import AOSmithConfigEntry
from .const import DOMAIN
from .coordinator import AOSmithStatusCoordinator from .coordinator import AOSmithStatusCoordinator
from .entity import AOSmithStatusEntity from .entity import AOSmithStatusEntity
@ -46,10 +44,12 @@ DEFAULT_OPERATION_MODE_PRIORITY = [
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: AOSmithConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up A. O. Smith water heater platform.""" """Set up A. O. Smith water heater platform."""
data: AOSmithData = hass.data[DOMAIN][entry.entry_id] data = entry.runtime_data
async_add_entities( async_add_entities(
AOSmithWaterHeaterEntity(data.status_coordinator, junction_id) AOSmithWaterHeaterEntity(data.status_coordinator, junction_id)