From 0a6d49b293d57343ef8b6eba740de0d4c18b2d2b Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Fri, 26 Jul 2019 23:27:17 -0400 Subject: [PATCH] Improve handling of Z-Wave config entry vs yaml config (#25112) * Improved handling of config entry vs yaml config * Address review comment --- homeassistant/components/zwave/__init__.py | 19 ++++++++-------- homeassistant/components/zwave/const.py | 25 +++++++++++----------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index cc5df9dce0f..15df61e43d9 100644 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -32,7 +32,7 @@ from .const import ( CONF_USB_STICK_PATH, CONF_CONFIG_PATH, CONF_NETWORK_KEY, DEFAULT_CONF_AUTOHEAL, DEFAULT_CONF_USB_STICK_PATH, DEFAULT_POLLING_INTERVAL, DEFAULT_DEBUG, DOMAIN, - DATA_DEVICES, DATA_NETWORK, DATA_ENTITY_VALUES) + DATA_DEVICES, DATA_NETWORK, DATA_ENTITY_VALUES, DATA_ZWAVE_CONFIG) from .node_entity import ZWaveBaseEntity, ZWaveNodeEntity from . import workaround from .discovery_schemas import DISCOVERY_SCHEMAS @@ -56,8 +56,6 @@ CONF_DEVICE_CONFIG = 'device_config' CONF_DEVICE_CONFIG_GLOB = 'device_config_glob' CONF_DEVICE_CONFIG_DOMAIN = 'device_config_domain' -DATA_ZWAVE_CONFIG = 'zwave_config' - DEFAULT_CONF_IGNORED = False DEFAULT_CONF_INVERT_OPENCLOSE_BUTTONS = False DEFAULT_CONF_INVERT_PERCENT = False @@ -266,9 +264,13 @@ async def async_setup_entry(hass, config_entry): from openzwave.network import ZWaveNetwork from openzwave.group import ZWaveGroup - config = {} + # Merge config entry and yaml config + config = config_entry.data if DATA_ZWAVE_CONFIG in hass.data: - config = hass.data[DATA_ZWAVE_CONFIG] + config = {**config, **hass.data[DATA_ZWAVE_CONFIG]} + + # Update hass.data with merged config so we can access it elsewhere + hass.data[DATA_ZWAVE_CONFIG] = config # Load configuration use_debug = config.get(CONF_DEBUG, DEFAULT_DEBUG) @@ -279,8 +281,7 @@ async def async_setup_entry(hass, config_entry): config.get(CONF_DEVICE_CONFIG_DOMAIN), config.get(CONF_DEVICE_CONFIG_GLOB)) - usb_path = config.get( - CONF_USB_STICK_PATH, config_entry.data[CONF_USB_STICK_PATH]) + usb_path = config[CONF_USB_STICK_PATH] _LOGGER.info('Z-Wave USB path is %s', usb_path) @@ -292,8 +293,8 @@ async def async_setup_entry(hass, config_entry): options.set_console_output(use_debug) - if config_entry.data.get(CONF_NETWORK_KEY): - options.addOption("NetworkKey", config_entry.data[CONF_NETWORK_KEY]) + if config.get(CONF_NETWORK_KEY): + options.addOption("NetworkKey", config[CONF_NETWORK_KEY]) await hass.async_add_executor_job(options.lock) network = hass.data[DATA_NETWORK] = ZWaveNetwork(options, autostart=False) diff --git a/homeassistant/components/zwave/const.py b/homeassistant/components/zwave/const.py index 5a09b54235d..72e08299691 100644 --- a/homeassistant/components/zwave/const.py +++ b/homeassistant/components/zwave/const.py @@ -19,27 +19,28 @@ ATTR_CONFIG_VALUE = "value" ATTR_POLL_INTENSITY = "poll_intensity" ATTR_VALUE_INDEX = "value_index" ATTR_VALUE_INSTANCE = "value_instance" -ATTR_UPDATE_IDS = 'update_ids' +ATTR_UPDATE_IDS = "update_ids" NETWORK_READY_WAIT_SECS = 300 NODE_READY_WAIT_SECS = 30 -CONF_AUTOHEAL = 'autoheal' -CONF_DEBUG = 'debug' -CONF_POLLING_INTERVAL = 'polling_interval' -CONF_USB_STICK_PATH = 'usb_path' -CONF_CONFIG_PATH = 'config_path' -CONF_NETWORK_KEY = 'network_key' +CONF_AUTOHEAL = "autoheal" +CONF_DEBUG = "debug" +CONF_POLLING_INTERVAL = "polling_interval" +CONF_USB_STICK_PATH = "usb_path" +CONF_CONFIG_PATH = "config_path" +CONF_NETWORK_KEY = "network_key" DEFAULT_CONF_AUTOHEAL = False -DEFAULT_CONF_USB_STICK_PATH = '/zwaveusbstick' +DEFAULT_CONF_USB_STICK_PATH = "/zwaveusbstick" DEFAULT_POLLING_INTERVAL = 60000 DEFAULT_DEBUG = False -DISCOVERY_DEVICE = 'device' +DISCOVERY_DEVICE = "device" -DATA_DEVICES = 'zwave_devices' -DATA_NETWORK = 'zwave_network' -DATA_ENTITY_VALUES = 'zwave_entity_values' +DATA_DEVICES = "zwave_devices" +DATA_NETWORK = "zwave_network" +DATA_ENTITY_VALUES = "zwave_entity_values" +DATA_ZWAVE_CONFIG = "zwave_config" SERVICE_CHANGE_ASSOCIATION = "change_association" SERVICE_ADD_NODE = "add_node"