mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 16:27:08 +00:00
Zwave import fixes for stability (#1845)
This commit is contained in:
parent
ea38742067
commit
b45c0cd735
@ -8,11 +8,7 @@ import logging
|
|||||||
import datetime
|
import datetime
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
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 (
|
|
||||||
ATTR_NODE_ID, ATTR_VALUE_ID,
|
|
||||||
COMMAND_CLASS_SENSOR_BINARY, NETWORK,
|
|
||||||
ZWaveDeviceEntity, get_config_value)
|
|
||||||
from homeassistant.components.binary_sensor import (
|
from homeassistant.components.binary_sensor import (
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
BinarySensorDevice)
|
BinarySensorDevice)
|
||||||
@ -36,11 +32,11 @@ DEVICE_MAPPINGS = {
|
|||||||
|
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Setup the Z-Wave platform for sensors."""
|
"""Setup the Z-Wave platform for sensors."""
|
||||||
if discovery_info is None or NETWORK is None:
|
if discovery_info is None or zwave.NETWORK is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
node = NETWORK.nodes[discovery_info[ATTR_NODE_ID]]
|
node = zwave.NETWORK.nodes[discovery_info[zwave.ATTR_NODE_ID]]
|
||||||
value = node.values[discovery_info[ATTR_VALUE_ID]]
|
value = node.values[discovery_info[zwave.ATTR_VALUE_ID]]
|
||||||
value.set_change_verified(False)
|
value.set_change_verified(False)
|
||||||
|
|
||||||
# Make sure that we have values for the key before converting to int
|
# Make sure that we have values for the key before converting to int
|
||||||
@ -53,18 +49,19 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
if specific_sensor_key in DEVICE_MAPPINGS:
|
if specific_sensor_key in DEVICE_MAPPINGS:
|
||||||
if DEVICE_MAPPINGS[specific_sensor_key] == WORKAROUND_NO_OFF_EVENT:
|
if DEVICE_MAPPINGS[specific_sensor_key] == WORKAROUND_NO_OFF_EVENT:
|
||||||
# Default the multiplier to 4
|
# Default the multiplier to 4
|
||||||
re_arm_multiplier = (get_config_value(value.node, 9) or 4)
|
re_arm_multiplier = (zwave.get_config_value(value.node,
|
||||||
|
9) or 4)
|
||||||
add_devices([
|
add_devices([
|
||||||
ZWaveTriggerSensor(value, "motion",
|
ZWaveTriggerSensor(value, "motion",
|
||||||
hass, re_arm_multiplier * 8)
|
hass, re_arm_multiplier * 8)
|
||||||
])
|
])
|
||||||
return
|
return
|
||||||
|
|
||||||
if value.command_class == COMMAND_CLASS_SENSOR_BINARY:
|
if value.command_class == zwave.COMMAND_CLASS_SENSOR_BINARY:
|
||||||
add_devices([ZWaveBinarySensor(value, None)])
|
add_devices([ZWaveBinarySensor(value, None)])
|
||||||
|
|
||||||
|
|
||||||
class ZWaveBinarySensor(BinarySensorDevice, ZWaveDeviceEntity):
|
class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity):
|
||||||
"""Representation of a binary sensor within Z-Wave."""
|
"""Representation of a binary sensor within Z-Wave."""
|
||||||
|
|
||||||
def __init__(self, value, sensor_class):
|
def __init__(self, value, sensor_class):
|
||||||
@ -74,7 +71,7 @@ class ZWaveBinarySensor(BinarySensorDevice, ZWaveDeviceEntity):
|
|||||||
from openzwave.network import ZWaveNetwork
|
from openzwave.network import ZWaveNetwork
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
|
|
||||||
ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
||||||
|
|
||||||
dispatcher.connect(
|
dispatcher.connect(
|
||||||
self.value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
|
self.value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
|
||||||
|
@ -9,25 +9,23 @@ https://home-assistant.io/components/light.zwave/
|
|||||||
from threading import Timer
|
from threading import Timer
|
||||||
|
|
||||||
from homeassistant.components.light import ATTR_BRIGHTNESS, DOMAIN, Light
|
from homeassistant.components.light import ATTR_BRIGHTNESS, DOMAIN, Light
|
||||||
from homeassistant.components.zwave import (
|
from homeassistant.components import zwave
|
||||||
ATTR_NODE_ID, ATTR_VALUE_ID, COMMAND_CLASS_SWITCH_MULTILEVEL, GENRE_USER,
|
|
||||||
NETWORK, TYPE_BYTE, ZWaveDeviceEntity)
|
|
||||||
from homeassistant.const import STATE_OFF, STATE_ON
|
from homeassistant.const import STATE_OFF, STATE_ON
|
||||||
|
|
||||||
|
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Find and add Z-Wave lights."""
|
"""Find and add Z-Wave lights."""
|
||||||
if discovery_info is None or NETWORK is None:
|
if discovery_info is None or zwave.NETWORK is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
node = NETWORK.nodes[discovery_info[ATTR_NODE_ID]]
|
node = zwave.NETWORK.nodes[discovery_info[zwave.ATTR_NODE_ID]]
|
||||||
value = node.values[discovery_info[ATTR_VALUE_ID]]
|
value = node.values[discovery_info[zwave.ATTR_VALUE_ID]]
|
||||||
|
|
||||||
if value.command_class != COMMAND_CLASS_SWITCH_MULTILEVEL:
|
if value.command_class != zwave.COMMAND_CLASS_SWITCH_MULTILEVEL:
|
||||||
return
|
return
|
||||||
if value.type != TYPE_BYTE:
|
if value.type != zwave.TYPE_BYTE:
|
||||||
return
|
return
|
||||||
if value.genre != GENRE_USER:
|
if value.genre != zwave.GENRE_USER:
|
||||||
return
|
return
|
||||||
|
|
||||||
value.set_change_verified(False)
|
value.set_change_verified(False)
|
||||||
@ -42,7 +40,7 @@ def brightness_state(value):
|
|||||||
return 255, STATE_OFF
|
return 255, STATE_OFF
|
||||||
|
|
||||||
|
|
||||||
class ZwaveDimmer(ZWaveDeviceEntity, Light):
|
class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light):
|
||||||
"""Representation of a Z-Wave dimmer."""
|
"""Representation of a Z-Wave dimmer."""
|
||||||
|
|
||||||
# pylint: disable=too-many-arguments
|
# pylint: disable=too-many-arguments
|
||||||
@ -51,7 +49,7 @@ class ZwaveDimmer(ZWaveDeviceEntity, Light):
|
|||||||
from openzwave.network import ZWaveNetwork
|
from openzwave.network import ZWaveNetwork
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
|
|
||||||
ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
||||||
|
|
||||||
self._brightness, self._state = brightness_state(value)
|
self._brightness, self._state = brightness_state(value)
|
||||||
|
|
||||||
|
@ -7,10 +7,7 @@ at https://home-assistant.io/components/sensor.zwave/
|
|||||||
# Because we do not compile openzwave on CI
|
# Because we do not compile openzwave on CI
|
||||||
# pylint: disable=import-error
|
# pylint: disable=import-error
|
||||||
from homeassistant.components.sensor import DOMAIN
|
from homeassistant.components.sensor import DOMAIN
|
||||||
from homeassistant.components.zwave import (
|
from homeassistant.components import zwave
|
||||||
ATTR_NODE_ID, ATTR_VALUE_ID, COMMAND_CLASS_ALARM, COMMAND_CLASS_METER,
|
|
||||||
COMMAND_CLASS_SENSOR_MULTILEVEL, NETWORK,
|
|
||||||
TYPE_DECIMAL, ZWaveDeviceEntity)
|
|
||||||
from homeassistant.const import (TEMP_CELCIUS, TEMP_FAHRENHEIT)
|
from homeassistant.const import (TEMP_CELCIUS, TEMP_FAHRENHEIT)
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
|
|
||||||
@ -37,11 +34,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
# platform: zwave
|
# platform: zwave
|
||||||
#
|
#
|
||||||
# `setup_platform` will be called without `discovery_info`.
|
# `setup_platform` will be called without `discovery_info`.
|
||||||
if discovery_info is None or NETWORK is None:
|
if discovery_info is None or zwave.NETWORK is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
node = NETWORK.nodes[discovery_info[ATTR_NODE_ID]]
|
node = zwave.NETWORK.nodes[discovery_info[zwave.ATTR_NODE_ID]]
|
||||||
value = node.values[discovery_info[ATTR_VALUE_ID]]
|
value = node.values[discovery_info[zwave.ATTR_VALUE_ID]]
|
||||||
|
|
||||||
value.set_change_verified(False)
|
value.set_change_verified(False)
|
||||||
|
|
||||||
@ -62,18 +59,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Generic Device mappings
|
# Generic Device mappings
|
||||||
if value.command_class == COMMAND_CLASS_SENSOR_MULTILEVEL:
|
if value.command_class == zwave.COMMAND_CLASS_SENSOR_MULTILEVEL:
|
||||||
add_devices([ZWaveMultilevelSensor(value)])
|
add_devices([ZWaveMultilevelSensor(value)])
|
||||||
|
|
||||||
elif (value.command_class == COMMAND_CLASS_METER and
|
elif (value.command_class == zwave.COMMAND_CLASS_METER and
|
||||||
value.type == TYPE_DECIMAL):
|
value.type == zwave.TYPE_DECIMAL):
|
||||||
add_devices([ZWaveMultilevelSensor(value)])
|
add_devices([ZWaveMultilevelSensor(value)])
|
||||||
|
|
||||||
elif value.command_class == COMMAND_CLASS_ALARM:
|
elif value.command_class == zwave.COMMAND_CLASS_ALARM:
|
||||||
add_devices([ZWaveAlarmSensor(value)])
|
add_devices([ZWaveAlarmSensor(value)])
|
||||||
|
|
||||||
|
|
||||||
class ZWaveSensor(ZWaveDeviceEntity, Entity):
|
class ZWaveSensor(zwave.ZWaveDeviceEntity, Entity):
|
||||||
"""Representation of a Z-Wave sensor."""
|
"""Representation of a Z-Wave sensor."""
|
||||||
|
|
||||||
def __init__(self, sensor_value):
|
def __init__(self, sensor_value):
|
||||||
@ -81,7 +78,7 @@ class ZWaveSensor(ZWaveDeviceEntity, Entity):
|
|||||||
from openzwave.network import ZWaveNetwork
|
from openzwave.network import ZWaveNetwork
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
|
|
||||||
ZWaveDeviceEntity.__init__(self, sensor_value, DOMAIN)
|
zwave.ZWaveDeviceEntity.__init__(self, sensor_value, DOMAIN)
|
||||||
|
|
||||||
dispatcher.connect(
|
dispatcher.connect(
|
||||||
self.value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
|
self.value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
|
||||||
|
@ -7,32 +7,30 @@ https://home-assistant.io/components/switch.zwave/
|
|||||||
# Because we do not compile openzwave on CI
|
# Because we do not compile openzwave on CI
|
||||||
# pylint: disable=import-error
|
# pylint: disable=import-error
|
||||||
from homeassistant.components.switch import DOMAIN, SwitchDevice
|
from homeassistant.components.switch import DOMAIN, SwitchDevice
|
||||||
from homeassistant.components.zwave import (
|
from homeassistant.components import zwave
|
||||||
ATTR_NODE_ID, ATTR_VALUE_ID, COMMAND_CLASS_SWITCH_BINARY, GENRE_USER,
|
|
||||||
NETWORK, TYPE_BOOL, ZWaveDeviceEntity)
|
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Find and return Z-Wave switches."""
|
"""Find and return Z-Wave switches."""
|
||||||
if discovery_info is None or NETWORK is None:
|
if discovery_info is None or zwave.NETWORK is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
node = NETWORK.nodes[discovery_info[ATTR_NODE_ID]]
|
node = zwave.NETWORK.nodes[discovery_info[zwave.ATTR_NODE_ID]]
|
||||||
value = node.values[discovery_info[ATTR_VALUE_ID]]
|
value = node.values[discovery_info[zwave.ATTR_VALUE_ID]]
|
||||||
|
|
||||||
if value.command_class != COMMAND_CLASS_SWITCH_BINARY:
|
if value.command_class != zwave.COMMAND_CLASS_SWITCH_BINARY:
|
||||||
return
|
return
|
||||||
if value.type != TYPE_BOOL:
|
if value.type != zwave.TYPE_BOOL:
|
||||||
return
|
return
|
||||||
if value.genre != GENRE_USER:
|
if value.genre != zwave.GENRE_USER:
|
||||||
return
|
return
|
||||||
|
|
||||||
value.set_change_verified(False)
|
value.set_change_verified(False)
|
||||||
add_devices([ZwaveSwitch(value)])
|
add_devices([ZwaveSwitch(value)])
|
||||||
|
|
||||||
|
|
||||||
class ZwaveSwitch(ZWaveDeviceEntity, SwitchDevice):
|
class ZwaveSwitch(zwave.ZWaveDeviceEntity, SwitchDevice):
|
||||||
"""Representation of a Z-Wave switch."""
|
"""Representation of a Z-Wave switch."""
|
||||||
|
|
||||||
def __init__(self, value):
|
def __init__(self, value):
|
||||||
@ -40,7 +38,7 @@ class ZwaveSwitch(ZWaveDeviceEntity, SwitchDevice):
|
|||||||
from openzwave.network import ZWaveNetwork
|
from openzwave.network import ZWaveNetwork
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
|
|
||||||
ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
||||||
|
|
||||||
self._state = value.data
|
self._state = value.data
|
||||||
dispatcher.connect(
|
dispatcher.connect(
|
||||||
|
@ -6,9 +6,7 @@ from homeassistant.components.thermostat import DOMAIN
|
|||||||
from homeassistant.components.thermostat import (
|
from homeassistant.components.thermostat import (
|
||||||
ThermostatDevice,
|
ThermostatDevice,
|
||||||
STATE_IDLE)
|
STATE_IDLE)
|
||||||
from homeassistant.components.zwave import (
|
from homeassistant.components import zwave
|
||||||
ATTR_NODE_ID, ATTR_VALUE_ID, NETWORK,
|
|
||||||
ZWaveDeviceEntity)
|
|
||||||
from homeassistant.const import (TEMP_FAHRENHEIT, TEMP_CELCIUS)
|
from homeassistant.const import (TEMP_FAHRENHEIT, TEMP_CELCIUS)
|
||||||
|
|
||||||
CONF_NAME = 'name'
|
CONF_NAME = 'name'
|
||||||
@ -17,24 +15,24 @@ DEFAULT_NAME = 'ZWave Thermostat'
|
|||||||
|
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Setup the ZWave thermostats."""
|
"""Setup the ZWave thermostats."""
|
||||||
if discovery_info is None or NETWORK is None:
|
if discovery_info is None or zwave.NETWORK is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
node = NETWORK.nodes[discovery_info[ATTR_NODE_ID]]
|
node = zwave.NETWORK.nodes[discovery_info[zwave.ATTR_NODE_ID]]
|
||||||
value = node.values[discovery_info[ATTR_VALUE_ID]]
|
value = node.values[discovery_info[zwave.ATTR_VALUE_ID]]
|
||||||
value.set_change_verified(False)
|
value.set_change_verified(False)
|
||||||
add_devices([ZWaveThermostat(value)])
|
add_devices([ZWaveThermostat(value)])
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=too-many-arguments
|
# pylint: disable=too-many-arguments
|
||||||
class ZWaveThermostat(ZWaveDeviceEntity, ThermostatDevice):
|
class ZWaveThermostat(zwave.ZWaveDeviceEntity, ThermostatDevice):
|
||||||
"""Represents a HeatControl thermostat."""
|
"""Represents a HeatControl thermostat."""
|
||||||
|
|
||||||
def __init__(self, value):
|
def __init__(self, value):
|
||||||
"""Initialize the zwave thermostat."""
|
"""Initialize the zwave thermostat."""
|
||||||
from openzwave.network import ZWaveNetwork
|
from openzwave.network import ZWaveNetwork
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
||||||
self._node = value.node
|
self._node = value.node
|
||||||
self._target_temperature = None
|
self._target_temperature = None
|
||||||
self._current_temperature = None
|
self._current_temperature = None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user