Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions homeassistant/components/climate/generic_thermostat.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,8 @@ def is_away_mode_on(self):

async def async_turn_away_mode_on(self):
"""Turn away mode on by setting it on away hold indefinitely."""
if self._is_away:
return
self._is_away = True
self._saved_target_temp = self._target_temp
self._target_temp = self._away_temp
Expand All @@ -388,6 +390,8 @@ async def async_turn_away_mode_on(self):

async def async_turn_away_mode_off(self):
"""Turn away off."""
if not self._is_away:
return
self._is_away = False
self._target_temp = self._saved_target_temp
await self._async_control_heating()
Expand Down
18 changes: 18 additions & 0 deletions tests/components/climate/test_generic_thermostat.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,24 @@ def test_set_away_mode_and_restore_prev_temp(self):
state = self.hass.states.get(ENTITY)
self.assertEqual(23, state.attributes.get('temperature'))

def test_set_away_mode_twice_and_restore_prev_temp(self):
"""Test the setting away mode twice in a row.

Verify original temperature is restored.
"""
common.set_temperature(self.hass, 23)
self.hass.block_till_done()
common.set_away_mode(self.hass, True)
self.hass.block_till_done()
common.set_away_mode(self.hass, True)
self.hass.block_till_done()
state = self.hass.states.get(ENTITY)
self.assertEqual(16, state.attributes.get('temperature'))
common.set_away_mode(self.hass, False)
self.hass.block_till_done()
state = self.hass.states.get(ENTITY)
self.assertEqual(23, state.attributes.get('temperature'))

def test_sensor_bad_value(self):
"""Test sensor that have None as state."""
state = self.hass.states.get(ENTITY)
Expand Down