CEZ_rele_box/custom_components/xt211_han/__init__.py

50 lines
1.4 KiB
Python

"""XT211 HAN integration for Home Assistant."""
from __future__ import annotations
import logging
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PORT, Platform
from homeassistant.core import HomeAssistant
from .const import DEFAULT_NAME, DOMAIN
from .coordinator import XT211Coordinator
_LOGGER = logging.getLogger(__name__)
PLATFORMS = [Platform.SENSOR, Platform.BINARY_SENSOR]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data.setdefault(DOMAIN, {})
coordinator = XT211Coordinator(
hass,
host=entry.data[CONF_HOST],
port=entry.data[CONF_PORT],
name=entry.data.get(CONF_NAME, DEFAULT_NAME),
)
hass.data[DOMAIN][entry.entry_id] = coordinator
await coordinator.async_setup()
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
_LOGGER.info(
"XT211 HAN integration started for %s:%d",
entry.data[CONF_HOST],
entry.data[CONF_PORT],
)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
coordinator: XT211Coordinator | None = hass.data[DOMAIN].get(entry.entry_id)
if coordinator:
await coordinator.async_shutdown()
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id, None)
return unload_ok