1 """Helper to test significant Water Heater state changes."""
3 from __future__
import annotations
10 check_absolute_change,
16 ATTR_CURRENT_TEMPERATURE,
18 ATTR_TARGET_TEMP_HIGH,
23 SIGNIFICANT_ATTRIBUTES: set[str] = {
24 ATTR_CURRENT_TEMPERATURE,
26 ATTR_TARGET_TEMP_HIGH,
42 """Test if state significantly changed."""
43 if old_state != new_state:
47 {k: v
for k, v
in old_attrs.items()
if k
in SIGNIFICANT_ATTRIBUTES}.items()
50 {k: v
for k, v
in new_attrs.items()
if k
in SIGNIFICANT_ATTRIBUTES}.items()
52 changed_attrs: set[str] = {item[0]
for item
in old_attrs_s ^ new_attrs_s}
53 ha_unit = hass.config.units.temperature_unit
55 for attr_name
in changed_attrs:
56 if attr_name
in [ATTR_OPERATION_MODE, ATTR_AWAY_MODE]:
59 old_attr_value = old_attrs.get(attr_name)
60 new_attr_value = new_attrs.get(attr_name)
69 if ha_unit == UnitOfTemperature.FAHRENHEIT:
bool|None async_check_significant_change(HomeAssistant hass, str old_state, dict old_attrs, str new_state, dict new_attrs, **Any kwargs)
bool check_absolute_change(float|None val1, float|None val2, float change)
bool check_valid_float(str|float value)