From f1fe8e95baafcbc96dab12e9b45e78158fca1db6 Mon Sep 17 00:00:00 2001 From: Derek Brooks Date: Mon, 13 Nov 2017 22:40:18 -0600 Subject: [PATCH] clean up a couple away temperature settings --- homeassistant/components/climate/nuheat.py | 21 ++++++++------------- homeassistant/components/nuheat.py | 11 ++++++++++- tests/components/climate/test_nuheat.py | 6 ++++++ 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/climate/nuheat.py b/homeassistant/components/climate/nuheat.py index d49d060f032..c5893ecdb00 100644 --- a/homeassistant/components/climate/nuheat.py +++ b/homeassistant/components/climate/nuheat.py @@ -93,8 +93,8 @@ class NuHeatThermostat(ClimateDevice): @property def min_away_temp(self): """Return the minimum target temperature to be used in away mode.""" - if self._min_away_temp: - return self._min_away_temp + if self._min_away_temp and self._min_away_temp > self.min_temp: + return int(self._min_away_temp) return self.min_temp @@ -154,18 +154,13 @@ class NuHeatThermostat(ClimateDevice): to the user-defined minimum away temperature or the minimum temperature supported by the thermostat. """ - if self._min_away_temp: - if self._temperature_unit == "C": - min_target = self._min_away_temp - target = self._thermostat.target_celsius - else: - min_target = self._min_away_temp - target = self._thermostat.target_fahrenheit + min_target = self.min_away_temp + if self._temperature_unit == "C": + target = self._thermostat.target_celsius + else: + target = self._thermostat.target_fahrenheit - if target > min_target: - return False - - elif self._thermostat.target_celsius > self._thermostat.min_celsius: + if target > min_target: return False if self._thermostat.schedule_mode != SCHEDULE_HOLD: diff --git a/homeassistant/components/nuheat.py b/homeassistant/components/nuheat.py index 5358932cd78..5a888457e40 100644 --- a/homeassistant/components/nuheat.py +++ b/homeassistant/components/nuheat.py @@ -41,7 +41,16 @@ def setup(hass, config): username = conf.get(CONF_USERNAME) password = conf.get(CONF_PASSWORD) devices = conf.get(CONF_DEVICES) - min_away_temp = conf.get(CONF_MIN_AWAY_TEMP) + + min_away_temp = None + _min_away_temp = conf.get(CONF_MIN_AWAY_TEMP) + if _min_away_temp: + try: + min_away_temp = int(_min_away_temp) + except ValueError: + _LOGGER.error( + "Configuration error. %s.%s=%s is invalid. Please provide a " + "numeric value.", DATA_NUHEAT, CONF_MIN_AWAY_TEMP, _min_away_temp) api = nuheat.NuHeat(username, password) api.authenticate() diff --git a/tests/components/climate/test_nuheat.py b/tests/components/climate/test_nuheat.py index 5a9f1d95a3f..ab5624e82f3 100644 --- a/tests/components/climate/test_nuheat.py +++ b/tests/components/climate/test_nuheat.py @@ -89,9 +89,15 @@ class TestNuHeat(unittest.TestCase): def test_min_away_temp(self): """Test the minimum target temperature to be used in away mode.""" self.assertEqual(self.thermostat.min_away_temp, 41) + + # User defined minimum self.thermostat._min_away_temp = 60 self.assertEqual(self.thermostat.min_away_temp, 60) + # User defined minimum below the thermostat's supported minimum + self.thermostat._min_away_temp = 0 + self.assertEqual(self.thermostat.min_away_temp, 41) + def test_min_temp(self): """Test min temp.""" self.assertEqual(self.thermostat.min_temp, 41)