From 92886cafe94735819591f73838da410b9108edec Mon Sep 17 00:00:00 2001 From: Nathan Spencer Date: Fri, 5 Feb 2021 02:48:47 -0700 Subject: [PATCH] Fix zwave_js cover control for Up/Down and Open/Close (#45965) * Fix issue with control of cover when the target value is Up/Down instead of Open/Close * Adjust open/close/stop cover control to account for no Open/Up or Close/Down targets * Revert back to using values of 0/99 to close/open a cover since it is supported by all covers * Replace RELEASE_BUTTON with False and remove unused PRESS_BUTTON in zwave_js cover --- homeassistant/components/zwave_js/cover.py | 20 ++++++++--------- tests/components/zwave_js/test_cover.py | 26 +++++++++++++--------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/zwave_js/cover.py b/homeassistant/components/zwave_js/cover.py index 5f473f80957..b86cbeba944 100644 --- a/homeassistant/components/zwave_js/cover.py +++ b/homeassistant/components/zwave_js/cover.py @@ -21,8 +21,6 @@ from .entity import ZWaveBaseEntity LOGGER = logging.getLogger(__name__) SUPPORT_GARAGE = SUPPORT_OPEN | SUPPORT_CLOSE -PRESS_BUTTON = True -RELEASE_BUTTON = False async def async_setup_entry( @@ -79,17 +77,19 @@ class ZWaveCover(ZWaveBaseEntity, CoverEntity): async def async_open_cover(self, **kwargs: Any) -> None: """Open the cover.""" - target_value = self.get_zwave_value("Open") - await self.info.node.async_set_value(target_value, PRESS_BUTTON) + target_value = self.get_zwave_value("targetValue") + await self.info.node.async_set_value(target_value, 99) async def async_close_cover(self, **kwargs: Any) -> None: """Close cover.""" - target_value = self.get_zwave_value("Close") - await self.info.node.async_set_value(target_value, PRESS_BUTTON) + target_value = self.get_zwave_value("targetValue") + await self.info.node.async_set_value(target_value, 0) async def async_stop_cover(self, **kwargs: Any) -> None: """Stop cover.""" - target_value = self.get_zwave_value("Open") - await self.info.node.async_set_value(target_value, RELEASE_BUTTON) - target_value = self.get_zwave_value("Close") - await self.info.node.async_set_value(target_value, RELEASE_BUTTON) + target_value = self.get_zwave_value("Open") or self.get_zwave_value("Up") + if target_value: + await self.info.node.async_set_value(target_value, False) + target_value = self.get_zwave_value("Close") or self.get_zwave_value("Down") + if target_value: + await self.info.node.async_set_value(target_value, False) diff --git a/tests/components/zwave_js/test_cover.py b/tests/components/zwave_js/test_cover.py index f014245a5f8..52e0a444ec9 100644 --- a/tests/components/zwave_js/test_cover.py +++ b/tests/components/zwave_js/test_cover.py @@ -95,14 +95,16 @@ async def test_cover(hass, client, chain_actuator_zws12, integration): "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, - "property": "Open", - "propertyName": "Open", + "property": "targetValue", + "propertyName": "targetValue", "metadata": { - "type": "boolean", + "label": "Target value", + "max": 99, + "min": 0, + "type": "number", "readable": True, "writeable": True, - "label": "Perform a level change (Open)", - "ccSpecific": {"switchType": 3}, + "label": "Target value", }, } assert args["value"] @@ -194,17 +196,19 @@ async def test_cover(hass, client, chain_actuator_zws12, integration): "commandClassName": "Multilevel Switch", "commandClass": 38, "endpoint": 0, - "property": "Close", - "propertyName": "Close", + "property": "targetValue", + "propertyName": "targetValue", "metadata": { - "type": "boolean", + "label": "Target value", + "max": 99, + "min": 0, + "type": "number", "readable": True, "writeable": True, - "label": "Perform a level change (Close)", - "ccSpecific": {"switchType": 3}, + "label": "Target value", }, } - assert args["value"] + assert args["value"] == 0 client.async_send_command.reset_mock()