1 """Helper to test significant Climate state changes."""
3 from __future__
import annotations
10 check_absolute_change,
16 ATTR_CURRENT_HUMIDITY,
17 ATTR_CURRENT_TEMPERATURE,
22 ATTR_SWING_HORIZONTAL_MODE,
24 ATTR_TARGET_TEMP_HIGH,
29 SIGNIFICANT_ATTRIBUTES: set[str] = {
31 ATTR_CURRENT_HUMIDITY,
32 ATTR_CURRENT_TEMPERATURE,
38 ATTR_SWING_HORIZONTAL_MODE,
39 ATTR_TARGET_TEMP_HIGH,
54 """Test if state significantly changed."""
55 if old_state != new_state:
59 {k: v
for k, v
in old_attrs.items()
if k
in SIGNIFICANT_ATTRIBUTES}.items()
62 {k: v
for k, v
in new_attrs.items()
if k
in SIGNIFICANT_ATTRIBUTES}.items()
65 changed_attrs: set[str] = {item[0]
for item
in old_attrs_s ^ new_attrs_s}
66 ha_unit = hass.config.units.temperature_unit
68 for attr_name
in changed_attrs:
75 ATTR_SWING_HORIZONTAL_MODE,
79 old_attr_value = old_attrs.get(attr_name)
80 new_attr_value = new_attrs.get(attr_name)
89 absolute_change: float |
None =
None
91 ATTR_CURRENT_TEMPERATURE,
92 ATTR_TARGET_TEMP_HIGH,
96 if ha_unit == UnitOfTemperature.FAHRENHEIT:
101 if attr_name
in [ATTR_CURRENT_HUMIDITY, ATTR_HUMIDITY]:
102 absolute_change = 1.0
105 old_attr_value, new_attr_value, absolute_change
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)