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
def target_temperature(self):
"""Return the temperature we try to reach."""
if self._target_temperature in (ON_API_TEMPERATURE,
OFF_API_TEMPERATURE):
return None
if self._target_temperature == ON_API_TEMPERATURE:
return ON_REPORT_SET_TEMPERATURE
if self._target_temperature == OFF_API_TEMPERATURE:
return OFF_REPORT_SET_TEMPERATURE
return self._target_temperature
def set_temperature(self, **kwargs):
@ -110,7 +111,10 @@ class FritzboxThermostat(ClimateDevice):
@property
def hvac_mode(self):
"""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_HEAT

View File

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