mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Various fixes for missing components and rollershutter. (#2698)
* Various fixes for missing components, rollershutter. * Setting up different method for catching value of correct type.
This commit is contained in:
parent
1726c4b45a
commit
a03691455b
@ -40,10 +40,14 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, RollershutterDevice):
|
|||||||
|
|
||||||
def __init__(self, value):
|
def __init__(self, value):
|
||||||
"""Initialize the zwave rollershutter."""
|
"""Initialize the zwave rollershutter."""
|
||||||
|
import libopenzwave
|
||||||
from openzwave.network import ZWaveNetwork
|
from openzwave.network import ZWaveNetwork
|
||||||
from pydispatch import dispatcher
|
from pydispatch import dispatcher
|
||||||
ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
ZWaveDeviceEntity.__init__(self, value, DOMAIN)
|
||||||
|
self._lozwmgr = libopenzwave.PyManager()
|
||||||
|
self._lozwmgr.create()
|
||||||
self._node = value.node
|
self._node = value.node
|
||||||
|
self._current_position = None
|
||||||
dispatcher.connect(
|
dispatcher.connect(
|
||||||
self.value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
|
self.value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED)
|
||||||
|
|
||||||
@ -51,32 +55,53 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, RollershutterDevice):
|
|||||||
"""Called when a value has changed on the network."""
|
"""Called when a value has changed on the network."""
|
||||||
if self._value.value_id == value.value_id or \
|
if self._value.value_id == value.value_id or \
|
||||||
self._value.node == value.node:
|
self._value.node == value.node:
|
||||||
|
self.update_properties()
|
||||||
self.update_ha_state()
|
self.update_ha_state()
|
||||||
_LOGGER.debug("Value changed on network %s", value)
|
_LOGGER.debug("Value changed on network %s", value)
|
||||||
|
|
||||||
|
def update_properties(self):
|
||||||
|
"""Callback on data change for the registered node/value pair."""
|
||||||
|
# Position value
|
||||||
|
for value in self._node.get_values(
|
||||||
|
class_id=COMMAND_CLASS_SWITCH_MULTILEVEL).values():
|
||||||
|
if value.command_class == zwave.COMMAND_CLASS_SWITCH_MULTILEVEL \
|
||||||
|
and value.label == 'Level':
|
||||||
|
self._current_position = value.data
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_position(self):
|
def current_position(self):
|
||||||
"""Return the current position of Zwave roller shutter."""
|
"""Return the current position of Zwave roller shutter."""
|
||||||
if self._value.data <= 5:
|
if self._current_position is not None:
|
||||||
return 100
|
if self._current_position <= 5:
|
||||||
elif self._value.data >= 95:
|
return 100
|
||||||
return 0
|
elif self._current_position >= 95:
|
||||||
else:
|
return 0
|
||||||
return 100 - self._value.data
|
else:
|
||||||
|
return 100 - self._current_position
|
||||||
|
|
||||||
def move_up(self, **kwargs):
|
def move_up(self, **kwargs):
|
||||||
"""Move the roller shutter up."""
|
"""Move the roller shutter up."""
|
||||||
self._node.set_dimmer(self._value.value_id, 100)
|
for value in self._node.get_values(
|
||||||
|
class_id=COMMAND_CLASS_SWITCH_MULTILEVEL).values():
|
||||||
|
if value.command_class == zwave.COMMAND_CLASS_SWITCH_MULTILEVEL \
|
||||||
|
and value.label == 'Open':
|
||||||
|
self._lozwmgr.pressButton(value.value_id)
|
||||||
|
break
|
||||||
|
|
||||||
def move_down(self, **kwargs):
|
def move_down(self, **kwargs):
|
||||||
"""Move the roller shutter down."""
|
"""Move the roller shutter down."""
|
||||||
self._node.set_dimmer(self._value.value_id, 0)
|
for value in self._node.get_values(
|
||||||
|
class_id=COMMAND_CLASS_SWITCH_MULTILEVEL).values():
|
||||||
|
if value.command_class == zwave.COMMAND_CLASS_SWITCH_MULTILEVEL \
|
||||||
|
and value.label == 'Close':
|
||||||
|
self._lozwmgr.pressButton(value.value_id)
|
||||||
|
break
|
||||||
|
|
||||||
def stop(self, **kwargs):
|
def stop(self, **kwargs):
|
||||||
"""Stop the roller shutter."""
|
"""Stop the roller shutter."""
|
||||||
for value in self._node.get_values(
|
for value in self._node.get_values(
|
||||||
class_id=COMMAND_CLASS_SWITCH_BINARY).values():
|
class_id=COMMAND_CLASS_SWITCH_MULTILEVEL).values():
|
||||||
# Rollershutter will toggle between UP (True), DOWN (False).
|
if value.command_class == zwave.COMMAND_CLASS_SWITCH_MULTILEVEL \
|
||||||
# It also stops the shutter if the same value is sent while moving.
|
and value.label == 'Open':
|
||||||
value.data = value.data
|
self._lozwmgr.releaseButton(value.value_id)
|
||||||
break
|
break
|
||||||
|
@ -66,10 +66,10 @@ COMMAND_CLASS_SENSOR_ALARM = 156
|
|||||||
GENERIC_COMMAND_CLASS_WHATEVER = None
|
GENERIC_COMMAND_CLASS_WHATEVER = None
|
||||||
GENERIC_COMMAND_CLASS_REMOTE_CONTROLLER = 1
|
GENERIC_COMMAND_CLASS_REMOTE_CONTROLLER = 1
|
||||||
GENERIC_COMMAND_CLASS_NOTIFICATION = 7
|
GENERIC_COMMAND_CLASS_NOTIFICATION = 7
|
||||||
GENERIC_COMMAND_CLASS_REMOTE_SWITCH = 12
|
|
||||||
GENERIC_COMMAND_CLASS_REPEATER_SLAVE = 15
|
GENERIC_COMMAND_CLASS_REPEATER_SLAVE = 15
|
||||||
GENERIC_COMMAND_CLASS_MULTILEVEL_SWITCH = 17
|
|
||||||
GENERIC_COMMAND_CLASS_BINARY_SWITCH = 16
|
GENERIC_COMMAND_CLASS_BINARY_SWITCH = 16
|
||||||
|
GENERIC_COMMAND_CLASS_MULTILEVEL_SWITCH = 17
|
||||||
|
GENERIC_COMMAND_CLASS_REMOTE_SWITCH = 18
|
||||||
GENERIC_COMMAND_CLASS_WALL_CONTROLLER = 24
|
GENERIC_COMMAND_CLASS_WALL_CONTROLLER = 24
|
||||||
GENERIC_COMMAND_CLASS_ENTRY_CONTROL = 64
|
GENERIC_COMMAND_CLASS_ENTRY_CONTROL = 64
|
||||||
GENERIC_COMMAND_CLASS_BINARY_SENSOR = 32
|
GENERIC_COMMAND_CLASS_BINARY_SENSOR = 32
|
||||||
@ -113,7 +113,8 @@ DISCOVERY_COMPONENTS = [
|
|||||||
TYPE_WHATEVER,
|
TYPE_WHATEVER,
|
||||||
GENRE_USER),
|
GENRE_USER),
|
||||||
('light',
|
('light',
|
||||||
[GENERIC_COMMAND_CLASS_MULTILEVEL_SWITCH],
|
[GENERIC_COMMAND_CLASS_MULTILEVEL_SWITCH,
|
||||||
|
GENERIC_COMMAND_CLASS_REMOTE_SWITCH],
|
||||||
[SPECIFIC_DEVICE_CLASS_MULTILEVEL_POWER_SWITCH,
|
[SPECIFIC_DEVICE_CLASS_MULTILEVEL_POWER_SWITCH,
|
||||||
SPECIFIC_DEVICE_CLASS_MULTILEVEL_SCENE,
|
SPECIFIC_DEVICE_CLASS_MULTILEVEL_SCENE,
|
||||||
SPECIFIC_DEVICE_CLASS_NOT_USED],
|
SPECIFIC_DEVICE_CLASS_NOT_USED],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user