From 294a1114799f7817f96287d916c2f68037a93c63 Mon Sep 17 00:00:00 2001 From: Jack Simbach Date: Mon, 31 Jul 2023 21:54:34 -0400 Subject: [PATCH] - added humidifier platform --- custom_components/ge_home/humidifier.py | 36 +++++++++++++++++++ .../ge_home/update_coordinator.py | 13 ++++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 custom_components/ge_home/humidifier.py diff --git a/custom_components/ge_home/humidifier.py b/custom_components/ge_home/humidifier.py new file mode 100644 index 0000000..4d1ed11 --- /dev/null +++ b/custom_components/ge_home/humidifier.py @@ -0,0 +1,36 @@ +"""GE Home Humidifier Entities""" +import logging +from typing import Callable + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers.dispatcher import async_dispatcher_connect +from homeassistant.helpers import entity_registry as er + +from .entities import GeHumidifier +from .const import DOMAIN +from .devices import ApplianceApi +from .update_coordinator import GeHomeUpdateCoordinator + +_LOGGER = logging.getLogger(__name__) + +async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: Callable): + """GE Home Water Heaters.""" + _LOGGER.debug('Adding GE "Humidifiers"') + coordinator: GeHomeUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + registry = er.async_get(hass) + + @callback + def async_devices_discovered(apis: list[ApplianceApi]): + _LOGGER.debug(f'Found {len(apis):d} appliance APIs') + entities = [ + entity + for api in apis + for entity in api.entities + if isinstance(entity, GeHumidifier) + if not registry.async_is_registered(entity.entity_id) + ] + _LOGGER.debug(f'Found {len(entities):d} unregistered humidifiers') + async_add_entities(entities) + + async_dispatcher_connect(hass, coordinator.signal_ready, async_devices_discovered) diff --git a/custom_components/ge_home/update_coordinator.py b/custom_components/ge_home/update_coordinator.py index c0b525f..b846bb4 100644 --- a/custom_components/ge_home/update_coordinator.py +++ b/custom_components/ge_home/update_coordinator.py @@ -35,7 +35,18 @@ from .const import ( ) from .devices import ApplianceApi, get_appliance_api_type -PLATFORMS = ["binary_sensor", "sensor", "switch", "water_heater", "select", "climate", "light", "button", "number"] +PLATFORMS = [ + "binary_sensor", + "sensor", + "switch", + "water_heater", + "select", + "climate", + "light", + "button", + "number", + "humidifier" +] _LOGGER = logging.getLogger(__name__)