diff --git a/homeassistant/components/overkiz/number.py b/homeassistant/components/overkiz/number.py index c15a7bd3acc..b53dbb5db75 100644 --- a/homeassistant/components/overkiz/number.py +++ b/homeassistant/components/overkiz/number.py @@ -20,6 +20,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import HomeAssistantOverkizData from .const import DOMAIN, IGNORED_OVERKIZ_DEVICES +from .coordinator import OverkizDataUpdateCoordinator from .entity import OverkizDescriptiveEntity BOOST_MODE_DURATION_DELAY = 1 @@ -37,6 +38,8 @@ class OverkizNumberDescriptionMixin: class OverkizNumberDescription(NumberEntityDescription, OverkizNumberDescriptionMixin): """Class to describe an Overkiz number.""" + min_value_state_name: str | None = None + max_value_state_name: str | None = None inverted: bool = False set_native_value: Callable[ [float, Callable[..., Awaitable[None]]], Awaitable[None] @@ -94,6 +97,8 @@ NUMBER_DESCRIPTIONS: list[OverkizNumberDescription] = [ command=OverkizCommand.SET_EXPECTED_NUMBER_OF_SHOWER, native_min_value=2, native_max_value=4, + min_value_state_name=OverkizState.CORE_MINIMAL_SHOWER_MANUAL_MODE, + max_value_state_name=OverkizState.CORE_MAXIMAL_SHOWER_MANUAL_MODE, entity_category=EntityCategory.CONFIG, ), # SomfyHeatingTemperatureInterface @@ -200,6 +205,29 @@ class OverkizNumber(OverkizDescriptiveEntity, NumberEntity): entity_description: OverkizNumberDescription + def __init__( + self, + device_url: str, + coordinator: OverkizDataUpdateCoordinator, + description: OverkizNumberDescription, + ) -> None: + """Initialize a device.""" + super().__init__(device_url, coordinator, description) + + if self.entity_description.min_value_state_name and ( + state := self.device.states.get( + self.entity_description.min_value_state_name + ) + ): + self._attr_native_min_value = cast(float, state.value) + + if self.entity_description.max_value_state_name and ( + state := self.device.states.get( + self.entity_description.max_value_state_name + ) + ): + self._attr_native_max_value = cast(float, state.value) + @property def native_value(self) -> float | None: """Return the entity value to represent the entity state."""