"""Helper functions for the homee custom component.""" from collections.abc import Callable, Coroutine from enum import IntEnum import logging from typing import Any from pyHomee.model import HomeeNode from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from . import HomeeConfigEntry _LOGGER = logging.getLogger(__name__) async def setup_homee_platform( hass: HomeAssistant, add_platform_entities: Callable[ [ HomeAssistant, HomeeConfigEntry, AddConfigEntryEntitiesCallback, list[HomeeNode], ], Coroutine[Any, Any, None], ], async_add_entities: AddConfigEntryEntitiesCallback, config_entry: HomeeConfigEntry, ) -> None: """Set up a homee platform.""" await add_platform_entities( hass, config_entry, async_add_entities, config_entry.runtime_data.nodes ) async def add_device(node: HomeeNode, add: bool) -> None: """Dynamically add entities.""" if add: await add_platform_entities(hass, config_entry, async_add_entities, [node]) config_entry.async_on_unload( config_entry.runtime_data.add_nodes_listener(add_device) ) def get_name_for_enum(att_class: type[IntEnum], att_id: int) -> str | None: """Return the enum item name for a given integer.""" try: item = att_class(att_id) except ValueError: _LOGGER.warning("Value %s does not exist in %s", att_id, att_class.__name__) return None return item.name.lower()