From c4a71fbfa78a72e9d598e62cdcc6f3b6fb735c33 Mon Sep 17 00:00:00 2001 From: Josh Wright Date: Tue, 12 Apr 2016 18:15:24 -0400 Subject: [PATCH] Include away temps in target temps The target temperature methods were not taking the 'away' status into account. leading to misleading target temps being reported. --- homeassistant/components/thermostat/nest.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/thermostat/nest.py b/homeassistant/components/thermostat/nest.py index 9a52f58c1d9..2426e638c43 100644 --- a/homeassistant/components/thermostat/nest.py +++ b/homeassistant/components/thermostat/nest.py @@ -80,10 +80,9 @@ class NestThermostat(ThermostatDevice): @property def target_temperature(self): """Return the temperature we try to reach.""" - target = self.device.target - if self.device.mode == 'range': - low, high = target + low, high = self.target_temperature_low, \ + self.target_temperature_high if self.operation == STATE_COOL: temp = high elif self.operation == STATE_HEAT: @@ -95,13 +94,22 @@ class NestThermostat(ThermostatDevice): elif self.current_temperature >= range_average: temp = high else: - temp = target + if self.is_away_mode_on: + # away_temperature is a low, high tuple. Only one should be set + # if not in range mode, the other will be None + temp = self.device.away_temperature[0] or \ + self.device.away_temperature[1] + else: + temp = self.device.target return temp @property def target_temperature_low(self): """Return the lower bound temperature we try to reach.""" + if self.is_away_mode_on and self.device.away_temperature[0]: + # away_temperature is always a low, high tuple + return self.device.away_temperature[0] if self.device.mode == 'range': return self.device.target[0] return self.target_temperature @@ -109,6 +117,9 @@ class NestThermostat(ThermostatDevice): @property def target_temperature_high(self): """Return the upper bound temperature we try to reach.""" + if self.is_away_mode_on and self.device.away_temperature[1]: + # away_temperature is always a low, high tuple + return self.device.away_temperature[1] if self.device.mode == 'range': return self.device.target[1] return self.target_temperature