Files
core/homeassistant/components/huum/number.py
Vincent Wolsink c2b284de2d Add humidity (steamer) control to Huum (#150330)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-08-10 21:55:20 +02:00

65 lines
1.9 KiB
Python

"""Control for steamer."""
from __future__ import annotations
import logging
from huum.const import SaunaStatus
from homeassistant.components.number import NumberEntity
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .const import CONFIG_STEAMER, CONFIG_STEAMER_AND_LIGHT
from .coordinator import HuumConfigEntry, HuumDataUpdateCoordinator
from .entity import HuumBaseEntity
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
hass: HomeAssistant,
config_entry: HuumConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up steamer if applicable."""
coordinator = config_entry.runtime_data
# Light is configured for this sauna.
if coordinator.data.config in [CONFIG_STEAMER, CONFIG_STEAMER_AND_LIGHT]:
async_add_entities([HuumSteamer(coordinator)])
class HuumSteamer(HuumBaseEntity, NumberEntity):
"""Representation of a steamer."""
_attr_translation_key = "humidity"
_attr_native_max_value = 10
_attr_native_min_value = 0
_attr_native_step = 1
def __init__(self, coordinator: HuumDataUpdateCoordinator) -> None:
"""Initialize the steamer."""
super().__init__(coordinator)
self._attr_unique_id = coordinator.config_entry.entry_id
@property
def native_value(self) -> float:
"""Return the current value."""
return self.coordinator.data.humidity
async def async_set_native_value(self, value: float) -> None:
"""Update the current value."""
target_temperature = self.coordinator.data.target_temperature
if (
not target_temperature
or self.coordinator.data.status != SaunaStatus.ONLINE_HEATING
):
return
await self.coordinator.huum.turn_on(
temperature=target_temperature, humidity=int(value)
)
await self.coordinator.async_refresh()