Fix fritzbox climate HVAC mode / temperature (#25275)

* Set the target temperature

* Update tests

* Update tests

* Fix linter complaints
pull/25313/head
cgtobi 2019-07-19 09:49:28 +02:00 committed by Paulus Schoutsen
parent 8b020ea5e6
commit c4d1cd0e03
2 changed files with 11 additions and 7 deletions

View File

@ -93,9 +93,10 @@ class FritzboxThermostat(ClimateDevice):
@property @property
def target_temperature(self): def target_temperature(self):
"""Return the temperature we try to reach.""" """Return the temperature we try to reach."""
if self._target_temperature in (ON_API_TEMPERATURE, if self._target_temperature == ON_API_TEMPERATURE:
OFF_API_TEMPERATURE): return ON_REPORT_SET_TEMPERATURE
return None if self._target_temperature == OFF_API_TEMPERATURE:
return OFF_REPORT_SET_TEMPERATURE
return self._target_temperature return self._target_temperature
def set_temperature(self, **kwargs): def set_temperature(self, **kwargs):
@ -110,7 +111,10 @@ class FritzboxThermostat(ClimateDevice):
@property @property
def hvac_mode(self): def hvac_mode(self):
"""Return the current operation mode.""" """Return the current operation mode."""
if self._target_temperature == OFF_REPORT_SET_TEMPERATURE: if (
self._target_temperature == OFF_REPORT_SET_TEMPERATURE or
self._target_temperature == OFF_API_TEMPERATURE
):
return HVAC_MODE_OFF return HVAC_MODE_OFF
return HVAC_MODE_HEAT return HVAC_MODE_HEAT

View File

@ -66,10 +66,10 @@ class TestFritzboxClimate(unittest.TestCase):
assert 19.5 == self.thermostat.target_temperature assert 19.5 == self.thermostat.target_temperature
self.thermostat._target_temperature = 126.5 self.thermostat._target_temperature = 126.5
assert self.thermostat.target_temperature is None assert self.thermostat.target_temperature == 0.0
self.thermostat._target_temperature = 127.0 self.thermostat._target_temperature = 127.0
assert self.thermostat.target_temperature is None assert self.thermostat.target_temperature == 30.0
@patch.object(FritzboxThermostat, 'set_hvac_mode') @patch.object(FritzboxThermostat, 'set_hvac_mode')
def test_set_temperature_operation_mode(self, mock_set_op): def test_set_temperature_operation_mode(self, mock_set_op):
@ -103,7 +103,7 @@ class TestFritzboxClimate(unittest.TestCase):
self.thermostat._target_temperature = 127.0 self.thermostat._target_temperature = 127.0
assert 'heat' == self.thermostat.hvac_mode assert 'heat' == self.thermostat.hvac_mode
self.thermostat._target_temperature = 126.5 self.thermostat._target_temperature = 126.5
assert 'heat' == self.thermostat.hvac_mode assert 'off' == self.thermostat.hvac_mode
self.thermostat._target_temperature = 22.0 self.thermostat._target_temperature = 22.0
assert 'heat' == self.thermostat.hvac_mode assert 'heat' == self.thermostat.hvac_mode
self.thermostat._target_temperature = 16.0 self.thermostat._target_temperature = 16.0