mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 10:47:10 +00:00
Remove zwave cover invert workaround. Use config instead. (#6832)
This commit is contained in:
parent
b5336ed04e
commit
fb8323f48d
@ -20,12 +20,13 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
SUPPORT_GARAGE = SUPPORT_OPEN | SUPPORT_CLOSE
|
SUPPORT_GARAGE = SUPPORT_OPEN | SUPPORT_CLOSE
|
||||||
|
|
||||||
|
|
||||||
def get_device(values, **kwargs):
|
def get_device(values, node_config, **kwargs):
|
||||||
"""Create zwave entity device."""
|
"""Create zwave entity device."""
|
||||||
|
invert_buttons = node_config.get(zwave.CONF_INVERT_OPENCLOSE_BUTTONS)
|
||||||
if (values.primary.command_class ==
|
if (values.primary.command_class ==
|
||||||
zwave.const.COMMAND_CLASS_SWITCH_MULTILEVEL
|
zwave.const.COMMAND_CLASS_SWITCH_MULTILEVEL
|
||||||
and values.primary.index == 0):
|
and values.primary.index == 0):
|
||||||
return ZwaveRollershutter(values)
|
return ZwaveRollershutter(values, invert_buttons)
|
||||||
elif (values.primary.command_class in [
|
elif (values.primary.command_class in [
|
||||||
zwave.const.COMMAND_CLASS_SWITCH_BINARY,
|
zwave.const.COMMAND_CLASS_SWITCH_BINARY,
|
||||||
zwave.const.COMMAND_CLASS_BARRIER_OPERATOR]):
|
zwave.const.COMMAND_CLASS_BARRIER_OPERATOR]):
|
||||||
@ -36,13 +37,14 @@ def get_device(values, **kwargs):
|
|||||||
class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice):
|
class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice):
|
||||||
"""Representation of an Zwave roller shutter."""
|
"""Representation of an Zwave roller shutter."""
|
||||||
|
|
||||||
def __init__(self, values):
|
def __init__(self, values, invert_buttons):
|
||||||
"""Initialize the zwave rollershutter."""
|
"""Initialize the zwave rollershutter."""
|
||||||
ZWaveDeviceEntity.__init__(self, values, DOMAIN)
|
ZWaveDeviceEntity.__init__(self, values, DOMAIN)
|
||||||
# pylint: disable=no-member
|
# pylint: disable=no-member
|
||||||
self._open_id = None
|
self._open_id = None
|
||||||
self._close_id = None
|
self._close_id = None
|
||||||
self._current_position = None
|
self._current_position = None
|
||||||
|
self._invert_buttons = invert_buttons
|
||||||
|
|
||||||
self._workaround = workaround.get_device_mapping(values.primary)
|
self._workaround = workaround.get_device_mapping(values.primary)
|
||||||
if self._workaround:
|
if self._workaround:
|
||||||
@ -56,10 +58,9 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice):
|
|||||||
|
|
||||||
if self.values.open and self.values.close and \
|
if self.values.open and self.values.close and \
|
||||||
self._open_id is None and self._close_id is None:
|
self._open_id is None and self._close_id is None:
|
||||||
if self._workaround == workaround.WORKAROUND_REVERSE_OPEN_CLOSE:
|
if self._invert_buttons:
|
||||||
self._open_id = self.values.close.value_id
|
self._open_id = self.values.close.value_id
|
||||||
self._close_id = self.values.open.value_id
|
self._close_id = self.values.open.value_id
|
||||||
self._workaround = None
|
|
||||||
else:
|
else:
|
||||||
self._open_id = self.values.open.value_id
|
self._open_id = self.values.open.value_id
|
||||||
self._close_id = self.values.close.value_id
|
self._close_id = self.values.close.value_id
|
||||||
|
@ -45,6 +45,7 @@ CONF_POLLING_INTERVAL = 'polling_interval'
|
|||||||
CONF_USB_STICK_PATH = 'usb_path'
|
CONF_USB_STICK_PATH = 'usb_path'
|
||||||
CONF_CONFIG_PATH = 'config_path'
|
CONF_CONFIG_PATH = 'config_path'
|
||||||
CONF_IGNORED = 'ignored'
|
CONF_IGNORED = 'ignored'
|
||||||
|
CONF_INVERT_OPENCLOSE_BUTTONS = 'invert_openclose_buttons'
|
||||||
CONF_REFRESH_VALUE = 'refresh_value'
|
CONF_REFRESH_VALUE = 'refresh_value'
|
||||||
CONF_REFRESH_DELAY = 'delay'
|
CONF_REFRESH_DELAY = 'delay'
|
||||||
CONF_DEVICE_CONFIG = 'device_config'
|
CONF_DEVICE_CONFIG = 'device_config'
|
||||||
@ -58,6 +59,7 @@ DEFAULT_CONF_USB_STICK_PATH = '/zwaveusbstick'
|
|||||||
DEFAULT_POLLING_INTERVAL = 60000
|
DEFAULT_POLLING_INTERVAL = 60000
|
||||||
DEFAULT_DEBUG = False
|
DEFAULT_DEBUG = False
|
||||||
DEFAULT_CONF_IGNORED = False
|
DEFAULT_CONF_IGNORED = False
|
||||||
|
DEFAULT_CONF_INVERT_OPENCLOSE_BUTTONS = False
|
||||||
DEFAULT_CONF_REFRESH_VALUE = False
|
DEFAULT_CONF_REFRESH_VALUE = False
|
||||||
DEFAULT_CONF_REFRESH_DELAY = 5
|
DEFAULT_CONF_REFRESH_DELAY = 5
|
||||||
|
|
||||||
@ -105,6 +107,8 @@ SET_WAKEUP_SCHEMA = vol.Schema({
|
|||||||
DEVICE_CONFIG_SCHEMA_ENTRY = vol.Schema({
|
DEVICE_CONFIG_SCHEMA_ENTRY = vol.Schema({
|
||||||
vol.Optional(CONF_POLLING_INTENSITY): cv.positive_int,
|
vol.Optional(CONF_POLLING_INTENSITY): cv.positive_int,
|
||||||
vol.Optional(CONF_IGNORED, default=DEFAULT_CONF_IGNORED): cv.boolean,
|
vol.Optional(CONF_IGNORED, default=DEFAULT_CONF_IGNORED): cv.boolean,
|
||||||
|
vol.Optional(CONF_INVERT_OPENCLOSE_BUTTONS,
|
||||||
|
default=DEFAULT_CONF_INVERT_OPENCLOSE_BUTTONS): cv.boolean,
|
||||||
vol.Optional(CONF_REFRESH_VALUE, default=DEFAULT_CONF_REFRESH_VALUE):
|
vol.Optional(CONF_REFRESH_VALUE, default=DEFAULT_CONF_REFRESH_VALUE):
|
||||||
cv.boolean,
|
cv.boolean,
|
||||||
vol.Optional(CONF_REFRESH_DELAY, default=DEFAULT_CONF_REFRESH_DELAY):
|
vol.Optional(CONF_REFRESH_DELAY, default=DEFAULT_CONF_REFRESH_DELAY):
|
||||||
|
@ -30,7 +30,6 @@ WENZHOU_SLIM_SENSOR_MOTION_MTII = (
|
|||||||
# Workarounds
|
# Workarounds
|
||||||
WORKAROUND_NO_OFF_EVENT = 'trigger_no_off_event'
|
WORKAROUND_NO_OFF_EVENT = 'trigger_no_off_event'
|
||||||
WORKAROUND_NO_POSITION = 'workaround_no_position'
|
WORKAROUND_NO_POSITION = 'workaround_no_position'
|
||||||
WORKAROUND_REVERSE_OPEN_CLOSE = 'reverse_open_close'
|
|
||||||
WORKAROUND_REFRESH_NODE_ON_UPDATE = 'refresh_node_on_update'
|
WORKAROUND_REFRESH_NODE_ON_UPDATE = 'refresh_node_on_update'
|
||||||
WORKAROUND_IGNORE = 'workaround_ignore'
|
WORKAROUND_IGNORE = 'workaround_ignore'
|
||||||
|
|
||||||
@ -43,12 +42,10 @@ DEVICE_MAPPINGS_MTII = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SOMFY_ZRTSI_CONTROLLER_MT = (SOMFY, SOMFY_ZRTSI)
|
SOMFY_ZRTSI_CONTROLLER_MT = (SOMFY, SOMFY_ZRTSI)
|
||||||
FIBARO_FGRM222_MT = (FIBARO, FGRM222_SHUTTER2)
|
|
||||||
|
|
||||||
# List of workarounds by (manufacturer_id, product_type)
|
# List of workarounds by (manufacturer_id, product_type)
|
||||||
DEVICE_MAPPINGS_MT = {
|
DEVICE_MAPPINGS_MT = {
|
||||||
SOMFY_ZRTSI_CONTROLLER_MT: WORKAROUND_NO_POSITION,
|
SOMFY_ZRTSI_CONTROLLER_MT: WORKAROUND_NO_POSITION,
|
||||||
FIBARO_FGRM222_MT: WORKAROUND_REVERSE_OPEN_CLOSE,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,14 +120,17 @@ def test_roller_commands(mock_network, mock_openzwave):
|
|||||||
@patch('homeassistant.components.zwave.NETWORK')
|
@patch('homeassistant.components.zwave.NETWORK')
|
||||||
def test_roller_reverse_open_close(mock_network, mock_openzwave):
|
def test_roller_reverse_open_close(mock_network, mock_openzwave):
|
||||||
"""Test position changed."""
|
"""Test position changed."""
|
||||||
node = MockNode(manufacturer_id='010f', product_type='0301')
|
node = MockNode()
|
||||||
value = MockValue(data=50, node=node,
|
value = MockValue(data=50, node=node,
|
||||||
command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL)
|
command_class=const.COMMAND_CLASS_SWITCH_MULTILEVEL)
|
||||||
open_value = MockValue(data=False, node=node)
|
open_value = MockValue(data=False, node=node)
|
||||||
close_value = MockValue(data=False, node=node)
|
close_value = MockValue(data=False, node=node)
|
||||||
values = MockEntityValues(primary=value, open=open_value,
|
values = MockEntityValues(primary=value, open=open_value,
|
||||||
close=close_value, node=node)
|
close=close_value, node=node)
|
||||||
device = zwave.get_device(node=node, values=values, node_config={})
|
device = zwave.get_device(
|
||||||
|
node=node,
|
||||||
|
values=values,
|
||||||
|
node_config={zwave.zwave.CONF_INVERT_OPENCLOSE_BUTTONS: True})
|
||||||
|
|
||||||
device.open_cover()
|
device.open_cover()
|
||||||
assert mock_network.manager.pressButton.called
|
assert mock_network.manager.pressButton.called
|
||||||
|
Loading…
x
Reference in New Issue
Block a user