Animation thread wrapped in a try-except to prevent the thread from exiting in case of temporary errors

This commit is contained in:
Fabio Manganiello 2018-07-28 14:05:04 +02:00
parent 61e211ee07
commit 6ebab5de25

View file

@ -502,23 +502,27 @@ class LightHuePlugin(LightPlugin):
(duration and time.time() - animation_start_time > duration): (duration and time.time() - animation_start_time > duration):
break break
if animation == self.Animation.COLOR_TRANSITION: try:
for (light, attrs) in lights.items(): if animation == self.Animation.COLOR_TRANSITION:
self.logger.info('Setting {} to {}'.format(light, attrs)) for (light, attrs) in lights.items():
self.bridge.set_light(light, attrs) self.logger.info('Setting {} to {}'.format(light, attrs))
self.bridge.set_light(light, attrs)
stop_animation = _should_stop()
if stop_animation: break
elif animation == self.Animation.BLINK:
conf = lights[list(lights.keys())[0]]
self.logger.info('Setting lights to {}'.format(conf))
if groups:
self.bridge.set_group([g.name for f in groups], conf)
else:
self.bridge.set_light(lights.keys(), conf)
stop_animation = _should_stop() stop_animation = _should_stop()
if stop_animation: break if stop_animation: break
elif animation == self.Animation.BLINK: except Exception as e:
conf = lights[list(lights.keys())[0]] self.logger.warning(e)
self.logger.info('Setting lights to {}'.format(conf)) time.sleep(2)
if groups:
self.bridge.set_group([g.name for f in groups], conf)
else:
self.bridge.set_light(lights.keys(), conf)
stop_animation = _should_stop()
if stop_animation: break
lights = _next_light_attrs(lights) lights = _next_light_attrs(lights)