mirror of
https://github.com/home-assistant/core.git
synced 2026-08-24 10:13:52 -05:00
Add is_closed state attribute to cover (#164739)
This commit is contained in:
@@ -91,6 +91,7 @@ class CoverEntityFeature(IntFlag):
|
||||
|
||||
ATTR_CURRENT_POSITION = "current_position"
|
||||
ATTR_CURRENT_TILT_POSITION = "current_tilt_position"
|
||||
ATTR_IS_CLOSED = "is_closed"
|
||||
ATTR_POSITION = "position"
|
||||
ATTR_TILT_POSITION = "tilt_position"
|
||||
|
||||
@@ -267,7 +268,9 @@ class CoverEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
||||
@property
|
||||
def state_attributes(self) -> dict[str, Any]:
|
||||
"""Return the state attributes."""
|
||||
data = {}
|
||||
data: dict[str, Any] = {}
|
||||
|
||||
data[ATTR_IS_CLOSED] = self.is_closed
|
||||
|
||||
if (current := self.current_cover_position) is not None:
|
||||
data[ATTR_CURRENT_POSITION] = current
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
'current_position': 90,
|
||||
'device_class': 'damper',
|
||||
'friendly_name': 'Zone 1 Damper',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -93,6 +94,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'damper',
|
||||
'friendly_name': 'Zone 2 Damper',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Test Door',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
'current_position': 75,
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Shutter mock 1',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Cover0',
|
||||
'is_closed': None,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -34,10 +34,10 @@ async def test_services(
|
||||
|
||||
# Test init all covers should be open
|
||||
assert is_open(hass, ent1)
|
||||
assert is_open(hass, ent2)
|
||||
assert is_open(hass, ent2, 50)
|
||||
assert is_open(hass, ent3)
|
||||
assert is_open(hass, ent4)
|
||||
assert is_open(hass, ent5)
|
||||
assert is_open(hass, ent5, 50)
|
||||
assert is_open(hass, ent6)
|
||||
|
||||
# call basic toggle services
|
||||
@@ -50,10 +50,10 @@ async def test_services(
|
||||
|
||||
# entities should be either closed or closing, depending on if they report transitional states
|
||||
assert is_closed(hass, ent1)
|
||||
assert is_closing(hass, ent2)
|
||||
assert is_closing(hass, ent2, 50)
|
||||
assert is_closed(hass, ent3)
|
||||
assert is_closed(hass, ent4)
|
||||
assert is_closing(hass, ent5)
|
||||
assert is_closing(hass, ent5, 50)
|
||||
assert is_closing(hass, ent6)
|
||||
|
||||
# call basic toggle services and set different cover position states
|
||||
@@ -68,10 +68,10 @@ async def test_services(
|
||||
|
||||
# entities should be in correct state depending on the SUPPORT_STOP feature and cover position
|
||||
assert is_open(hass, ent1)
|
||||
assert is_closed(hass, ent2)
|
||||
assert is_closed(hass, ent2, 0)
|
||||
assert is_open(hass, ent3)
|
||||
assert is_open(hass, ent4)
|
||||
assert is_open(hass, ent5)
|
||||
assert is_open(hass, ent5, 15)
|
||||
assert is_opening(hass, ent6)
|
||||
|
||||
# call basic toggle services
|
||||
@@ -84,10 +84,10 @@ async def test_services(
|
||||
|
||||
# entities should be in correct state depending on the SUPPORT_STOP feature and cover position
|
||||
assert is_closed(hass, ent1)
|
||||
assert is_opening(hass, ent2)
|
||||
assert is_opening(hass, ent2, 0, closed=True)
|
||||
assert is_closed(hass, ent3)
|
||||
assert is_closed(hass, ent4)
|
||||
assert is_opening(hass, ent5)
|
||||
assert is_opening(hass, ent5, 15)
|
||||
assert is_closing(hass, ent6)
|
||||
|
||||
# Without STOP but still reports opening/closing has a 4th possible toggle state
|
||||
@@ -98,13 +98,13 @@ async def test_services(
|
||||
# After the unusual state transition: closing -> fully open, toggle should close
|
||||
set_state(ent5, CoverState.OPEN)
|
||||
await call_service(hass, SERVICE_TOGGLE, ent5) # Start closing
|
||||
assert is_closing(hass, ent5)
|
||||
assert is_closing(hass, ent5, 15)
|
||||
set_state(
|
||||
ent5, CoverState.OPEN
|
||||
) # Unusual state transition from closing -> fully open
|
||||
set_cover_position(ent5, 100)
|
||||
await call_service(hass, SERVICE_TOGGLE, ent5) # Should close, not open
|
||||
assert is_closing(hass, ent5)
|
||||
assert is_closing(hass, ent5, 100)
|
||||
|
||||
|
||||
def call_service(hass: HomeAssistant, service: str, ent: Entity) -> ServiceResponse:
|
||||
@@ -124,21 +124,67 @@ def set_state(ent, state) -> None:
|
||||
ent._values["state"] = state
|
||||
|
||||
|
||||
def is_open(hass: HomeAssistant, ent: Entity) -> bool:
|
||||
def _check_state(
|
||||
hass: HomeAssistant,
|
||||
ent: Entity,
|
||||
*,
|
||||
expected_state: str,
|
||||
expected_position: int | None,
|
||||
expected_is_closed: bool,
|
||||
) -> bool:
|
||||
"""Check if the state of a cover is as expected."""
|
||||
state = hass.states.get(ent.entity_id)
|
||||
correct_state = state.state == expected_state
|
||||
correct_is_closed = state.attributes.get("is_closed") == expected_is_closed
|
||||
correct_position = state.attributes.get("current_position") == expected_position
|
||||
return all([correct_state, correct_is_closed, correct_position])
|
||||
|
||||
|
||||
def is_open(hass: HomeAssistant, ent: Entity, position: int | None = None) -> bool:
|
||||
"""Return if the cover is open based on the statemachine."""
|
||||
return _check_state(
|
||||
hass,
|
||||
ent,
|
||||
expected_state=CoverState.OPEN,
|
||||
expected_position=position,
|
||||
expected_is_closed=False,
|
||||
)
|
||||
|
||||
|
||||
def is_opening(
|
||||
hass: HomeAssistant,
|
||||
ent: Entity,
|
||||
position: int | None = None,
|
||||
*,
|
||||
closed: bool = False,
|
||||
) -> bool:
|
||||
"""Return if the cover is opening based on the statemachine."""
|
||||
return _check_state(
|
||||
hass,
|
||||
ent,
|
||||
expected_state=CoverState.OPENING,
|
||||
expected_position=position,
|
||||
expected_is_closed=closed,
|
||||
)
|
||||
|
||||
|
||||
def is_closed(hass: HomeAssistant, ent: Entity, position: int | None = None) -> bool:
|
||||
"""Return if the cover is closed based on the statemachine."""
|
||||
return hass.states.is_state(ent.entity_id, CoverState.OPEN)
|
||||
return _check_state(
|
||||
hass,
|
||||
ent,
|
||||
expected_state=CoverState.CLOSED,
|
||||
expected_position=position,
|
||||
expected_is_closed=True,
|
||||
)
|
||||
|
||||
|
||||
def is_opening(hass: HomeAssistant, ent: Entity) -> bool:
|
||||
"""Return if the cover is closed based on the statemachine."""
|
||||
return hass.states.is_state(ent.entity_id, CoverState.OPENING)
|
||||
|
||||
|
||||
def is_closed(hass: HomeAssistant, ent: Entity) -> bool:
|
||||
"""Return if the cover is closed based on the statemachine."""
|
||||
return hass.states.is_state(ent.entity_id, CoverState.CLOSED)
|
||||
|
||||
|
||||
def is_closing(hass: HomeAssistant, ent: Entity) -> bool:
|
||||
"""Return if the cover is closed based on the statemachine."""
|
||||
return hass.states.is_state(ent.entity_id, CoverState.CLOSING)
|
||||
def is_closing(hass: HomeAssistant, ent: Entity, position: int | None = None) -> bool:
|
||||
"""Return if the cover is closing based on the statemachine."""
|
||||
return _check_state(
|
||||
hass,
|
||||
ent,
|
||||
expected_state=CoverState.CLOSING,
|
||||
expected_position=position,
|
||||
expected_is_closed=False,
|
||||
)
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'shade',
|
||||
'friendly_name': 'Window covering device',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -94,6 +95,7 @@
|
||||
'current_tilt_position': 97,
|
||||
'device_class': 'damper',
|
||||
'friendly_name': 'Vent',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 255>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -147,6 +149,7 @@
|
||||
'current_tilt_position': 100,
|
||||
'device_class': 'shade',
|
||||
'friendly_name': 'Covering device',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 255>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
'current_position': 20,
|
||||
'device_class': 'blind',
|
||||
'friendly_name': 'Test',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'current_position': 0,
|
||||
'friendly_name': 'ESPAN.DOM.01',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'blind',
|
||||
'friendly_name': 'fake_name',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -115,6 +115,7 @@ async def test_open_close_update(gogogate2api_mock, hass: HomeAssistant) -> None
|
||||
"device_class": "garage",
|
||||
"door_id": 1,
|
||||
"friendly_name": "Door1",
|
||||
"is_closed": False,
|
||||
"supported_features": CoverEntityFeature.CLOSE | CoverEntityFeature.OPEN,
|
||||
}
|
||||
|
||||
@@ -254,6 +255,7 @@ async def test_availability(ismartgateapi_mock, hass: HomeAssistant) -> None:
|
||||
"device_class": "garage",
|
||||
"door_id": 1,
|
||||
"friendly_name": "Door1",
|
||||
"is_closed": True,
|
||||
"supported_features": CoverEntityFeature.CLOSE | CoverEntityFeature.OPEN,
|
||||
}
|
||||
|
||||
|
||||
@@ -476,7 +476,7 @@ async def test_options_flow_hides_members(
|
||||
assert entity_registry.async_get(f"{group_type}.three").hidden_by == hidden_by
|
||||
|
||||
|
||||
COVER_ATTRS = [{"supported_features": 0}, {}]
|
||||
COVER_ATTRS = [{"supported_features": 0}, {"is_closed": False}]
|
||||
EVENT_ATTRS = [{"event_types": []}, {"event_type": None}]
|
||||
FAN_ATTRS = [{"supported_features": 0}, {}]
|
||||
LIGHT_ATTRS = [
|
||||
|
||||
@@ -11262,6 +11262,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 98,
|
||||
'friendly_name': 'Family Room North',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.family_room_north',
|
||||
@@ -11518,6 +11519,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 100,
|
||||
'friendly_name': 'Kitchen Window',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.kitchen_window',
|
||||
@@ -12754,6 +12756,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 98,
|
||||
'friendly_name': 'Family Room North',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'entity_id': 'cover.family_room_north',
|
||||
@@ -13010,6 +13013,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 100,
|
||||
'friendly_name': 'Kitchen Window',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.kitchen_window',
|
||||
@@ -21093,6 +21097,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 0,
|
||||
'friendly_name': 'Master Bath South RYSE Shade',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.master_bath_south_ryse_shade',
|
||||
@@ -21349,6 +21354,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 100,
|
||||
'friendly_name': 'RYSE SmartShade RYSE Shade',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.ryse_smartshade_ryse_shade',
|
||||
@@ -21528,6 +21534,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 100,
|
||||
'friendly_name': 'BR Left RYSE Shade',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.br_left_ryse_shade',
|
||||
@@ -21703,6 +21710,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 0,
|
||||
'friendly_name': 'LR Left RYSE Shade',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.lr_left_ryse_shade',
|
||||
@@ -21878,6 +21886,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 0,
|
||||
'friendly_name': 'LR Right RYSE Shade',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.lr_right_ryse_shade',
|
||||
@@ -22134,6 +22143,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 100,
|
||||
'friendly_name': 'RZSS RYSE Shade',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.rzss_ryse_shade',
|
||||
@@ -22634,6 +22644,7 @@
|
||||
'current_position': 0,
|
||||
'current_tilt_position': 100,
|
||||
'friendly_name': 'VELUX Internal Cover Venetian Blinds',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 183>,
|
||||
}),
|
||||
'entity_id': 'cover.velux_internal_cover_venetian_blinds',
|
||||
@@ -23727,6 +23738,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'VELUX Window Roof Window',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.velux_window_roof_window',
|
||||
@@ -23858,6 +23870,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'VELUX Window Roof Window',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.velux_window_roof_window',
|
||||
@@ -23988,6 +24001,7 @@
|
||||
'attributes': dict({
|
||||
'current_position': 0,
|
||||
'friendly_name': 'VELUX External Cover Awning Blinds',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'entity_id': 'cover.velux_external_cover_awning_blinds',
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'assumed_state': True,
|
||||
'friendly_name': 'TestModule Cover_Outputs',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -91,6 +92,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'assumed_state': True,
|
||||
'friendly_name': 'TestModule Cover_Relays',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -142,6 +144,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'assumed_state': True,
|
||||
'friendly_name': 'TestModule Cover_Relays_BS4',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -193,6 +196,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'assumed_state': True,
|
||||
'friendly_name': 'TestModule Cover_Relays_Module',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'current_position': 0,
|
||||
'friendly_name': 'Test Cover',
|
||||
'is_closed': True,
|
||||
'lutron_integration_id': 'cover_id',
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'shade',
|
||||
'friendly_name': 'Eve Shutter Switch 20ECI1701',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -94,6 +95,7 @@
|
||||
'current_tilt_position': 100,
|
||||
'device_class': 'awning',
|
||||
'friendly_name': 'Mock Full Window Covering',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 143>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -145,6 +147,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'awning',
|
||||
'friendly_name': 'Mock Lift Window Covering',
|
||||
'is_closed': None,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -197,6 +200,7 @@
|
||||
'current_position': 51,
|
||||
'device_class': 'shade',
|
||||
'friendly_name': 'Longan link WNCV DA01',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -249,6 +253,7 @@
|
||||
'current_tilt_position': 100,
|
||||
'device_class': 'blind',
|
||||
'friendly_name': 'Mock PA Tilt Window Covering',
|
||||
'is_closed': None,
|
||||
'supported_features': <CoverEntityFeature: 139>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -300,6 +305,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'blind',
|
||||
'friendly_name': 'Mock Tilt Window Covering',
|
||||
'is_closed': None,
|
||||
'supported_features': <CoverEntityFeature: 139>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -352,6 +358,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'shade',
|
||||
'friendly_name': 'Zemismart MT25B Roller Motor',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Bubendorff blind',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -95,6 +96,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Entrance Blinds',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Test Garage 1',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -91,6 +92,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Test Garage 2',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -142,6 +144,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'gate',
|
||||
'friendly_name': 'Test Garage 3',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -193,6 +196,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Test Garage 4',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Test Garage 1',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'cover',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -6862,6 +6862,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Test name',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'slide bedroom',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'shade',
|
||||
'friendly_name': 'Curtain 1A',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -94,6 +95,7 @@
|
||||
'current_position': 32,
|
||||
'device_class': 'shade',
|
||||
'friendly_name': 'Kitchen IKEA KADRILJ Window blind',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Door 1',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -86,6 +87,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Door 2',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'current_position': 100,
|
||||
'friendly_name': 'My template',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 7>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Charge port door',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -91,6 +92,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Frunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 1>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -142,6 +144,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Sunroof',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -193,6 +196,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Trunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -244,6 +248,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Windows',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -295,6 +300,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Charge port door',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -346,6 +352,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Frunk',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 1>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -397,6 +404,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Sunroof',
|
||||
'is_closed': None,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -448,6 +456,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Trunk',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -499,6 +508,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Windows',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -550,6 +560,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Charge port door',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -601,6 +612,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Frunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -652,6 +664,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Sunroof',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -703,6 +716,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Trunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -754,6 +768,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Windows',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Charge port door',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -91,6 +92,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Frunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 1>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -142,6 +144,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Sunroof',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -193,6 +196,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Trunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -244,6 +248,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Windows',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -295,6 +300,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Charge port door',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -346,6 +352,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Frunk',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 1>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -397,6 +404,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Trunk',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -448,6 +456,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Windows',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -499,6 +508,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Charge port door',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -550,6 +560,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Frunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -601,6 +612,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Sunroof',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -652,6 +664,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Trunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -703,6 +716,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Windows',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 0>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Charge port door',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -91,6 +92,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Frunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 1>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -142,6 +144,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Sunroof',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -193,6 +196,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'door',
|
||||
'friendly_name': 'Test Trunk',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -244,6 +248,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Vent windows',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'bedroom blinds Curtain',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -93,6 +94,7 @@
|
||||
'current_position': 36,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'blinds Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -145,6 +147,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Dining 1 Curtain',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -196,6 +199,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Estore Sala Curtain',
|
||||
'is_closed': None,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -248,6 +252,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Fenster Küche Curtain',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -299,6 +304,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Garage door Door 1',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -350,6 +356,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Kit-Blinds Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -402,6 +409,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'blind',
|
||||
'friendly_name': 'Kitchen Blinds Blind',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -454,6 +462,7 @@
|
||||
'current_position': 48,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Kitchen Blinds Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -506,6 +515,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Lounge Dark Blind Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -558,6 +568,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Pergola Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -610,6 +621,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Persiana do Quarto Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -662,6 +674,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Projector Screen Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -714,6 +727,7 @@
|
||||
'current_position': 75,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Roller shutter Living Room Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -766,6 +780,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'Tapparelle studio Curtain',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -818,6 +833,7 @@
|
||||
'current_position': 100,
|
||||
'device_class': 'curtain',
|
||||
'friendly_name': 'VIVIDSTORM SCREEN Curtain',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'current_position': 50,
|
||||
'friendly_name': 'Basement CoverName',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -91,6 +92,7 @@
|
||||
'attributes': ReadOnlyDict({
|
||||
'assumed_state': True,
|
||||
'friendly_name': 'Basement CoverNameNoPos',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 11>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
'current_tilt_position': 75,
|
||||
'device_class': 'blind',
|
||||
'friendly_name': 'Test Blind',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 255>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -94,6 +95,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'awning',
|
||||
'friendly_name': 'Test Awning',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -146,6 +148,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Test DualRollerShutter',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -198,6 +201,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Test DualRollerShutter Lower shutter',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -250,6 +254,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Test DualRollerShutter Upper shutter',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -302,6 +307,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Test GarageDoor',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -354,6 +360,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'gate',
|
||||
'friendly_name': 'Test Gate',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -406,6 +413,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'shutter',
|
||||
'friendly_name': 'Test RollerShutter',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
@@ -458,6 +466,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Window',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
'current_position': 70,
|
||||
'device_class': 'window',
|
||||
'friendly_name': 'Test Window',
|
||||
'is_closed': False,
|
||||
'supported_features': 15,
|
||||
}),
|
||||
'entity_id': 'cover.test_window',
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'awning',
|
||||
'friendly_name': 'Markise',
|
||||
'is_closed': True,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
@@ -56,6 +56,7 @@ def mock_api_device(
|
||||
mock_api_device.manufacture_info = mock_manfacture_info
|
||||
|
||||
mock_api_device.brightness = 0
|
||||
mock_api_device.is_closed = False
|
||||
mock_api_device.percentage = 0
|
||||
|
||||
return mock_api_device
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
'current_position': 0,
|
||||
'device_class': 'garage',
|
||||
'friendly_name': 'Cover Controller Test Entity Name',
|
||||
'is_closed': False,
|
||||
'supported_features': <CoverEntityFeature: 15>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
||||
Reference in New Issue
Block a user