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._tilt_optimistic = tilt_optimistic or not tilt_template
|
||||
self._position = None
|
||||
self._is_opening = False
|
||||
self._is_closing = False
|
||||
self._tilt_value = None
|
||||
self._unique_id = unique_id
|
||||
|
||||
|
@ -260,6 +262,9 @@ class CoverTemplate(TemplateEntity, CoverEntity):
|
|||
self._position = 100
|
||||
else:
|
||||
self._position = 0
|
||||
|
||||
self._is_opening = state == STATE_OPENING
|
||||
self._is_closing = state == STATE_CLOSING
|
||||
else:
|
||||
_LOGGER.error(
|
||||
"Received invalid cover is_on state: %s. Expected: %s",
|
||||
|
@ -319,6 +324,16 @@ class CoverTemplate(TemplateEntity, CoverEntity):
|
|||
"""Return if the cover is closed."""
|
||||
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
|
||||
def current_cover_position(self):
|
||||
"""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
|
||||
|
||||
from homeassistant import setup
|
||||
|
@ -15,9 +15,11 @@ from homeassistant.const import (
|
|||
SERVICE_TOGGLE,
|
||||
SERVICE_TOGGLE_COVER_TILT,
|
||||
STATE_CLOSED,
|
||||
STATE_CLOSING,
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
STATE_OPEN,
|
||||
STATE_OPENING,
|
||||
STATE_UNAVAILABLE,
|
||||
)
|
||||
|
||||
|
@ -74,6 +76,18 @@ async def test_template_state_text(hass, calls):
|
|||
state = hass.states.get("cover.test_template_cover")
|
||||
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):
|
||||
"""Test the value_template attribute."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue