diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index e2bf555cc49..f3aff44ff4d 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -172,17 +172,11 @@ class ClimateDevice(Entity): return PRECISION_WHOLE @property - def state_attributes(self) -> Dict[str, Any]: - """Return the optional state attributes.""" + def capability_attributes(self) -> Optional[Dict[str, Any]]: + """Return the capability attributes.""" supported_features = self.supported_features data = { ATTR_HVAC_MODES: self.hvac_modes, - ATTR_CURRENT_TEMPERATURE: show_temp( - self.hass, - self.current_temperature, - self.temperature_unit, - self.precision, - ), ATTR_MIN_TEMP: show_temp( self.hass, self.min_temp, self.temperature_unit, self.precision ), @@ -194,6 +188,34 @@ class ClimateDevice(Entity): if self.target_temperature_step: data[ATTR_TARGET_TEMP_STEP] = self.target_temperature_step + if supported_features & SUPPORT_TARGET_HUMIDITY: + data[ATTR_MIN_HUMIDITY] = self.min_humidity + data[ATTR_MAX_HUMIDITY] = self.max_humidity + + if supported_features & SUPPORT_FAN_MODE: + data[ATTR_FAN_MODES] = self.fan_modes + + if supported_features & SUPPORT_PRESET_MODE: + data[ATTR_PRESET_MODES] = self.preset_modes + + if supported_features & SUPPORT_SWING_MODE: + data[ATTR_SWING_MODES] = self.swing_modes + + return data + + @property + def state_attributes(self) -> Dict[str, Any]: + """Return the optional state attributes.""" + supported_features = self.supported_features + data = { + ATTR_CURRENT_TEMPERATURE: show_temp( + self.hass, + self.current_temperature, + self.temperature_unit, + self.precision, + ), + } + if supported_features & SUPPORT_TARGET_TEMPERATURE: data[ATTR_TEMPERATURE] = show_temp( self.hass, @@ -221,23 +243,18 @@ class ClimateDevice(Entity): if supported_features & SUPPORT_TARGET_HUMIDITY: data[ATTR_HUMIDITY] = self.target_humidity - data[ATTR_MIN_HUMIDITY] = self.min_humidity - data[ATTR_MAX_HUMIDITY] = self.max_humidity if supported_features & SUPPORT_FAN_MODE: data[ATTR_FAN_MODE] = self.fan_mode - data[ATTR_FAN_MODES] = self.fan_modes if self.hvac_action: data[ATTR_HVAC_ACTION] = self.hvac_action if supported_features & SUPPORT_PRESET_MODE: data[ATTR_PRESET_MODE] = self.preset_mode - data[ATTR_PRESET_MODES] = self.preset_modes if supported_features & SUPPORT_SWING_MODE: data[ATTR_SWING_MODE] = self.swing_mode - data[ATTR_SWING_MODES] = self.swing_modes if supported_features & SUPPORT_AUX_HEAT: data[ATTR_AUX_HEAT] = STATE_ON if self.is_aux_heat else STATE_OFF