mirror of
https://github.com/home-assistant/core.git
synced 2025-07-09 06:17:07 +00:00
Add support for attribute caching to the water_heater platform (#106336)
This commit is contained in:
parent
38e79bbf9d
commit
24b14d07de
@ -6,7 +6,7 @@ from datetime import timedelta
|
|||||||
from enum import IntFlag
|
from enum import IntFlag
|
||||||
import functools as ft
|
import functools as ft
|
||||||
import logging
|
import logging
|
||||||
from typing import Any, final
|
from typing import TYPE_CHECKING, Any, final
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
@ -39,6 +39,12 @@ from homeassistant.helpers.temperature import display_temp as show_temp
|
|||||||
from homeassistant.helpers.typing import ConfigType
|
from homeassistant.helpers.typing import ConfigType
|
||||||
from homeassistant.util.unit_conversion import TemperatureConverter
|
from homeassistant.util.unit_conversion import TemperatureConverter
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from functools import cached_property
|
||||||
|
else:
|
||||||
|
from homeassistant.backports.functools import cached_property
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_MIN_TEMP = 110
|
DEFAULT_MIN_TEMP = 110
|
||||||
DEFAULT_MAX_TEMP = 140
|
DEFAULT_MAX_TEMP = 140
|
||||||
|
|
||||||
@ -174,7 +180,19 @@ class WaterHeaterEntityEntityDescription(EntityDescription, frozen_or_thawed=Tru
|
|||||||
"""A class that describes water heater entities."""
|
"""A class that describes water heater entities."""
|
||||||
|
|
||||||
|
|
||||||
class WaterHeaterEntity(Entity):
|
CACHED_PROPERTIES_WITH_ATTR_ = {
|
||||||
|
"temperature_unit",
|
||||||
|
"current_operation",
|
||||||
|
"operation_list",
|
||||||
|
"current_temperature",
|
||||||
|
"target_temperature",
|
||||||
|
"target_temperature_high",
|
||||||
|
"target_temperature_low",
|
||||||
|
"is_away_mode_on",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class WaterHeaterEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
||||||
"""Base class for water heater entities."""
|
"""Base class for water heater entities."""
|
||||||
|
|
||||||
_entity_component_unrecorded_attributes = frozenset(
|
_entity_component_unrecorded_attributes = frozenset(
|
||||||
@ -268,42 +286,42 @@ class WaterHeaterEntity(Entity):
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def temperature_unit(self) -> str:
|
def temperature_unit(self) -> str:
|
||||||
"""Return the unit of measurement used by the platform."""
|
"""Return the unit of measurement used by the platform."""
|
||||||
return self._attr_temperature_unit
|
return self._attr_temperature_unit
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def current_operation(self) -> str | None:
|
def current_operation(self) -> str | None:
|
||||||
"""Return current operation ie. eco, electric, performance, ..."""
|
"""Return current operation ie. eco, electric, performance, ..."""
|
||||||
return self._attr_current_operation
|
return self._attr_current_operation
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def operation_list(self) -> list[str] | None:
|
def operation_list(self) -> list[str] | None:
|
||||||
"""Return the list of available operation modes."""
|
"""Return the list of available operation modes."""
|
||||||
return self._attr_operation_list
|
return self._attr_operation_list
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def current_temperature(self) -> float | None:
|
def current_temperature(self) -> float | None:
|
||||||
"""Return the current temperature."""
|
"""Return the current temperature."""
|
||||||
return self._attr_current_temperature
|
return self._attr_current_temperature
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def target_temperature(self) -> float | None:
|
def target_temperature(self) -> float | None:
|
||||||
"""Return the temperature we try to reach."""
|
"""Return the temperature we try to reach."""
|
||||||
return self._attr_target_temperature
|
return self._attr_target_temperature
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def target_temperature_high(self) -> float | None:
|
def target_temperature_high(self) -> float | None:
|
||||||
"""Return the highbound target temperature we try to reach."""
|
"""Return the highbound target temperature we try to reach."""
|
||||||
return self._attr_target_temperature_high
|
return self._attr_target_temperature_high
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def target_temperature_low(self) -> float | None:
|
def target_temperature_low(self) -> float | None:
|
||||||
"""Return the lowbound target temperature we try to reach."""
|
"""Return the lowbound target temperature we try to reach."""
|
||||||
return self._attr_target_temperature_low
|
return self._attr_target_temperature_low
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def is_away_mode_on(self) -> bool | None:
|
def is_away_mode_on(self) -> bool | None:
|
||||||
"""Return true if away mode is on."""
|
"""Return true if away mode is on."""
|
||||||
return self._attr_is_away_mode_on
|
return self._attr_is_away_mode_on
|
||||||
|
Loading…
x
Reference in New Issue
Block a user