Explicitly pass in the config_entry in emoncms coordinator (#137743)

This commit is contained in:
Michael 2025-02-08 01:04:05 +01:00 committed by GitHub
parent 7fc92e4c25
commit e9bfb6baee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 10 deletions

View File

@ -2,7 +2,6 @@
from pyemoncms import EmoncmsClient from pyemoncms import EmoncmsClient
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_KEY, CONF_URL, Platform from homeassistant.const import CONF_API_KEY, CONF_URL, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
@ -10,12 +9,10 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
from .const import DOMAIN, EMONCMS_UUID_DOC_URL, LOGGER from .const import DOMAIN, EMONCMS_UUID_DOC_URL, LOGGER
from .coordinator import EmoncmsCoordinator from .coordinator import EmonCMSConfigEntry, EmoncmsCoordinator
PLATFORMS: list[Platform] = [Platform.SENSOR] PLATFORMS: list[Platform] = [Platform.SENSOR]
type EmonCMSConfigEntry = ConfigEntry[EmoncmsCoordinator]
def _migrate_unique_id( def _migrate_unique_id(
hass: HomeAssistant, entry: EmonCMSConfigEntry, emoncms_unique_id: str hass: HomeAssistant, entry: EmonCMSConfigEntry, emoncms_unique_id: str
@ -68,7 +65,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: EmonCMSConfigEntry) -> b
session=async_get_clientsession(hass), session=async_get_clientsession(hass),
) )
await _check_unique_id_migration(hass, entry, emoncms_client) await _check_unique_id_migration(hass, entry, emoncms_client)
coordinator = EmoncmsCoordinator(hass, emoncms_client) coordinator = EmoncmsCoordinator(hass, entry, emoncms_client)
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()
entry.runtime_data = coordinator entry.runtime_data = coordinator
@ -77,11 +74,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: EmonCMSConfigEntry) -> b
return True return True
async def update_listener(hass: HomeAssistant, entry: ConfigEntry): async def update_listener(hass: HomeAssistant, entry: EmonCMSConfigEntry):
"""Handle options update.""" """Handle options update."""
await hass.config_entries.async_reload(entry.entry_id) await hass.config_entries.async_reload(entry.entry_id)
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: EmonCMSConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@ -5,24 +5,31 @@ from typing import Any
from pyemoncms import EmoncmsClient from pyemoncms import EmoncmsClient
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import CONF_MESSAGE, CONF_SUCCESS, LOGGER from .const import CONF_MESSAGE, CONF_SUCCESS, LOGGER
type EmonCMSConfigEntry = ConfigEntry[EmoncmsCoordinator]
class EmoncmsCoordinator(DataUpdateCoordinator[list[dict[str, Any]] | None]): class EmoncmsCoordinator(DataUpdateCoordinator[list[dict[str, Any]] | None]):
"""Emoncms Data Update Coordinator.""" """Emoncms Data Update Coordinator."""
config_entry: EmonCMSConfigEntry
def __init__( def __init__(
self, self,
hass: HomeAssistant, hass: HomeAssistant,
config_entry: EmonCMSConfigEntry,
emoncms_client: EmoncmsClient, emoncms_client: EmoncmsClient,
) -> None: ) -> None:
"""Initialize the emoncms data coordinator.""" """Initialize the emoncms data coordinator."""
super().__init__( super().__init__(
hass, hass,
LOGGER, LOGGER,
config_entry=config_entry,
name="emoncms_coordinator", name="emoncms_coordinator",
update_interval=timedelta(seconds=60), update_interval=timedelta(seconds=60),
) )

View File

@ -13,7 +13,7 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.config_entries import SOURCE_IMPORT
from homeassistant.const import ( from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
@ -53,7 +53,7 @@ from .const import (
FEED_NAME, FEED_NAME,
FEED_TAG, FEED_TAG,
) )
from .coordinator import EmoncmsCoordinator from .coordinator import EmonCMSConfigEntry, EmoncmsCoordinator
SENSORS: dict[str | None, SensorEntityDescription] = { SENSORS: dict[str | None, SensorEntityDescription] = {
"kWh": SensorEntityDescription( "kWh": SensorEntityDescription(
@ -288,7 +288,7 @@ async def async_setup_platform(
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: EmonCMSConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the emoncms sensors.""" """Set up the emoncms sensors."""