Use runtime_data in intellifire (#144979)

This commit is contained in:
epenet 2025-05-15 14:57:26 +02:00 committed by GitHub
parent 28990e1db5
commit 912798ee34
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 42 additions and 49 deletions

View File

@ -8,7 +8,6 @@ from intellifire4py import UnifiedFireplace
from intellifire4py.cloud_interface import IntelliFireCloudInterface
from intellifire4py.model import IntelliFireCommonFireplaceData
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_API_KEY,
CONF_HOST,
@ -27,12 +26,11 @@ from .const import (
CONF_SERIAL,
CONF_USER_ID,
CONF_WEB_CLIENT_ID,
DOMAIN,
INIT_WAIT_TIME_SECONDS,
LOGGER,
STARTUP_TIMEOUT,
)
from .coordinator import IntellifireDataUpdateCoordinator
from .coordinator import IntellifireConfigEntry, IntellifireDataUpdateCoordinator
PLATFORMS = [
Platform.BINARY_SENSOR,
@ -45,7 +43,9 @@ PLATFORMS = [
]
def _construct_common_data(entry: ConfigEntry) -> IntelliFireCommonFireplaceData:
def _construct_common_data(
entry: IntellifireConfigEntry,
) -> IntelliFireCommonFireplaceData:
"""Convert config entry data into IntelliFireCommonFireplaceData."""
return IntelliFireCommonFireplaceData(
@ -60,7 +60,9 @@ def _construct_common_data(entry: ConfigEntry) -> IntelliFireCommonFireplaceData
)
async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_migrate_entry(
hass: HomeAssistant, config_entry: IntellifireConfigEntry
) -> bool:
"""Migrate entries."""
LOGGER.debug(
"Migrating configuration from version %s.%s",
@ -105,7 +107,7 @@ async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: IntellifireConfigEntry) -> bool:
"""Set up IntelliFire from a config entry."""
if CONF_USERNAME not in entry.data:
@ -133,7 +135,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
LOGGER.debug("Fireplace to Initialized - Awaiting first refresh")
await data_update_coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = data_update_coordinator
entry.runtime_data = data_update_coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
@ -151,9 +153,8 @@ async def _async_wait_for_initialization(
await asyncio.sleep(INIT_WAIT_TIME_SECONDS)
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, entry: IntellifireConfigEntry
) -> 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)

View File

@ -10,13 +10,11 @@ from homeassistant.components.binary_sensor import (
BinarySensorEntity,
BinarySensorEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import IntellifireDataUpdateCoordinator
from .const import DOMAIN
from .coordinator import IntellifireConfigEntry, IntellifireDataUpdateCoordinator
from .entity import IntellifireEntity
@ -151,11 +149,11 @@ INTELLIFIRE_BINARY_SENSORS: tuple[IntellifireBinarySensorEntityDescription, ...]
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: IntellifireConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up a IntelliFire On/Off Sensor."""
coordinator: IntellifireDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
async_add_entities(
IntellifireBinarySensor(coordinator=coordinator, description=description)

View File

@ -10,13 +10,12 @@ 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 AddConfigEntryEntitiesCallback
from . import IntellifireDataUpdateCoordinator
from .const import DEFAULT_THERMOSTAT_TEMP, DOMAIN, LOGGER
from .const import DEFAULT_THERMOSTAT_TEMP, LOGGER
from .coordinator import IntellifireConfigEntry, IntellifireDataUpdateCoordinator
from .entity import IntellifireEntity
INTELLIFIRE_CLIMATES: tuple[ClimateEntityDescription, ...] = (
@ -26,11 +25,11 @@ INTELLIFIRE_CLIMATES: tuple[ClimateEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: IntellifireConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Configure the fan entry.."""
coordinator: IntellifireDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
if coordinator.data.has_thermostat:
async_add_entities(

View File

@ -16,16 +16,18 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import DOMAIN, LOGGER
type IntellifireConfigEntry = ConfigEntry[IntellifireDataUpdateCoordinator]
class IntellifireDataUpdateCoordinator(DataUpdateCoordinator[IntelliFirePollData]):
"""Class to manage the polling of the fireplace API."""
config_entry: ConfigEntry
config_entry: IntellifireConfigEntry
def __init__(
self,
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: IntellifireConfigEntry,
fireplace: UnifiedFireplace,
) -> None:
"""Initialize the Coordinator."""

View File

@ -15,7 +15,6 @@ from homeassistant.components.fan import (
FanEntityDescription,
FanEntityFeature,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.util.percentage import (
@ -23,8 +22,8 @@ from homeassistant.util.percentage import (
ranged_value_to_percentage,
)
from .const import DOMAIN, LOGGER
from .coordinator import IntellifireDataUpdateCoordinator
from .const import LOGGER
from .coordinator import IntellifireConfigEntry
from .entity import IntellifireEntity
@ -57,11 +56,11 @@ INTELLIFIRE_FANS: tuple[IntellifireFanEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: IntellifireConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up the fans."""
coordinator: IntellifireDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
if coordinator.data.has_fan:
async_add_entities(

View File

@ -15,12 +15,11 @@ from homeassistant.components.light import (
LightEntity,
LightEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .const import DOMAIN, LOGGER
from .coordinator import IntellifireDataUpdateCoordinator
from .const import LOGGER
from .coordinator import IntellifireConfigEntry
from .entity import IntellifireEntity
@ -84,11 +83,11 @@ class IntellifireLight(IntellifireEntity, LightEntity):
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: IntellifireConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up the fans."""
coordinator: IntellifireDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
if coordinator.data.has_light:
async_add_entities(

View File

@ -9,22 +9,21 @@ from homeassistant.components.number import (
NumberEntityDescription,
NumberMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .const import DOMAIN, LOGGER
from .coordinator import IntellifireDataUpdateCoordinator
from .const import LOGGER
from .coordinator import IntellifireConfigEntry, IntellifireDataUpdateCoordinator
from .entity import IntellifireEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: IntellifireConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up the fans."""
coordinator: IntellifireDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
description = NumberEntityDescription(
key="flame_control",

View File

@ -12,14 +12,12 @@ from homeassistant.components.sensor import (
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.util.dt import utcnow
from .const import DOMAIN
from .coordinator import IntellifireDataUpdateCoordinator
from .coordinator import IntellifireConfigEntry, IntellifireDataUpdateCoordinator
from .entity import IntellifireEntity
@ -142,12 +140,12 @@ INTELLIFIRE_SENSORS: tuple[IntellifireSensorEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: IntellifireConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Define setup entry call."""
coordinator: IntellifireDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
async_add_entities(
IntelliFireSensor(coordinator=coordinator, description=description)
for description in INTELLIFIRE_SENSORS

View File

@ -7,12 +7,10 @@ from dataclasses import dataclass
from typing import Any
from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import IntellifireDataUpdateCoordinator
from .const import DOMAIN
from .coordinator import IntellifireConfigEntry, IntellifireDataUpdateCoordinator
from .entity import IntellifireEntity
@ -52,11 +50,11 @@ INTELLIFIRE_SWITCHES: tuple[IntellifireSwitchEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: IntellifireConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Configure switch entities."""
coordinator: IntellifireDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
async_add_entities(
IntellifireSwitch(coordinator=coordinator, description=description)