def test_setup_platform(hass, mock_openzwave): """Test invalid device config.""" mock_device = MagicMock() hass.data[DATA_NETWORK] = MagicMock() hass.data[zwave.DATA_DEVICES] = {456: mock_device} async_add_devices = MagicMock() result = yield from zwave.async_setup_platform( hass, None, async_add_devices, None) assert not result assert not async_add_devices.called result = yield from zwave.async_setup_platform( hass, None, async_add_devices, {const.DISCOVERY_DEVICE: 123}) assert not result assert not async_add_devices.called result = yield from zwave.async_setup_platform( hass, None, async_add_devices, {const.DISCOVERY_DEVICE: 456}) assert result assert async_add_devices.called assert len(async_add_devices.mock_calls) == 1 assert async_add_devices.mock_calls[0][1][0] == [mock_device]
def test_setup_platform(hass, mock_openzwave): """Test invalid device config.""" mock_device = MagicMock() hass.data[DATA_NETWORK] = MagicMock() hass.data[zwave.DATA_DEVICES] = {456: mock_device} async_add_devices = MagicMock() result = yield from zwave.async_setup_platform(hass, None, async_add_devices, None) assert not result assert not async_add_devices.called result = yield from zwave.async_setup_platform( hass, None, async_add_devices, {const.DISCOVERY_DEVICE: 123}) assert not result assert not async_add_devices.called result = yield from zwave.async_setup_platform( hass, None, async_add_devices, {const.DISCOVERY_DEVICE: 456}) assert result assert async_add_devices.called assert len(async_add_devices.mock_calls) == 1 assert async_add_devices.mock_calls[0][1][0] == [mock_device]
def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up the Z-Wave Lock platform.""" yield from zwave.async_setup_platform( hass, config, async_add_devices, discovery_info) network = hass.data[zwave.const.DATA_NETWORK] def set_usercode(service): """Set the usercode to index X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) usercode = service.data.get(ATTR_USERCODE) for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue if len(str(usercode)) < 4: _LOGGER.error("Invalid code provided: (%s) " "usercode must be atleast 4 and at most" " %s digits", usercode, len(value.data)) break value.data = str(usercode) break def get_usercode(service): """Get a usercode at index X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue _LOGGER.info("Usercode at slot %s is: %s", value.index, value.data) break def clear_usercode(service): """Set usercode to slot X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) data = '' for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue for i in range(len(value.data)): data += '\0' i += 1 _LOGGER.debug('Data to clear lock: %s', data) value.data = data _LOGGER.info("Usercode at slot %s is cleared", value.index) break hass.services.async_register( DOMAIN, SERVICE_SET_USERCODE, set_usercode, schema=SET_USERCODE_SCHEMA) hass.services.async_register( DOMAIN, SERVICE_GET_USERCODE, get_usercode, schema=GET_USERCODE_SCHEMA) hass.services.async_register( DOMAIN, SERVICE_CLEAR_USERCODE, clear_usercode, schema=CLEAR_USERCODE_SCHEMA)
def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up the Z-Wave Lock platform.""" yield from zwave.async_setup_platform(hass, config, async_add_devices, discovery_info) descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) network = hass.data[zwave.const.DATA_NETWORK] def set_usercode(service): """Set the usercode to index X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) usercode = service.data.get(ATTR_USERCODE) for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue if len(str(usercode)) < 4: _LOGGER.error( "Invalid code provided: (%s) " "usercode must be atleast 4 and at most" " %s digits", usercode, len(value.data)) break value.data = str(usercode) break def get_usercode(service): """Get a usercode at index X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue _LOGGER.info("Usercode at slot %s is: %s", value.index, value.data) break def clear_usercode(service): """Set usercode to slot X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) data = '' for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue for i in range(len(value.data)): data += '\0' i += 1 _LOGGER.debug('Data to clear lock: %s', data) value.data = data _LOGGER.info("Usercode at slot %s is cleared", value.index) break hass.services.async_register(DOMAIN, SERVICE_SET_USERCODE, set_usercode, descriptions.get(SERVICE_SET_USERCODE), schema=SET_USERCODE_SCHEMA) hass.services.async_register(DOMAIN, SERVICE_GET_USERCODE, get_usercode, descriptions.get(SERVICE_GET_USERCODE), schema=GET_USERCODE_SCHEMA) hass.services.async_register(DOMAIN, SERVICE_CLEAR_USERCODE, clear_usercode, descriptions.get(SERVICE_CLEAR_USERCODE), schema=CLEAR_USERCODE_SCHEMA)
def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Generic Z-Wave platform setup.""" yield from zwave.async_setup_platform( hass, config, async_add_devices, discovery_info) descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) network = hass.data[zwave.ZWAVE_NETWORK] def set_usercode(service): """Set the usercode to index X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) usercode = service.data.get(ATTR_USERCODE) for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue if len(str(usercode)) > 4: _LOGGER.error('Invalid code provided: (%s)' ' usercode must %s or less digits', usercode, len(value.data)) break value.data = str(usercode) break def get_usercode(service): """Get a usercode at index X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue _LOGGER.info('Usercode at slot %s is: %s', value.index, value.data) break def clear_usercode(service): """Set usercode to slot X on the lock.""" node_id = service.data.get(zwave.const.ATTR_NODE_ID) lock_node = network.nodes[node_id] code_slot = service.data.get(ATTR_CODE_SLOT) data = '' for value in lock_node.get_values( class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue for i in range(len(value.data)): data += '\0' i += 1 _LOGGER.debug('Data to clear lock: %s', data) value.data = data _LOGGER.info('Usercode at slot %s is cleared', value.index) break hass.services.async_register(DOMAIN, SERVICE_SET_USERCODE, set_usercode, descriptions.get(SERVICE_SET_USERCODE), schema=SET_USERCODE_SCHEMA) hass.services.async_register(DOMAIN, SERVICE_GET_USERCODE, get_usercode, descriptions.get(SERVICE_GET_USERCODE), schema=GET_USERCODE_SCHEMA) hass.services.async_register(DOMAIN, SERVICE_CLEAR_USERCODE, clear_usercode, descriptions.get(SERVICE_CLEAR_USERCODE), schema=CLEAR_USERCODE_SCHEMA)