From 2016cf872efea6f40f054472f1c04e7cc73014d7 Mon Sep 17 00:00:00 2001 From: geekofweek Date: Thu, 18 Jul 2019 12:39:53 -0500 Subject: [PATCH] ecobee Preset Fix (#25256) * ecobee Preset Fix * Celsius Fix * Checks Fix * Check Fix #2 * Check Fix #3 --- homeassistant/components/ecobee/climate.py | 26 +++++++++++++--------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/ecobee/climate.py b/homeassistant/components/ecobee/climate.py index cd5c6fc666fb0..3b034d4a83816 100644 --- a/homeassistant/components/ecobee/climate.py +++ b/homeassistant/components/ecobee/climate.py @@ -31,6 +31,8 @@ PRESET_HOLD_NEXT_TRANSITION = 'next_transition' PRESET_HOLD_INDEFINITE = 'indefinite' AWAY_MODE = 'awayMode' +PRESET_HOME = 'home' +PRESET_SLEEP = 'sleep' # Order matters, because for reverse mapping we don't want to map HEAT to AUX ECOBEE_HVAC_TO_HASS = collections.OrderedDict([ @@ -48,9 +50,8 @@ PRESET_MODES = [ PRESET_AWAY, - PRESET_TEMPERATURE, - PRESET_HOLD_NEXT_TRANSITION, - PRESET_HOLD_INDEFINITE + PRESET_HOME, + PRESET_SLEEP ] SERVICE_SET_FAN_MIN_ON_TIME = 'ecobee_set_fan_min_on_time' @@ -305,9 +306,9 @@ def is_aux_heat(self): """Return true if aux heater.""" return 'auxHeat' in self.thermostat['equipmentStatus'] - def set_preset(self, preset): + def set_preset_mode(self, preset_mode): """Activate a preset.""" - if preset == self.preset_mode: + if preset_mode == self.preset_mode: return self.update_without_throttle = True @@ -317,23 +318,26 @@ def set_preset(self, preset): self.data.ecobee.delete_vacation( self.thermostat_index, self.vacation) - if preset == PRESET_AWAY: + if preset_mode == PRESET_AWAY: self.data.ecobee.set_climate_hold(self.thermostat_index, 'away', 'indefinite') - elif preset == PRESET_TEMPERATURE: + elif preset_mode == PRESET_TEMPERATURE: self.set_temp_hold(self.current_temperature) - elif preset in (PRESET_HOLD_NEXT_TRANSITION, PRESET_HOLD_INDEFINITE): + elif preset_mode in ( + PRESET_HOLD_NEXT_TRANSITION, PRESET_HOLD_INDEFINITE): self.data.ecobee.set_climate_hold( - self.thermostat_index, PRESET_TO_ECOBEE_HOLD[preset], + self.thermostat_index, PRESET_TO_ECOBEE_HOLD[preset_mode], self.hold_preference()) - elif preset is None: + elif preset_mode is None: self.data.ecobee.resume_program(self.thermostat_index) else: - _LOGGER.warning("Received invalid preset: %s", preset) + self.data.ecobee.set_climate_hold( + self.thermostat_index, preset_mode, self.hold_preference()) + self.update_without_throttle = True @property def preset_modes(self):