forked from platypush/platypush
Support for extra args/kwargs passed to light.hue actions
This commit is contained in:
parent
2b38f1b03f
commit
122978c6f0
2 changed files with 32 additions and 29 deletions
|
@ -39,7 +39,11 @@ class LightHueBackend(Backend):
|
||||||
|
|
||||||
|
|
||||||
def _get_lights(self):
|
def _get_lights(self):
|
||||||
return get_plugin('light.hue').get_lights().output
|
plugin = get_plugin('light.hue')
|
||||||
|
if not plugin:
|
||||||
|
plugin = get_plugin('light.hue', reload=True)
|
||||||
|
|
||||||
|
return plugin.get_lights().output
|
||||||
|
|
||||||
def _listener(self):
|
def _listener(self):
|
||||||
def _thread():
|
def _thread():
|
||||||
|
|
|
@ -241,10 +241,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
lights = []; groups = []
|
lights = []; groups = []
|
||||||
if 'lights' in kwargs and kwargs['lights']:
|
if 'lights' in kwargs:
|
||||||
lights = kwargs.pop('lights').split(',').strip() \
|
lights = kwargs.pop('lights').split(',').strip() \
|
||||||
if isinstance(lights, str) else kwargs.pop('lights')
|
if isinstance(lights, str) else kwargs.pop('lights')
|
||||||
if 'groups' in kwargs and kwargs['groups']:
|
if 'groups' in kwargs:
|
||||||
groups = kwargs.pop('groups').split(',').strip() \
|
groups = kwargs.pop('groups').split(',').strip() \
|
||||||
if isinstance(groups, str) else kwargs.pop('groups')
|
if isinstance(groups, str) else kwargs.pop('groups')
|
||||||
|
|
||||||
|
@ -257,9 +257,9 @@ class LightHuePlugin(LightPlugin):
|
||||||
self.bridge.run_scene(groups[0], kwargs.pop('name'))
|
self.bridge.run_scene(groups[0], kwargs.pop('name'))
|
||||||
else:
|
else:
|
||||||
if groups:
|
if groups:
|
||||||
self.bridge.set_group(groups, attr, *args)
|
self.bridge.set_group(groups, attr, *args, **kwargs)
|
||||||
if lights:
|
if lights:
|
||||||
self.bridge.set_light(lights, attr, *args)
|
self.bridge.set_light(lights, attr, *args, **kwargs)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Reset bridge connection
|
# Reset bridge connection
|
||||||
self.bridge = None
|
self.bridge = None
|
||||||
|
@ -315,7 +315,7 @@ class LightHuePlugin(LightPlugin):
|
||||||
self.bridge.set_group(group, **kwargs)
|
self.bridge.set_group(group, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def on(self, lights=[], groups=[]):
|
def on(self, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Turn lights/groups on.
|
Turn lights/groups on.
|
||||||
|
|
||||||
|
@ -323,10 +323,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
:param groups: Groups to turn on (names or group objects). Default: plugin default groups
|
:param groups: Groups to turn on (names or group objects). Default: plugin default groups
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._exec('on', True, lights=lights, groups=groups)
|
return self._exec('on', True, lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def off(self, lights=[], groups=[]):
|
def off(self, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Turn lights/groups off.
|
Turn lights/groups off.
|
||||||
|
|
||||||
|
@ -334,10 +334,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
:param groups: Groups to turn off (names or group objects). Default: plugin default groups
|
:param groups: Groups to turn off (names or group objects). Default: plugin default groups
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._exec('on', False, lights=lights, groups=groups)
|
return self._exec('on', False, lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def toggle(self, lights=[], groups=[]):
|
def toggle(self, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Toggle lights/groups on/off.
|
Toggle lights/groups on/off.
|
||||||
|
|
||||||
|
@ -380,13 +380,13 @@ class LightHuePlugin(LightPlugin):
|
||||||
]
|
]
|
||||||
|
|
||||||
if lights_on or groups_on:
|
if lights_on or groups_on:
|
||||||
self._exec('on', False, lights=lights_on, groups=groups_on)
|
self._exec('on', False, lights=lights_on, groups=groups_on, **kwargs)
|
||||||
|
|
||||||
if lights_off or groups_off:
|
if lights_off or groups_off:
|
||||||
self._exec('on', True, lights=lights_off, groups=groups_off)
|
self._exec('on', True, lights=lights_off, groups=groups_off, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def bri(self, value, lights=[], groups=[]):
|
def bri(self, value, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Set lights/groups brightness.
|
Set lights/groups brightness.
|
||||||
|
|
||||||
|
@ -396,10 +396,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._exec('bri', int(value) % (self.MAX_BRI+1),
|
return self._exec('bri', int(value) % (self.MAX_BRI+1),
|
||||||
lights=lights, groups=groups)
|
lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def sat(self, value, lights=[], groups=[]):
|
def sat(self, value, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Set lights/groups saturation.
|
Set lights/groups saturation.
|
||||||
|
|
||||||
|
@ -409,10 +409,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._exec('sat', int(value) % (self.MAX_SAT+1),
|
return self._exec('sat', int(value) % (self.MAX_SAT+1),
|
||||||
lights=lights, groups=groups)
|
lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def hue(self, value, lights=[], groups=[]):
|
def hue(self, value, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Set lights/groups color hue.
|
Set lights/groups color hue.
|
||||||
|
|
||||||
|
@ -422,10 +422,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._exec('hue', int(value) % (self.MAX_HUE+1),
|
return self._exec('hue', int(value) % (self.MAX_HUE+1),
|
||||||
lights=lights, groups=groups)
|
lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def delta_bri(self, delta, lights=[], groups=[]):
|
def delta_bri(self, delta, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Change lights/groups brightness by a delta [-100, 100] compared to the current state.
|
Change lights/groups brightness by a delta [-100, 100] compared to the current state.
|
||||||
|
|
||||||
|
@ -463,10 +463,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
else:
|
else:
|
||||||
bri += delta
|
bri += delta
|
||||||
|
|
||||||
return self._exec('bri', int(bri), lights=lights, groups=groups)
|
return self._exec('bri', int(bri), lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def delta_sat(self, delta, lights=[], groups=[]):
|
def delta_sat(self, delta, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Change lights/groups saturation by a delta [-100, 100] compared to the current state.
|
Change lights/groups saturation by a delta [-100, 100] compared to the current state.
|
||||||
|
|
||||||
|
@ -504,10 +504,10 @@ class LightHuePlugin(LightPlugin):
|
||||||
else:
|
else:
|
||||||
sat += delta
|
sat += delta
|
||||||
|
|
||||||
return self._exec('sat', int(sat), lights=lights, groups=groups)
|
return self._exec('sat', int(sat), lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def delta_hue(self, delta, lights=[], groups=[]):
|
def delta_hue(self, delta, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Change lights/groups hue by a delta [-100, 100] compared to the current state.
|
Change lights/groups hue by a delta [-100, 100] compared to the current state.
|
||||||
|
|
||||||
|
@ -545,11 +545,11 @@ class LightHuePlugin(LightPlugin):
|
||||||
else:
|
else:
|
||||||
hue += delta
|
hue += delta
|
||||||
|
|
||||||
return self._exec('hue', int(hue), lights=lights, groups=groups)
|
return self._exec('hue', int(hue), lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def scene(self, name, lights=[], groups=[]):
|
def scene(self, name, lights=[], groups=[], **kwargs):
|
||||||
"""
|
"""
|
||||||
Set a scene by name.
|
Set a scene by name.
|
||||||
|
|
||||||
|
@ -558,7 +558,7 @@ class LightHuePlugin(LightPlugin):
|
||||||
:param name: Name of the scene
|
:param name: Name of the scene
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._exec('scene', name=name, lights=lights, groups=groups)
|
return self._exec('scene', name=name, lights=lights, groups=groups, **kwargs)
|
||||||
|
|
||||||
@action
|
@action
|
||||||
def is_animation_running(self):
|
def is_animation_running(self):
|
||||||
|
@ -631,7 +631,6 @@ class LightHuePlugin(LightPlugin):
|
||||||
'transitiontime': 0,
|
'transitiontime': 0,
|
||||||
} for l in lights }
|
} for l in lights }
|
||||||
|
|
||||||
|
|
||||||
def _next_light_attrs(lights):
|
def _next_light_attrs(lights):
|
||||||
if animation == self.Animation.COLOR_TRANSITION:
|
if animation == self.Animation.COLOR_TRANSITION:
|
||||||
for (light, attrs) in lights.items():
|
for (light, attrs) in lights.items():
|
||||||
|
@ -683,13 +682,13 @@ class LightHuePlugin(LightPlugin):
|
||||||
try:
|
try:
|
||||||
if animation == self.Animation.COLOR_TRANSITION:
|
if animation == self.Animation.COLOR_TRANSITION:
|
||||||
for (light, attrs) in lights.items():
|
for (light, attrs) in lights.items():
|
||||||
self.logger.info('Setting {} to {}'.format(light, attrs))
|
self.logger.debug('Setting {} to {}'.format(light, attrs))
|
||||||
self.bridge.set_light(light, attrs)
|
self.bridge.set_light(light, attrs)
|
||||||
stop_animation = _should_stop()
|
stop_animation = _should_stop()
|
||||||
if stop_animation: break
|
if stop_animation: break
|
||||||
elif animation == self.Animation.BLINK:
|
elif animation == self.Animation.BLINK:
|
||||||
conf = lights[list(lights.keys())[0]]
|
conf = lights[list(lights.keys())[0]]
|
||||||
self.logger.info('Setting lights to {}'.format(conf))
|
self.logger.debug('Setting lights to {}'.format(conf))
|
||||||
|
|
||||||
if groups:
|
if groups:
|
||||||
self.bridge.set_group([g.name for f in groups], conf)
|
self.bridge.set_group([g.name for f in groups], conf)
|
||||||
|
|
Loading…
Reference in a new issue