Allow template covers to have opening and closing states (#47925)
This commit is contained in:
parent
f396804f54
commit
52e8c7166b
2 changed files with 30 additions and 1 deletions
|
@ -219,6 +219,8 @@ class CoverTemplate(TemplateEntity, CoverEntity):
|
||||||
self._optimistic = optimistic or (not state_template and not position_template)
|
self._optimistic = optimistic or (not state_template and not position_template)
|
||||||
self._tilt_optimistic = tilt_optimistic or not tilt_template
|
self._tilt_optimistic = tilt_optimistic or not tilt_template
|
||||||
self._position = None
|
self._position = None
|
||||||
|
self._is_opening = False
|
||||||
|
self._is_closing = False
|
||||||
self._tilt_value = None
|
self._tilt_value = None
|
||||||
self._unique_id = unique_id
|
self._unique_id = unique_id
|
||||||
|
|
||||||
|
@ -260,6 +262,9 @@ class CoverTemplate(TemplateEntity, CoverEntity):
|
||||||
self._position = 100
|
self._position = 100
|
||||||
else:
|
else:
|
||||||
self._position = 0
|
self._position = 0
|
||||||
|
|
||||||
|
self._is_opening = state == STATE_OPENING
|
||||||
|
self._is_closing = state == STATE_CLOSING
|
||||||
else:
|
else:
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
"Received invalid cover is_on state: %s. Expected: %s",
|
"Received invalid cover is_on state: %s. Expected: %s",
|
||||||
|
@ -319,6 +324,16 @@ class CoverTemplate(TemplateEntity, CoverEntity):
|
||||||
"""Return if the cover is closed."""
|
"""Return if the cover is closed."""
|
||||||
return self._position == 0
|
return self._position == 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_opening(self):
|
||||||
|
"""Return if the cover is currently opening."""
|
||||||
|
return self._is_opening
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_closing(self):
|
||||||
|
"""Return if the cover is currently closing."""
|
||||||
|
return self._is_closing
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_cover_position(self):
|
def current_cover_position(self):
|
||||||
"""Return current position of cover.
|
"""Return current position of cover.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
"""The tests the cover command line platform."""
|
"""The tests for the Template cover platform."""
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant import setup
|
from homeassistant import setup
|
||||||
|
@ -15,9 +15,11 @@ from homeassistant.const import (
|
||||||
SERVICE_TOGGLE,
|
SERVICE_TOGGLE,
|
||||||
SERVICE_TOGGLE_COVER_TILT,
|
SERVICE_TOGGLE_COVER_TILT,
|
||||||
STATE_CLOSED,
|
STATE_CLOSED,
|
||||||
|
STATE_CLOSING,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
STATE_OPEN,
|
STATE_OPEN,
|
||||||
|
STATE_OPENING,
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -74,6 +76,18 @@ async def test_template_state_text(hass, calls):
|
||||||
state = hass.states.get("cover.test_template_cover")
|
state = hass.states.get("cover.test_template_cover")
|
||||||
assert state.state == STATE_CLOSED
|
assert state.state == STATE_CLOSED
|
||||||
|
|
||||||
|
state = hass.states.async_set("cover.test_state", STATE_OPENING)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get("cover.test_template_cover")
|
||||||
|
assert state.state == STATE_OPENING
|
||||||
|
|
||||||
|
state = hass.states.async_set("cover.test_state", STATE_CLOSING)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get("cover.test_template_cover")
|
||||||
|
assert state.state == STATE_CLOSING
|
||||||
|
|
||||||
|
|
||||||
async def test_template_state_boolean(hass, calls):
|
async def test_template_state_boolean(hass, calls):
|
||||||
"""Test the value_template attribute."""
|
"""Test the value_template attribute."""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue