Files
core/homeassistant/components/modern_forms/number.py
T
2026-08-25 20:06:15 +02:00

60 lines
1.9 KiB
Python

"""Support for Modern Forms numbers."""
from typing import override
from homeassistant.components.number import NumberEntity
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import modernforms_exception_handler
from .coordinator import ModernFormsConfigEntry, ModernFormsDataUpdateCoordinator
from .entity import ModernFormsDeviceEntity
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ModernFormsConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up Modern Forms number based on a config entry."""
coordinator = config_entry.runtime_data
if not coordinator.data.has_wind():
return
async_add_entities(
[ModernFormsBreezeIntensityNumber(config_entry.entry_id, coordinator)]
)
class ModernFormsBreezeIntensityNumber(ModernFormsDeviceEntity, NumberEntity):
"""Defines a Modern Forms breeze intensity number."""
_attr_translation_key = "breeze_intensity"
_attr_entity_category = EntityCategory.CONFIG
_attr_native_min_value = 1
_attr_native_max_value = 3
_attr_native_step = 1
def __init__(
self, entry_id: str, coordinator: ModernFormsDataUpdateCoordinator
) -> None:
"""Initialize Modern Forms breeze intensity number."""
super().__init__(entry_id=entry_id, coordinator=coordinator)
self._attr_unique_id = (
f"{self.coordinator.data.info.mac_address}_breeze_intensity"
)
@property
@override
def native_value(self) -> int:
"""Return the current breeze intensity."""
return self.coordinator.data.state.wind_speed
@modernforms_exception_handler
@override
async def async_set_native_value(self, value: float) -> None:
"""Set the breeze intensity."""
await self.coordinator.modern_forms.fan(wind_speed=int(value))