2017-03-03 04:47:59 -08:00
|
|
|
"""Zwave util methods."""
|
|
|
|
import logging
|
|
|
|
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
2017-03-12 23:35:10 -07:00
|
|
|
def value_handler(value, method=None, class_id=None, index=None,
|
|
|
|
label=None, data=None, member=None, instance=None,
|
|
|
|
**kwargs):
|
|
|
|
"""Get the values for a given command_class with arguments.
|
2017-03-03 04:47:59 -08:00
|
|
|
|
2017-03-12 23:35:10 -07:00
|
|
|
May only be used inside callback.
|
2017-03-03 04:47:59 -08:00
|
|
|
|
2017-03-12 23:35:10 -07:00
|
|
|
"""
|
|
|
|
values = []
|
|
|
|
if class_id is None:
|
|
|
|
values.extend(value.node.get_values(**kwargs).values())
|
|
|
|
else:
|
|
|
|
if not isinstance(class_id, list):
|
|
|
|
class_id = [class_id]
|
|
|
|
for cid in class_id:
|
|
|
|
values.extend(value.node.get_values(
|
|
|
|
class_id=cid, **kwargs).values())
|
|
|
|
_LOGGER.debug('method=%s, class_id=%s, index=%s, label=%s, data=%s,'
|
|
|
|
' member=%s, instance=%d, kwargs=%s',
|
|
|
|
method, class_id, index, label, data, member, instance,
|
|
|
|
kwargs)
|
|
|
|
_LOGGER.debug('values=%s', values)
|
|
|
|
results = None
|
|
|
|
for value in values:
|
|
|
|
if index is not None and value.index != index:
|
|
|
|
continue
|
|
|
|
if label is not None:
|
|
|
|
label_found = False
|
|
|
|
for entry in label:
|
|
|
|
if value.label == entry:
|
|
|
|
label_found = True
|
|
|
|
break
|
|
|
|
if not label_found:
|
|
|
|
continue
|
|
|
|
if method == 'set':
|
|
|
|
value.data = data
|
|
|
|
return
|
|
|
|
if data is not None and value.data != data:
|
|
|
|
continue
|
|
|
|
if instance is not None and value.instance != instance:
|
|
|
|
continue
|
|
|
|
if member is not None:
|
|
|
|
results = getattr(value, member)
|
|
|
|
else:
|
|
|
|
results = value
|
|
|
|
break
|
|
|
|
_LOGGER.debug('final result=%s', results)
|
|
|
|
return results
|