Fix Z-Wave relative imports (#21693)

This commit is contained in:
Paulus Schoutsen 2019-03-05 17:17:58 -08:00 committed by GitHub
parent 467d8d616e
commit c9b173405b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 58 additions and 46 deletions

View file

@ -5,11 +5,14 @@ import homeassistant.util.dt as dt_util
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.event import track_point_in_time from homeassistant.helpers.event import track_point_in_time
from homeassistant.components import zwave
from homeassistant.components.zwave import workaround
from homeassistant.components.binary_sensor import ( from homeassistant.components.binary_sensor import (
DOMAIN, DOMAIN,
BinarySensorDevice) BinarySensorDevice)
from . import (
workaround,
ZWaveDeviceEntity
)
from .const import COMMAND_CLASS_SENSOR_BINARY
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -40,17 +43,17 @@ def get_device(values, **kwargs):
if workaround.get_device_component_mapping(values.primary) == DOMAIN: if workaround.get_device_component_mapping(values.primary) == DOMAIN:
return ZWaveBinarySensor(values, None) return ZWaveBinarySensor(values, None)
if values.primary.command_class == zwave.const.COMMAND_CLASS_SENSOR_BINARY: if values.primary.command_class == COMMAND_CLASS_SENSOR_BINARY:
return ZWaveBinarySensor(values, None) return ZWaveBinarySensor(values, None)
return None return None
class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity): class ZWaveBinarySensor(BinarySensorDevice, ZWaveDeviceEntity):
"""Representation of a binary sensor within Z-Wave.""" """Representation of a binary sensor within Z-Wave."""
def __init__(self, values, device_class): def __init__(self, values, device_class):
"""Initialize the sensor.""" """Initialize the sensor."""
zwave.ZWaveDeviceEntity.__init__(self, values, DOMAIN) ZWaveDeviceEntity.__init__(self, values, DOMAIN)
self._sensor_type = device_class self._sensor_type = device_class
self._state = self.values.primary.data self._state = self.values.primary.data

View file

@ -7,10 +7,10 @@ from homeassistant.components.climate.const import (
DOMAIN, STATE_AUTO, STATE_COOL, STATE_HEAT, DOMAIN, STATE_AUTO, STATE_COOL, STATE_HEAT,
SUPPORT_TARGET_TEMPERATURE, SUPPORT_FAN_MODE, SUPPORT_TARGET_TEMPERATURE, SUPPORT_FAN_MODE,
SUPPORT_OPERATION_MODE, SUPPORT_SWING_MODE) SUPPORT_OPERATION_MODE, SUPPORT_SWING_MODE)
from homeassistant.components.zwave import ZWaveDeviceEntity
from homeassistant.const import ( from homeassistant.const import (
STATE_OFF, TEMP_CELSIUS, TEMP_FAHRENHEIT, ATTR_TEMPERATURE) STATE_OFF, TEMP_CELSIUS, TEMP_FAHRENHEIT, ATTR_TEMPERATURE)
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from . import ZWaveDeviceEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View file

@ -4,10 +4,9 @@ from homeassistant.core import callback
from homeassistant.components.cover import ( from homeassistant.components.cover import (
DOMAIN, SUPPORT_OPEN, SUPPORT_CLOSE, ATTR_POSITION) DOMAIN, SUPPORT_OPEN, SUPPORT_CLOSE, ATTR_POSITION)
from homeassistant.components import zwave from homeassistant.components import zwave
from homeassistant.components.zwave import (
ZWaveDeviceEntity, workaround)
from homeassistant.components.cover import CoverDevice from homeassistant.components.cover import CoverDevice
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from . import ZWaveDeviceEntity, workaround
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View file

@ -6,8 +6,8 @@ from homeassistant.core import callback
from homeassistant.components.fan import ( from homeassistant.components.fan import (
DOMAIN, FanEntity, SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH, DOMAIN, FanEntity, SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH,
SUPPORT_SET_SPEED) SUPPORT_SET_SPEED)
from homeassistant.components import zwave
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from . import ZWaveDeviceEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -52,12 +52,12 @@ def get_device(values, **kwargs):
return ZwaveFan(values) return ZwaveFan(values)
class ZwaveFan(zwave.ZWaveDeviceEntity, FanEntity): class ZwaveFan(ZWaveDeviceEntity, FanEntity):
"""Representation of a Z-Wave fan.""" """Representation of a Z-Wave fan."""
def __init__(self, values): def __init__(self, values):
"""Initialize the Z-Wave fan device.""" """Initialize the Z-Wave fan device."""
zwave.ZWaveDeviceEntity.__init__(self, values, DOMAIN) ZWaveDeviceEntity.__init__(self, values, DOMAIN)
self.update_properties() self.update_properties()
def update_properties(self): def update_properties(self):

View file

@ -7,10 +7,15 @@ from homeassistant.components.light import (
ATTR_WHITE_VALUE, ATTR_BRIGHTNESS, ATTR_COLOR_TEMP, ATTR_HS_COLOR, ATTR_WHITE_VALUE, ATTR_BRIGHTNESS, ATTR_COLOR_TEMP, ATTR_HS_COLOR,
ATTR_TRANSITION, SUPPORT_BRIGHTNESS, SUPPORT_COLOR_TEMP, SUPPORT_COLOR, ATTR_TRANSITION, SUPPORT_BRIGHTNESS, SUPPORT_COLOR_TEMP, SUPPORT_COLOR,
SUPPORT_TRANSITION, SUPPORT_WHITE_VALUE, DOMAIN, Light) SUPPORT_TRANSITION, SUPPORT_WHITE_VALUE, DOMAIN, Light)
from homeassistant.components import zwave
from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.const import STATE_OFF, STATE_ON
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
import homeassistant.util.color as color_util import homeassistant.util.color as color_util
from . import (
CONF_REFRESH_VALUE,
CONF_REFRESH_DELAY,
const,
ZWaveDeviceEntity,
)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -68,13 +73,13 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
def get_device(node, values, node_config, **kwargs): def get_device(node, values, node_config, **kwargs):
"""Create Z-Wave entity device.""" """Create Z-Wave entity device."""
refresh = node_config.get(zwave.CONF_REFRESH_VALUE) refresh = node_config.get(CONF_REFRESH_VALUE)
delay = node_config.get(zwave.CONF_REFRESH_DELAY) delay = node_config.get(CONF_REFRESH_DELAY)
_LOGGER.debug("node=%d value=%d node_config=%s CONF_REFRESH_VALUE=%s" _LOGGER.debug("node=%d value=%d node_config=%s CONF_REFRESH_VALUE=%s"
" CONF_REFRESH_DELAY=%s", node.node_id, " CONF_REFRESH_DELAY=%s", node.node_id,
values.primary.value_id, node_config, refresh, delay) values.primary.value_id, node_config, refresh, delay)
if node.has_command_class(zwave.const.COMMAND_CLASS_SWITCH_COLOR): if node.has_command_class(const.COMMAND_CLASS_SWITCH_COLOR):
return ZwaveColorLight(values, refresh, delay) return ZwaveColorLight(values, refresh, delay)
return ZwaveDimmer(values, refresh, delay) return ZwaveDimmer(values, refresh, delay)
@ -104,12 +109,12 @@ def ct_to_hs(temp):
return [int(val) for val in colorlist] return [int(val) for val in colorlist]
class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): class ZwaveDimmer(ZWaveDeviceEntity, Light):
"""Representation of a Z-Wave dimmer.""" """Representation of a Z-Wave dimmer."""
def __init__(self, values, refresh, delay): def __init__(self, values, refresh, delay):
"""Initialize the light.""" """Initialize the light."""
zwave.ZWaveDeviceEntity.__init__(self, values, DOMAIN) ZWaveDeviceEntity.__init__(self, values, DOMAIN)
self._brightness = None self._brightness = None
self._state = None self._state = None
self._supported_features = None self._supported_features = None

View file

@ -5,9 +5,9 @@ import voluptuous as vol
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.components.lock import DOMAIN, LockDevice from homeassistant.components.lock import DOMAIN, LockDevice
from homeassistant.components import zwave
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from . import ZWaveDeviceEntity, const
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -135,18 +135,18 @@ ALARM_TYPE_STD = [
] ]
SET_USERCODE_SCHEMA = vol.Schema({ SET_USERCODE_SCHEMA = vol.Schema({
vol.Required(zwave.const.ATTR_NODE_ID): vol.Coerce(int), vol.Required(const.ATTR_NODE_ID): vol.Coerce(int),
vol.Required(ATTR_CODE_SLOT): vol.Coerce(int), vol.Required(ATTR_CODE_SLOT): vol.Coerce(int),
vol.Required(ATTR_USERCODE): cv.string, vol.Required(ATTR_USERCODE): cv.string,
}) })
GET_USERCODE_SCHEMA = vol.Schema({ GET_USERCODE_SCHEMA = vol.Schema({
vol.Required(zwave.const.ATTR_NODE_ID): vol.Coerce(int), vol.Required(const.ATTR_NODE_ID): vol.Coerce(int),
vol.Required(ATTR_CODE_SLOT): vol.Coerce(int), vol.Required(ATTR_CODE_SLOT): vol.Coerce(int),
}) })
CLEAR_USERCODE_SCHEMA = vol.Schema({ CLEAR_USERCODE_SCHEMA = vol.Schema({
vol.Required(zwave.const.ATTR_NODE_ID): vol.Coerce(int), vol.Required(const.ATTR_NODE_ID): vol.Coerce(int),
vol.Required(ATTR_CODE_SLOT): vol.Coerce(int), vol.Required(ATTR_CODE_SLOT): vol.Coerce(int),
}) })
@ -166,17 +166,17 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
async_dispatcher_connect(hass, 'zwave_new_lock', async_add_lock) async_dispatcher_connect(hass, 'zwave_new_lock', async_add_lock)
network = hass.data[zwave.const.DATA_NETWORK] network = hass.data[const.DATA_NETWORK]
def set_usercode(service): def set_usercode(service):
"""Set the usercode to index X on the lock.""" """Set the usercode to index X on the lock."""
node_id = service.data.get(zwave.const.ATTR_NODE_ID) node_id = service.data.get(const.ATTR_NODE_ID)
lock_node = network.nodes[node_id] lock_node = network.nodes[node_id]
code_slot = service.data.get(ATTR_CODE_SLOT) code_slot = service.data.get(ATTR_CODE_SLOT)
usercode = service.data.get(ATTR_USERCODE) usercode = service.data.get(ATTR_USERCODE)
for value in lock_node.get_values( for value in lock_node.get_values(
class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): class_id=const.COMMAND_CLASS_USER_CODE).values():
if value.index != code_slot: if value.index != code_slot:
continue continue
if len(str(usercode)) < 4: if len(str(usercode)) < 4:
@ -190,12 +190,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
def get_usercode(service): def get_usercode(service):
"""Get a usercode at index X on the lock.""" """Get a usercode at index X on the lock."""
node_id = service.data.get(zwave.const.ATTR_NODE_ID) node_id = service.data.get(const.ATTR_NODE_ID)
lock_node = network.nodes[node_id] lock_node = network.nodes[node_id]
code_slot = service.data.get(ATTR_CODE_SLOT) code_slot = service.data.get(ATTR_CODE_SLOT)
for value in lock_node.get_values( for value in lock_node.get_values(
class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): class_id=const.COMMAND_CLASS_USER_CODE).values():
if value.index != code_slot: if value.index != code_slot:
continue continue
_LOGGER.info("Usercode at slot %s is: %s", value.index, value.data) _LOGGER.info("Usercode at slot %s is: %s", value.index, value.data)
@ -203,13 +203,13 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
def clear_usercode(service): def clear_usercode(service):
"""Set usercode to slot X on the lock.""" """Set usercode to slot X on the lock."""
node_id = service.data.get(zwave.const.ATTR_NODE_ID) node_id = service.data.get(const.ATTR_NODE_ID)
lock_node = network.nodes[node_id] lock_node = network.nodes[node_id]
code_slot = service.data.get(ATTR_CODE_SLOT) code_slot = service.data.get(ATTR_CODE_SLOT)
data = '' data = ''
for value in lock_node.get_values( for value in lock_node.get_values(
class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): class_id=const.COMMAND_CLASS_USER_CODE).values():
if value.index != code_slot: if value.index != code_slot:
continue continue
for i in range(len(value.data)): for i in range(len(value.data)):
@ -236,12 +236,12 @@ def get_device(node, values, **kwargs):
return ZwaveLock(values) return ZwaveLock(values)
class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): class ZwaveLock(ZWaveDeviceEntity, LockDevice):
"""Representation of a Z-Wave Lock.""" """Representation of a Z-Wave Lock."""
def __init__(self, values): def __init__(self, values):
"""Initialize the Z-Wave lock device.""" """Initialize the Z-Wave lock device."""
zwave.ZWaveDeviceEntity.__init__(self, values, DOMAIN) ZWaveDeviceEntity.__init__(self, values, DOMAIN)
self._state = None self._state = None
self._notification = None self._notification = None
self._lock_status = None self._lock_status = None
@ -297,12 +297,12 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice):
if self._track_message_workaround: if self._track_message_workaround:
this_message = self.node.stats['lastReceivedMessage'][5] this_message = self.node.stats['lastReceivedMessage'][5]
if this_message == zwave.const.COMMAND_CLASS_DOOR_LOCK: if this_message == const.COMMAND_CLASS_DOOR_LOCK:
self._state = self.values.primary.data self._state = self.values.primary.data
_LOGGER.debug("set state to %s based on message tracking", _LOGGER.debug("set state to %s based on message tracking",
self._state) self._state)
if self._previous_message == \ if self._previous_message == \
zwave.const.COMMAND_CLASS_DOOR_LOCK: const.COMMAND_CLASS_DOOR_LOCK:
if self._state: if self._state:
self._notification = \ self._notification = \
LOCK_NOTIFICATION[NOTIFICATION_RF_LOCK] LOCK_NOTIFICATION[NOTIFICATION_RF_LOCK]

View file

@ -2,10 +2,12 @@
import logging import logging
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.components.sensor import DOMAIN from homeassistant.components.sensor import DOMAIN
from homeassistant.components import zwave
from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from . import (
const,
ZWaveDeviceEntity,
)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -28,23 +30,23 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
def get_device(node, values, **kwargs): def get_device(node, values, **kwargs):
"""Create Z-Wave entity device.""" """Create Z-Wave entity device."""
# Generic Device mappings # Generic Device mappings
if node.has_command_class(zwave.const.COMMAND_CLASS_SENSOR_MULTILEVEL): if node.has_command_class(const.COMMAND_CLASS_SENSOR_MULTILEVEL):
return ZWaveMultilevelSensor(values) return ZWaveMultilevelSensor(values)
if node.has_command_class(zwave.const.COMMAND_CLASS_METER) and \ if node.has_command_class(const.COMMAND_CLASS_METER) and \
values.primary.type == zwave.const.TYPE_DECIMAL: values.primary.type == const.TYPE_DECIMAL:
return ZWaveMultilevelSensor(values) return ZWaveMultilevelSensor(values)
if node.has_command_class(zwave.const.COMMAND_CLASS_ALARM) or \ if node.has_command_class(const.COMMAND_CLASS_ALARM) or \
node.has_command_class(zwave.const.COMMAND_CLASS_SENSOR_ALARM): node.has_command_class(const.COMMAND_CLASS_SENSOR_ALARM):
return ZWaveAlarmSensor(values) return ZWaveAlarmSensor(values)
return None return None
class ZWaveSensor(zwave.ZWaveDeviceEntity): class ZWaveSensor(ZWaveDeviceEntity):
"""Representation of a Z-Wave sensor.""" """Representation of a Z-Wave sensor."""
def __init__(self, values): def __init__(self, values):
"""Initialize the sensor.""" """Initialize the sensor."""
zwave.ZWaveDeviceEntity.__init__(self, values, DOMAIN) ZWaveDeviceEntity.__init__(self, values, DOMAIN)
self.update_properties() self.update_properties()
def update_properties(self): def update_properties(self):

View file

@ -3,8 +3,11 @@ import logging
import time import time
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.components.switch import DOMAIN, SwitchDevice from homeassistant.components.switch import DOMAIN, SwitchDevice
from homeassistant.components import zwave
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from . import (
ZWaveDeviceEntity,
workaround,
)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -30,15 +33,15 @@ def get_device(values, **kwargs):
return ZwaveSwitch(values) return ZwaveSwitch(values)
class ZwaveSwitch(zwave.ZWaveDeviceEntity, SwitchDevice): class ZwaveSwitch(ZWaveDeviceEntity, SwitchDevice):
"""Representation of a Z-Wave switch.""" """Representation of a Z-Wave switch."""
def __init__(self, values): def __init__(self, values):
"""Initialize the Z-Wave switch device.""" """Initialize the Z-Wave switch device."""
zwave.ZWaveDeviceEntity.__init__(self, values, DOMAIN) ZWaveDeviceEntity.__init__(self, values, DOMAIN)
self.refresh_on_update = ( self.refresh_on_update = (
zwave.workaround.get_device_mapping(values.primary) == workaround.get_device_mapping(values.primary) ==
zwave.workaround.WORKAROUND_REFRESH_NODE_ON_UPDATE) workaround.WORKAROUND_REFRESH_NODE_ON_UPDATE)
self.last_update = time.perf_counter() self.last_update = time.perf_counter()
self._state = self.values.primary.data self._state = self.values.primary.data