Z-Wave: Rename customize to device_config [Breaking change] (#5933)
* Z-Wave: Rename customize to device_config * Fix light * Make entity id not requiredpull/5939/head
parent
41849eab06
commit
8ca3ca8564
|
@ -17,7 +17,6 @@ from homeassistant.const import STATE_OFF, STATE_ON
|
|||
from homeassistant.util.color import HASS_COLOR_MAX, HASS_COLOR_MIN, \
|
||||
color_temperature_mired_to_kelvin, color_temperature_to_rgb, \
|
||||
color_rgb_to_rgbw, color_rgbw_to_rgb
|
||||
from homeassistant.helpers import customize
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -56,7 +55,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||
node = zwave.NETWORK.nodes[discovery_info[zwave.const.ATTR_NODE_ID]]
|
||||
value = node.values[discovery_info[zwave.const.ATTR_VALUE_ID]]
|
||||
name = '{}.{}'.format(DOMAIN, zwave.object_id(value))
|
||||
node_config = customize.get_overrides(hass, zwave.DOMAIN, name)
|
||||
node_config = hass.data[zwave.DATA_DEVICE_CONFIG].get(name)
|
||||
refresh = node_config.get(zwave.CONF_REFRESH_VALUE)
|
||||
delay = node_config.get(zwave.CONF_REFRESH_DELAY)
|
||||
_LOGGER.debug('name=%s node_config=%s CONF_REFRESH_VALUE=%s'
|
||||
|
|
|
@ -11,11 +11,10 @@ from pprint import pprint
|
|||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.helpers import discovery, customize
|
||||
from homeassistant.helpers import discovery
|
||||
from homeassistant.const import (
|
||||
ATTR_BATTERY_LEVEL, ATTR_LOCATION, ATTR_ENTITY_ID, ATTR_WAKEUP,
|
||||
CONF_CUSTOMIZE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP,
|
||||
CONF_ENTITY_ID)
|
||||
EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP)
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.helpers.event import track_time_change
|
||||
from homeassistant.util import convert, slugify
|
||||
|
@ -38,6 +37,7 @@ CONF_CONFIG_PATH = 'config_path'
|
|||
CONF_IGNORED = 'ignored'
|
||||
CONF_REFRESH_VALUE = 'refresh_value'
|
||||
CONF_REFRESH_DELAY = 'delay'
|
||||
CONF_DEVICE_CONFIG = 'device_config'
|
||||
|
||||
DEFAULT_CONF_AUTOHEAL = True
|
||||
DEFAULT_CONF_USB_STICK_PATH = '/zwaveusbstick'
|
||||
|
@ -49,6 +49,7 @@ DEFAULT_CONF_REFRESH_DELAY = 2
|
|||
DOMAIN = 'zwave'
|
||||
|
||||
NETWORK = None
|
||||
DATA_DEVICE_CONFIG = 'zwave_device_config'
|
||||
|
||||
# List of tuple (DOMAIN, discovered service, supported command classes,
|
||||
# value type, genre type, specific device class).
|
||||
|
@ -159,8 +160,7 @@ SET_WAKEUP_SCHEMA = vol.Schema({
|
|||
vol.All(vol.Coerce(int), cv.positive_int),
|
||||
})
|
||||
|
||||
_ZWAVE_CUSTOMIZE_SCHEMA_ENTRY = vol.Schema({
|
||||
vol.Required(CONF_ENTITY_ID): cv.match_all,
|
||||
_DEVICE_CONFIG_SCHEMA_ENTRY = vol.Schema({
|
||||
vol.Optional(CONF_POLLING_INTENSITY): cv.positive_int,
|
||||
vol.Optional(CONF_IGNORED, default=DEFAULT_CONF_IGNORED): cv.boolean,
|
||||
vol.Optional(CONF_REFRESH_VALUE, default=DEFAULT_CONF_REFRESH_VALUE):
|
||||
|
@ -173,9 +173,8 @@ CONFIG_SCHEMA = vol.Schema({
|
|||
DOMAIN: vol.Schema({
|
||||
vol.Optional(CONF_AUTOHEAL, default=DEFAULT_CONF_AUTOHEAL): cv.boolean,
|
||||
vol.Optional(CONF_CONFIG_PATH): cv.string,
|
||||
vol.Optional(CONF_CUSTOMIZE, default=[]):
|
||||
vol.All(customize.CUSTOMIZE_SCHEMA,
|
||||
[_ZWAVE_CUSTOMIZE_SCHEMA_ENTRY]),
|
||||
vol.Optional(CONF_DEVICE_CONFIG, default={}):
|
||||
_DEVICE_CONFIG_SCHEMA_ENTRY,
|
||||
vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean,
|
||||
vol.Optional(CONF_POLLING_INTERVAL, default=DEFAULT_POLLING_INTERVAL):
|
||||
cv.positive_int,
|
||||
|
@ -296,8 +295,8 @@ def setup(hass, config):
|
|||
|
||||
# Load configuration
|
||||
use_debug = config[DOMAIN].get(CONF_DEBUG)
|
||||
customize.set_customize(hass, DOMAIN, config[DOMAIN].get(CONF_CUSTOMIZE))
|
||||
autoheal = config[DOMAIN].get(CONF_AUTOHEAL)
|
||||
hass.data[DATA_DEVICE_CONFIG] = config[DOMAIN][CONF_DEVICE_CONFIG]
|
||||
|
||||
# Setup options
|
||||
options = ZWaveOption(
|
||||
|
@ -382,7 +381,7 @@ def setup(hass, config):
|
|||
component = workaround_component
|
||||
|
||||
name = "{}.{}".format(component, object_id(value))
|
||||
node_config = customize.get_overrides(hass, DOMAIN, name)
|
||||
node_config = hass.data[DATA_DEVICE_CONFIG].get(name)
|
||||
|
||||
if node_config.get(CONF_IGNORED):
|
||||
_LOGGER.info("Ignoring device %s", name)
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
"""The tests for the zwave component."""
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from homeassistant.bootstrap import setup_component
|
||||
from homeassistant.components import zwave
|
||||
from tests.common import get_test_home_assistant
|
||||
|
||||
|
||||
class TestComponentZwave(unittest.TestCase):
|
||||
"""Test the Zwave component."""
|
||||
|
||||
def setUp(self):
|
||||
"""Setup things to be run when tests are started."""
|
||||
self.hass = get_test_home_assistant()
|
||||
|
||||
def tearDown(self):
|
||||
"""Stop everything that was started."""
|
||||
self.hass.stop()
|
||||
|
||||
def _validate_config(self, validator, config):
|
||||
libopenzwave = MagicMock()
|
||||
libopenzwave.__file__ = 'test'
|
||||
with patch.dict('sys.modules', {
|
||||
'libopenzwave': libopenzwave,
|
||||
'openzwave.option': MagicMock(),
|
||||
'openzwave.network': MagicMock(),
|
||||
'openzwave.group': MagicMock(),
|
||||
}):
|
||||
validator(setup_component(self.hass, zwave.DOMAIN, {
|
||||
zwave.DOMAIN: config,
|
||||
}))
|
||||
|
||||
def test_empty_config(self):
|
||||
"""Test empty config."""
|
||||
self._validate_config(self.assertTrue, {})
|
||||
|
||||
def test_empty_customize(self):
|
||||
"""Test empty customize."""
|
||||
self._validate_config(self.assertTrue, {'customize': {}})
|
||||
self._validate_config(self.assertTrue, {'customize': []})
|
||||
|
||||
def test_empty_customize_content(self):
|
||||
"""Test empty customize."""
|
||||
self._validate_config(
|
||||
self.assertTrue, {'customize': {'test.test': {}}})
|
||||
|
||||
def test_full_customize_dict(self):
|
||||
"""Test full customize as dict."""
|
||||
self._validate_config(self.assertTrue, {'customize': {'test.test': {
|
||||
zwave.CONF_POLLING_INTENSITY: 10,
|
||||
zwave.CONF_IGNORED: 1,
|
||||
zwave.CONF_REFRESH_VALUE: 1,
|
||||
zwave.CONF_REFRESH_DELAY: 10}}})
|
||||
|
||||
def test_full_customize_list(self):
|
||||
"""Test full customize as list."""
|
||||
self._validate_config(self.assertTrue, {'customize': [{
|
||||
'entity_id': 'test.test',
|
||||
zwave.CONF_POLLING_INTENSITY: 10,
|
||||
zwave.CONF_IGNORED: 1,
|
||||
zwave.CONF_REFRESH_VALUE: 1,
|
||||
zwave.CONF_REFRESH_DELAY: 10}]})
|
||||
|
||||
def test_bad_customize(self):
|
||||
"""Test customize with extra keys."""
|
||||
self._validate_config(
|
||||
self.assertFalse, {'customize': {'test.test': {'extra_key': 10}}})
|
Loading…
Reference in New Issue