epenet acb9d68706
Use runtime_data in dynalite (#136448)
* Use runtime_data in dynalite

* Delay listener
2025-01-27 10:16:33 +01:00

58 lines
2.0 KiB
Python

"""Support for the Dynalite networks."""
from __future__ import annotations
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.typing import ConfigType
from .bridge import DynaliteBridge
from .const import DOMAIN, LOGGER, PLATFORMS
from .convert_config import convert_config
from .panel import async_register_dynalite_frontend
from .services import setup_services
CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
type DynaliteConfigEntry = ConfigEntry[DynaliteBridge]
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Dynalite platform."""
setup_services(hass)
await async_register_dynalite_frontend(hass)
return True
async def async_entry_changed(hass: HomeAssistant, entry: DynaliteConfigEntry) -> None:
"""Reload entry since the data has changed."""
LOGGER.debug("Reconfiguring entry %s", entry.data)
bridge = entry.runtime_data
bridge.reload_config(entry.data)
LOGGER.debug("Reconfiguring entry finished %s", entry.data)
async def async_setup_entry(hass: HomeAssistant, entry: DynaliteConfigEntry) -> bool:
"""Set up a bridge from a config entry."""
LOGGER.debug("Setting up entry %s", entry.data)
bridge = DynaliteBridge(hass, convert_config(entry.data))
if not await bridge.async_setup():
LOGGER.error("Could not set up bridge for entry %s", entry.data)
raise ConfigEntryNotReady
entry.runtime_data = bridge
entry.async_on_unload(entry.add_update_listener(async_entry_changed))
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: DynaliteConfigEntry) -> bool:
"""Unload a config entry."""
LOGGER.debug("Unloading entry %s", entry.data)
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)