Z-Wave: Rename customize to device_config [Breaking change] (#5933)

* Z-Wave: Rename customize to device_config

* Fix light

* Make entity id not required
pull/5939/head
Paulus Schoutsen 2017-02-12 23:55:27 -08:00 committed by GitHub
parent 41849eab06
commit 8ca3ca8564
3 changed files with 10 additions and 80 deletions

View File

@ -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'

View File

@ -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)

View File

@ -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}}})