Ensure template fan value_template always determines on state (#47598)

This commit is contained in:
J. Nick Koston 2021-03-08 07:34:34 -10:00 committed by GitHub
parent 8fe51b8ea7
commit 53952b9662
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 5 deletions

View file

@ -523,7 +523,6 @@ class TemplateFan(TemplateEntity, FanEntity):
speed = str(speed)
if speed in self._speed_list:
self._state = STATE_OFF if speed == SPEED_OFF else STATE_ON
self._speed = speed
self._percentage = self.speed_to_percentage(speed)
self._preset_mode = speed if speed in self.preset_modes else None
@ -552,7 +551,6 @@ class TemplateFan(TemplateEntity, FanEntity):
return
if 0 <= percentage <= 100:
self._state = STATE_OFF if percentage == 0 else STATE_ON
self._percentage = percentage
if self._speed_list:
self._speed = self.percentage_to_speed(percentage)
@ -569,7 +567,6 @@ class TemplateFan(TemplateEntity, FanEntity):
preset_mode = str(preset_mode)
if preset_mode in self.preset_modes:
self._state = STATE_ON
self._speed = preset_mode
self._percentage = None
self._preset_mode = preset_mode

View file

@ -246,6 +246,10 @@ async def test_templates_with_entities(hass, calls):
await hass.async_block_till_done()
_verify(hass, STATE_ON, None, 0, True, DIRECTION_FORWARD, None)
hass.states.async_set(_STATE_INPUT_BOOLEAN, False)
await hass.async_block_till_done()
_verify(hass, STATE_OFF, None, 0, True, DIRECTION_FORWARD, None)
async def test_templates_with_entities_and_invalid_percentage(hass, calls):
"""Test templates with values from other entities."""
@ -274,7 +278,7 @@ async def test_templates_with_entities_and_invalid_percentage(hass, calls):
await hass.async_start()
await hass.async_block_till_done()
_verify(hass, STATE_OFF, SPEED_OFF, 0, None, None, None)
_verify(hass, STATE_ON, SPEED_OFF, 0, None, None, None)
hass.states.async_set("sensor.percentage", "33")
await hass.async_block_till_done()
@ -299,7 +303,7 @@ async def test_templates_with_entities_and_invalid_percentage(hass, calls):
hass.states.async_set("sensor.percentage", "0")
await hass.async_block_till_done()
_verify(hass, STATE_OFF, SPEED_OFF, 0, None, None, None)
_verify(hass, STATE_ON, SPEED_OFF, 0, None, None, None)
async def test_templates_with_entities_and_preset_modes(hass, calls):