mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Fix Z-Wave JS cover stop support (#78723)
Co-authored-by: Franck Nijhof <git@frenck.dev>
This commit is contained in:
parent
322cb352ac
commit
9098592257
@ -7,9 +7,6 @@ from zwave_js_server.client import Client as ZwaveClient
|
|||||||
from zwave_js_server.const import TARGET_STATE_PROPERTY, TARGET_VALUE_PROPERTY
|
from zwave_js_server.const import TARGET_STATE_PROPERTY, TARGET_VALUE_PROPERTY
|
||||||
from zwave_js_server.const.command_class.barrier_operator import BarrierState
|
from zwave_js_server.const.command_class.barrier_operator import BarrierState
|
||||||
from zwave_js_server.const.command_class.multilevel_switch import (
|
from zwave_js_server.const.command_class.multilevel_switch import (
|
||||||
COVER_CLOSE_PROPERTY,
|
|
||||||
COVER_DOWN_PROPERTY,
|
|
||||||
COVER_OFF_PROPERTY,
|
|
||||||
COVER_ON_PROPERTY,
|
COVER_ON_PROPERTY,
|
||||||
COVER_OPEN_PROPERTY,
|
COVER_OPEN_PROPERTY,
|
||||||
COVER_UP_PROPERTY,
|
COVER_UP_PROPERTY,
|
||||||
@ -156,23 +153,14 @@ class ZWaveCover(ZWaveBaseEntity, CoverEntity):
|
|||||||
|
|
||||||
async def async_stop_cover(self, **kwargs: Any) -> None:
|
async def async_stop_cover(self, **kwargs: Any) -> None:
|
||||||
"""Stop cover."""
|
"""Stop cover."""
|
||||||
open_value = (
|
cover_property = (
|
||||||
self.get_zwave_value(COVER_OPEN_PROPERTY)
|
self.get_zwave_value(COVER_OPEN_PROPERTY)
|
||||||
or self.get_zwave_value(COVER_UP_PROPERTY)
|
or self.get_zwave_value(COVER_UP_PROPERTY)
|
||||||
or self.get_zwave_value(COVER_ON_PROPERTY)
|
or self.get_zwave_value(COVER_ON_PROPERTY)
|
||||||
)
|
)
|
||||||
if open_value:
|
if cover_property:
|
||||||
# Stop the cover if it's opening
|
# Stop the cover, will stop regardless of the actual direction of travel.
|
||||||
await self.info.node.async_set_value(open_value, False)
|
await self.info.node.async_set_value(cover_property, False)
|
||||||
|
|
||||||
close_value = (
|
|
||||||
self.get_zwave_value(COVER_CLOSE_PROPERTY)
|
|
||||||
or self.get_zwave_value(COVER_DOWN_PROPERTY)
|
|
||||||
or self.get_zwave_value(COVER_OFF_PROPERTY)
|
|
||||||
)
|
|
||||||
if close_value:
|
|
||||||
# Stop the cover if it's closing
|
|
||||||
await self.info.node.async_set_value(close_value, False)
|
|
||||||
|
|
||||||
|
|
||||||
class ZWaveTiltCover(ZWaveCover):
|
class ZWaveTiltCover(ZWaveCover):
|
||||||
|
@ -116,7 +116,7 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 2
|
assert len(client.async_send_command.call_args_list) == 1
|
||||||
open_args = client.async_send_command.call_args_list[0][0][0]
|
open_args = client.async_send_command.call_args_list[0][0][0]
|
||||||
assert open_args["command"] == "node.set_value"
|
assert open_args["command"] == "node.set_value"
|
||||||
assert open_args["nodeId"] == 6
|
assert open_args["nodeId"] == 6
|
||||||
@ -127,16 +127,6 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration):
|
|||||||
}
|
}
|
||||||
assert not open_args["value"]
|
assert not open_args["value"]
|
||||||
|
|
||||||
close_args = client.async_send_command.call_args_list[1][0][0]
|
|
||||||
assert close_args["command"] == "node.set_value"
|
|
||||||
assert close_args["nodeId"] == 6
|
|
||||||
assert close_args["valueId"] == {
|
|
||||||
"commandClass": 38,
|
|
||||||
"endpoint": 0,
|
|
||||||
"property": "Close",
|
|
||||||
}
|
|
||||||
assert not close_args["value"]
|
|
||||||
|
|
||||||
# Test position update from value updated event
|
# Test position update from value updated event
|
||||||
event = Event(
|
event = Event(
|
||||||
type="value updated",
|
type="value updated",
|
||||||
@ -189,7 +179,7 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 2
|
assert len(client.async_send_command.call_args_list) == 1
|
||||||
open_args = client.async_send_command.call_args_list[0][0][0]
|
open_args = client.async_send_command.call_args_list[0][0][0]
|
||||||
assert open_args["command"] == "node.set_value"
|
assert open_args["command"] == "node.set_value"
|
||||||
assert open_args["nodeId"] == 6
|
assert open_args["nodeId"] == 6
|
||||||
@ -200,16 +190,6 @@ async def test_window_cover(hass, client, chain_actuator_zws12, integration):
|
|||||||
}
|
}
|
||||||
assert not open_args["value"]
|
assert not open_args["value"]
|
||||||
|
|
||||||
close_args = client.async_send_command.call_args_list[1][0][0]
|
|
||||||
assert close_args["command"] == "node.set_value"
|
|
||||||
assert close_args["nodeId"] == 6
|
|
||||||
assert close_args["valueId"] == {
|
|
||||||
"commandClass": 38,
|
|
||||||
"endpoint": 0,
|
|
||||||
"property": "Close",
|
|
||||||
}
|
|
||||||
assert not close_args["value"]
|
|
||||||
|
|
||||||
client.async_send_command.reset_mock()
|
client.async_send_command.reset_mock()
|
||||||
|
|
||||||
event = Event(
|
event = Event(
|
||||||
@ -329,7 +309,7 @@ async def test_aeotec_nano_shutter_cover(
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 2
|
assert len(client.async_send_command.call_args_list) == 1
|
||||||
open_args = client.async_send_command.call_args_list[0][0][0]
|
open_args = client.async_send_command.call_args_list[0][0][0]
|
||||||
assert open_args["command"] == "node.set_value"
|
assert open_args["command"] == "node.set_value"
|
||||||
assert open_args["nodeId"] == 3
|
assert open_args["nodeId"] == 3
|
||||||
@ -340,16 +320,6 @@ async def test_aeotec_nano_shutter_cover(
|
|||||||
}
|
}
|
||||||
assert not open_args["value"]
|
assert not open_args["value"]
|
||||||
|
|
||||||
close_args = client.async_send_command.call_args_list[1][0][0]
|
|
||||||
assert close_args["command"] == "node.set_value"
|
|
||||||
assert close_args["nodeId"] == 3
|
|
||||||
assert close_args["valueId"] == {
|
|
||||||
"commandClass": 38,
|
|
||||||
"endpoint": 0,
|
|
||||||
"property": "Off",
|
|
||||||
}
|
|
||||||
assert not close_args["value"]
|
|
||||||
|
|
||||||
# Test position update from value updated event
|
# Test position update from value updated event
|
||||||
event = Event(
|
event = Event(
|
||||||
type="value updated",
|
type="value updated",
|
||||||
@ -403,7 +373,7 @@ async def test_aeotec_nano_shutter_cover(
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 2
|
assert len(client.async_send_command.call_args_list) == 1
|
||||||
open_args = client.async_send_command.call_args_list[0][0][0]
|
open_args = client.async_send_command.call_args_list[0][0][0]
|
||||||
assert open_args["command"] == "node.set_value"
|
assert open_args["command"] == "node.set_value"
|
||||||
assert open_args["nodeId"] == 3
|
assert open_args["nodeId"] == 3
|
||||||
@ -414,16 +384,6 @@ async def test_aeotec_nano_shutter_cover(
|
|||||||
}
|
}
|
||||||
assert not open_args["value"]
|
assert not open_args["value"]
|
||||||
|
|
||||||
close_args = client.async_send_command.call_args_list[1][0][0]
|
|
||||||
assert close_args["command"] == "node.set_value"
|
|
||||||
assert close_args["nodeId"] == 3
|
|
||||||
assert close_args["valueId"] == {
|
|
||||||
"commandClass": 38,
|
|
||||||
"endpoint": 0,
|
|
||||||
"property": "Off",
|
|
||||||
}
|
|
||||||
assert not close_args["value"]
|
|
||||||
|
|
||||||
|
|
||||||
async def test_blind_cover(hass, client, iblinds_v2, integration):
|
async def test_blind_cover(hass, client, iblinds_v2, integration):
|
||||||
"""Test a blind cover entity."""
|
"""Test a blind cover entity."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user