From b5e296238fe7330392dd784a50af822fb1a5aa48 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 1 Aug 2019 16:32:43 -0700 Subject: [PATCH] Add preset to be away and eco (#25643) --- homeassistant/components/nest/climate.py | 27 ++++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/nest/climate.py b/homeassistant/components/nest/climate.py index ac13f2b004f..dc4b0bd33ae 100644 --- a/homeassistant/components/nest/climate.py +++ b/homeassistant/components/nest/climate.py @@ -61,7 +61,9 @@ ACTION_NEST_TO_HASS = { "cooling": CURRENT_HVAC_COOL, } -PRESET_MODES = [PRESET_NONE, PRESET_AWAY, PRESET_ECO] +PRESET_AWAY_AND_ECO = "Away and Eco" + +PRESET_MODES = [PRESET_NONE, PRESET_AWAY, PRESET_ECO, PRESET_AWAY_AND_ECO] def setup_platform(hass, config, add_entities, discovery_info=None): @@ -259,6 +261,9 @@ class NestThermostat(ClimateDevice): @property def preset_mode(self): """Return current preset mode.""" + if self._away and self._mode == NEST_MODE_ECO: + return PRESET_AWAY_AND_ECO + if self._away: return PRESET_AWAY @@ -277,15 +282,19 @@ class NestThermostat(ClimateDevice): if preset_mode == self.preset_mode: return - if self._away: - self.structure.away = False - elif preset_mode == PRESET_AWAY: - self.structure.away = True + need_away = preset_mode in (PRESET_AWAY, PRESET_AWAY_AND_ECO) + need_eco = preset_mode in (PRESET_ECO, PRESET_AWAY_AND_ECO) + is_away = self._away + is_eco = self._mode == NEST_MODE_ECO - if self.preset_mode == PRESET_ECO: - self.device.mode = MODE_HASS_TO_NEST[self._operation_list[0]] - elif preset_mode == PRESET_ECO: - self.device.mode = NEST_MODE_ECO + if is_away != need_away: + self.structure.away = need_away + + if is_eco != need_eco: + if need_eco: + self.device.mode = NEST_MODE_ECO + else: + self.device.mode = MODE_HASS_TO_NEST[self._operation_list[0]] @property def fan_mode(self):