Always stop any running animation before resetting the lights to a static configuration

This commit is contained in:
Fabio Manganiello 2018-06-16 04:20:13 +02:00
parent 803aa68f11
commit 31a2aa67e2

View file

@ -97,6 +97,7 @@ class LightHuePlugin(LightPlugin):
def _exec(self, attr, *args, **kwargs):
try:
self.connect()
self.stop_animation()
except Exception as e:
# Reset bridge connection
self.bridge = None
@ -159,11 +160,8 @@ class LightHuePlugin(LightPlugin):
return self._exec('scene', name=name, lights=lights, groups=groups)
def stop_animation(self):
if not self.redis:
self.logger.info('No animation is currently running')
return
self.redis.rpush(self.ANIMATION_CTRL_QUEUE_NAME, 'STOP')
if self.animation_thread and self.animation_thread.is_alive():
self.redis.rpush(self.ANIMATION_CTRL_QUEUE_NAME, 'STOP')
def animate(self, animation, duration=None,
hue_range=[0, MAX_HUE], sat_range=[0, MAX_SAT],
@ -266,9 +264,7 @@ class LightHuePlugin(LightPlugin):
elif not lights:
lights = self.lights
if self.animation_thread and self.animation_thread.is_alive():
self.stop_animation()
self.stop_animation()
self.animation_thread = Thread(target=_animate_thread, args=(lights,))
self.animation_thread.start()
return Response(output='ok')