mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 15:17:35 +00:00
Add support for setting NumberMode using NumberEntityDescription (#92427)
This commit is contained in:
parent
7d00804f13
commit
7b8936b420
@ -27,7 +27,6 @@ class BAFNumberDescriptionMixin:
|
|||||||
"""Required values for BAF sensors."""
|
"""Required values for BAF sensors."""
|
||||||
|
|
||||||
value_fn: Callable[[Device], int | None]
|
value_fn: Callable[[Device], int | None]
|
||||||
mode: NumberMode
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -147,7 +146,6 @@ class BAFNumber(BAFEntity, NumberEntity):
|
|||||||
self.entity_description = description
|
self.entity_description = description
|
||||||
super().__init__(device, f"{device.name} {description.name}")
|
super().__init__(device, f"{device.name} {description.name}")
|
||||||
self._attr_unique_id = f"{self._device.mac_address}-{description.key}"
|
self._attr_unique_id = f"{self._device.mac_address}-{description.key}"
|
||||||
self._attr_mode = description.mode
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_update_attrs(self) -> None:
|
def _async_update_attrs(self) -> None:
|
||||||
|
@ -40,7 +40,6 @@ class BMWNumberEntityDescription(NumberEntityDescription, BMWRequiredKeysMixin):
|
|||||||
|
|
||||||
is_available: Callable[[MyBMWVehicle], bool] = lambda _: False
|
is_available: Callable[[MyBMWVehicle], bool] = lambda _: False
|
||||||
dynamic_options: Callable[[MyBMWVehicle], list[str]] | None = None
|
dynamic_options: Callable[[MyBMWVehicle], list[str]] | None = None
|
||||||
mode: NumberMode = NumberMode.AUTO
|
|
||||||
|
|
||||||
|
|
||||||
NUMBER_TYPES: list[BMWNumberEntityDescription] = [
|
NUMBER_TYPES: list[BMWNumberEntityDescription] = [
|
||||||
@ -99,7 +98,6 @@ class BMWNumber(BMWBaseEntity, NumberEntity):
|
|||||||
super().__init__(coordinator, vehicle)
|
super().__init__(coordinator, vehicle)
|
||||||
self.entity_description = description
|
self.entity_description = description
|
||||||
self._attr_unique_id = f"{vehicle.vin}-{description.key}"
|
self._attr_unique_id = f"{vehicle.vin}-{description.key}"
|
||||||
self._attr_mode = description.mode
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def native_value(self) -> float | None:
|
def native_value(self) -> float | None:
|
||||||
|
@ -127,10 +127,11 @@ class NumberEntityDescription(EntityDescription):
|
|||||||
device_class: NumberDeviceClass | None = None
|
device_class: NumberDeviceClass | None = None
|
||||||
max_value: None = None
|
max_value: None = None
|
||||||
min_value: None = None
|
min_value: None = None
|
||||||
|
mode: NumberMode | None = None
|
||||||
native_max_value: float | None = None
|
native_max_value: float | None = None
|
||||||
native_min_value: float | None = None
|
native_min_value: float | None = None
|
||||||
native_unit_of_measurement: str | None = None
|
|
||||||
native_step: float | None = None
|
native_step: float | None = None
|
||||||
|
native_unit_of_measurement: str | None = None
|
||||||
step: None = None
|
step: None = None
|
||||||
unit_of_measurement: None = None # Type override, use native_unit_of_measurement
|
unit_of_measurement: None = None # Type override, use native_unit_of_measurement
|
||||||
|
|
||||||
@ -193,7 +194,7 @@ class NumberEntity(Entity):
|
|||||||
_attr_device_class: NumberDeviceClass | None
|
_attr_device_class: NumberDeviceClass | None
|
||||||
_attr_max_value: None
|
_attr_max_value: None
|
||||||
_attr_min_value: None
|
_attr_min_value: None
|
||||||
_attr_mode: NumberMode = NumberMode.AUTO
|
_attr_mode: NumberMode
|
||||||
_attr_state: None = None
|
_attr_state: None = None
|
||||||
_attr_step: None
|
_attr_step: None
|
||||||
_attr_unit_of_measurement: None # Subclasses of NumberEntity should not set this
|
_attr_unit_of_measurement: None # Subclasses of NumberEntity should not set this
|
||||||
@ -201,8 +202,8 @@ class NumberEntity(Entity):
|
|||||||
_attr_native_max_value: float
|
_attr_native_max_value: float
|
||||||
_attr_native_min_value: float
|
_attr_native_min_value: float
|
||||||
_attr_native_step: float
|
_attr_native_step: float
|
||||||
_attr_native_value: float | None = None
|
|
||||||
_attr_native_unit_of_measurement: str | None
|
_attr_native_unit_of_measurement: str | None
|
||||||
|
_attr_native_value: float | None = None
|
||||||
_deprecated_number_entity_reported = False
|
_deprecated_number_entity_reported = False
|
||||||
_number_option_unit_of_measurement: str | None = None
|
_number_option_unit_of_measurement: str | None = None
|
||||||
|
|
||||||
@ -357,7 +358,14 @@ class NumberEntity(Entity):
|
|||||||
@property
|
@property
|
||||||
def mode(self) -> NumberMode:
|
def mode(self) -> NumberMode:
|
||||||
"""Return the mode of the entity."""
|
"""Return the mode of the entity."""
|
||||||
|
if hasattr(self, "_attr_mode"):
|
||||||
return self._attr_mode
|
return self._attr_mode
|
||||||
|
if (
|
||||||
|
hasattr(self, "entity_description")
|
||||||
|
and self.entity_description.mode is not None
|
||||||
|
):
|
||||||
|
return self.entity_description.mode
|
||||||
|
return NumberMode.AUTO
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@final
|
@final
|
||||||
|
@ -30,7 +30,6 @@ from .entity import (
|
|||||||
class BlockNumberDescription(BlockEntityDescription, NumberEntityDescription):
|
class BlockNumberDescription(BlockEntityDescription, NumberEntityDescription):
|
||||||
"""Class to describe a BLOCK sensor."""
|
"""Class to describe a BLOCK sensor."""
|
||||||
|
|
||||||
mode: NumberMode = NumberMode("slider")
|
|
||||||
rest_path: str = ""
|
rest_path: str = ""
|
||||||
rest_arg: str = ""
|
rest_arg: str = ""
|
||||||
|
|
||||||
@ -46,7 +45,7 @@ NUMBERS: Final = {
|
|||||||
native_min_value=0,
|
native_min_value=0,
|
||||||
native_max_value=100,
|
native_max_value=100,
|
||||||
native_step=1,
|
native_step=1,
|
||||||
mode=NumberMode("slider"),
|
mode=NumberMode.SLIDER,
|
||||||
rest_path="thermostat/0",
|
rest_path="thermostat/0",
|
||||||
rest_arg="pos",
|
rest_arg="pos",
|
||||||
),
|
),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user