mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Add target_temp_step attribute to water_heater (#138920)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
This commit is contained in:
parent
6e71893b50
commit
463d9617ac
@ -30,10 +30,15 @@ async def async_setup_entry(
|
|||||||
async_add_entities(
|
async_add_entities(
|
||||||
[
|
[
|
||||||
DemoWaterHeater(
|
DemoWaterHeater(
|
||||||
"Demo Water Heater", 119, UnitOfTemperature.FAHRENHEIT, False, "eco"
|
"Demo Water Heater", 119, UnitOfTemperature.FAHRENHEIT, False, "eco", 1
|
||||||
),
|
),
|
||||||
DemoWaterHeater(
|
DemoWaterHeater(
|
||||||
"Demo Water Heater Celsius", 45, UnitOfTemperature.CELSIUS, True, "eco"
|
"Demo Water Heater Celsius",
|
||||||
|
45,
|
||||||
|
UnitOfTemperature.CELSIUS,
|
||||||
|
True,
|
||||||
|
"eco",
|
||||||
|
1,
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -52,6 +57,7 @@ class DemoWaterHeater(WaterHeaterEntity):
|
|||||||
unit_of_measurement: str,
|
unit_of_measurement: str,
|
||||||
away: bool,
|
away: bool,
|
||||||
current_operation: str,
|
current_operation: str,
|
||||||
|
target_temperature_step: float,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize the water_heater device."""
|
"""Initialize the water_heater device."""
|
||||||
self._attr_name = name
|
self._attr_name = name
|
||||||
@ -74,6 +80,7 @@ class DemoWaterHeater(WaterHeaterEntity):
|
|||||||
"gas",
|
"gas",
|
||||||
"off",
|
"off",
|
||||||
]
|
]
|
||||||
|
self._attr_target_temperature_step = target_temperature_step
|
||||||
|
|
||||||
def set_temperature(self, **kwargs: Any) -> None:
|
def set_temperature(self, **kwargs: Any) -> None:
|
||||||
"""Set new target temperatures."""
|
"""Set new target temperatures."""
|
||||||
|
@ -77,6 +77,7 @@ ATTR_OPERATION_MODE = "operation_mode"
|
|||||||
ATTR_OPERATION_LIST = "operation_list"
|
ATTR_OPERATION_LIST = "operation_list"
|
||||||
ATTR_TARGET_TEMP_HIGH = "target_temp_high"
|
ATTR_TARGET_TEMP_HIGH = "target_temp_high"
|
||||||
ATTR_TARGET_TEMP_LOW = "target_temp_low"
|
ATTR_TARGET_TEMP_LOW = "target_temp_low"
|
||||||
|
ATTR_TARGET_TEMP_STEP = "target_temp_step"
|
||||||
ATTR_CURRENT_TEMPERATURE = "current_temperature"
|
ATTR_CURRENT_TEMPERATURE = "current_temperature"
|
||||||
|
|
||||||
CONVERTIBLE_ATTRIBUTE = [ATTR_TEMPERATURE]
|
CONVERTIBLE_ATTRIBUTE = [ATTR_TEMPERATURE]
|
||||||
@ -154,6 +155,7 @@ CACHED_PROPERTIES_WITH_ATTR_ = {
|
|||||||
"target_temperature",
|
"target_temperature",
|
||||||
"target_temperature_high",
|
"target_temperature_high",
|
||||||
"target_temperature_low",
|
"target_temperature_low",
|
||||||
|
"target_temperature_step",
|
||||||
"is_away_mode_on",
|
"is_away_mode_on",
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,7 +164,12 @@ 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(
|
||||||
{ATTR_OPERATION_LIST, ATTR_MIN_TEMP, ATTR_MAX_TEMP}
|
{
|
||||||
|
ATTR_OPERATION_LIST,
|
||||||
|
ATTR_MIN_TEMP,
|
||||||
|
ATTR_MAX_TEMP,
|
||||||
|
ATTR_TARGET_TEMP_STEP,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
entity_description: WaterHeaterEntityDescription
|
entity_description: WaterHeaterEntityDescription
|
||||||
@ -179,6 +186,7 @@ class WaterHeaterEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
_attr_target_temperature_low: float | None = None
|
_attr_target_temperature_low: float | None = None
|
||||||
_attr_target_temperature: float | None = None
|
_attr_target_temperature: float | None = None
|
||||||
_attr_temperature_unit: str
|
_attr_temperature_unit: str
|
||||||
|
_attr_target_temperature_step: float | None = None
|
||||||
|
|
||||||
@final
|
@final
|
||||||
@property
|
@property
|
||||||
@ -206,6 +214,8 @@ class WaterHeaterEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
self.hass, self.max_temp, self.temperature_unit, self.precision
|
self.hass, self.max_temp, self.temperature_unit, self.precision
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
if target_temperature_step := self.target_temperature_step:
|
||||||
|
data[ATTR_TARGET_TEMP_STEP] = target_temperature_step
|
||||||
|
|
||||||
if WaterHeaterEntityFeature.OPERATION_MODE in self.supported_features:
|
if WaterHeaterEntityFeature.OPERATION_MODE in self.supported_features:
|
||||||
data[ATTR_OPERATION_LIST] = self.operation_list
|
data[ATTR_OPERATION_LIST] = self.operation_list
|
||||||
@ -289,6 +299,11 @@ class WaterHeaterEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
"""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
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def target_temperature_step(self) -> float | None:
|
||||||
|
"""Return the supported step of target temperature."""
|
||||||
|
return self._attr_target_temperature_step
|
||||||
|
|
||||||
@cached_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."""
|
||||||
|
@ -43,6 +43,7 @@ async def test_setup_params(hass: HomeAssistant) -> None:
|
|||||||
assert state.attributes.get("temperature") == 119
|
assert state.attributes.get("temperature") == 119
|
||||||
assert state.attributes.get("away_mode") == "off"
|
assert state.attributes.get("away_mode") == "off"
|
||||||
assert state.attributes.get("operation_mode") == "eco"
|
assert state.attributes.get("operation_mode") == "eco"
|
||||||
|
assert state.attributes.get("target_temp_step") == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_default_setup_params(hass: HomeAssistant) -> None:
|
async def test_default_setup_params(hass: HomeAssistant) -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user