Enforce NumberDeviceClass in number entities (#83402)
This commit is contained in:
parent
647469f472
commit
ba0d6fe611
3 changed files with 14 additions and 3 deletions
|
@ -9,11 +9,11 @@ import logging
|
|||
from kostal.plenticore import SettingsData
|
||||
|
||||
from homeassistant.components.number import (
|
||||
NumberDeviceClass,
|
||||
NumberEntity,
|
||||
NumberEntityDescription,
|
||||
NumberMode,
|
||||
)
|
||||
from homeassistant.components.sensor import SensorDeviceClass
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import PERCENTAGE, POWER_WATT
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
@ -62,7 +62,7 @@ NUMBER_SETTINGS_DATA = [
|
|||
),
|
||||
PlenticoreNumberEntityDescription(
|
||||
key="battery_min_home_consumption",
|
||||
device_class=SensorDeviceClass.POWER,
|
||||
device_class=NumberDeviceClass.POWER,
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
entity_registry_enabled_default=False,
|
||||
name="Battery min Home Consumption",
|
||||
|
|
|
@ -376,6 +376,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
class NumberEntityDescription(EntityDescription):
|
||||
"""A class that describes number entities."""
|
||||
|
||||
device_class: NumberDeviceClass | None = None
|
||||
max_value: None = None
|
||||
min_value: None = None
|
||||
native_max_value: float | None = None
|
||||
|
@ -437,6 +438,7 @@ class NumberEntity(Entity):
|
|||
"""Representation of a Number entity."""
|
||||
|
||||
entity_description: NumberEntityDescription
|
||||
_attr_device_class: NumberDeviceClass | None
|
||||
_attr_max_value: None
|
||||
_attr_min_value: None
|
||||
_attr_mode: NumberMode = NumberMode.AUTO
|
||||
|
@ -501,6 +503,15 @@ class NumberEntity(Entity):
|
|||
ATTR_MODE: self.mode,
|
||||
}
|
||||
|
||||
@property
|
||||
def device_class(self) -> NumberDeviceClass | None:
|
||||
"""Return the class of this entity."""
|
||||
if hasattr(self, "_attr_device_class"):
|
||||
return self._attr_device_class
|
||||
if hasattr(self, "entity_description"):
|
||||
return self.entity_description.device_class
|
||||
return None
|
||||
|
||||
@property
|
||||
def native_min_value(self) -> float:
|
||||
"""Return the minimum value."""
|
||||
|
|
|
@ -1987,7 +1987,7 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = {
|
|||
matches=[
|
||||
TypeHintMatch(
|
||||
function_name="device_class",
|
||||
return_type=["NumberDeviceClass", "str", None],
|
||||
return_type=["NumberDeviceClass", None],
|
||||
),
|
||||
TypeHintMatch(
|
||||
function_name="capability_attributes",
|
||||
|
|
Loading…
Add table
Reference in a new issue