forked from platypush/platypush
Better handling of Hue bridge first-time pairing
This commit is contained in:
parent
235ddc6c2d
commit
947fc8f583
1 changed files with 22 additions and 10 deletions
|
@ -6,7 +6,6 @@ from enum import Enum
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from redis import Redis
|
from redis import Redis
|
||||||
from redis.exceptions import TimeoutError as QueueTimeoutError
|
from redis.exceptions import TimeoutError as QueueTimeoutError
|
||||||
from phue import Bridge
|
|
||||||
|
|
||||||
from platypush.context import get_backend
|
from platypush.context import get_backend
|
||||||
from platypush.plugins import action
|
from platypush.plugins import action
|
||||||
|
@ -27,6 +26,8 @@ class LightHuePlugin(LightPlugin):
|
||||||
MAX_SAT = 255
|
MAX_SAT = 255
|
||||||
MAX_HUE = 65535
|
MAX_HUE = 65535
|
||||||
ANIMATION_CTRL_QUEUE_NAME = 'platypush/light/hue/AnimationCtrl'
|
ANIMATION_CTRL_QUEUE_NAME = 'platypush/light/hue/AnimationCtrl'
|
||||||
|
_BRIDGE_RECONNECT_SECONDS = 5
|
||||||
|
_MAX_RECONNECT_TRIES = 5
|
||||||
|
|
||||||
class Animation(Enum):
|
class Animation(Enum):
|
||||||
COLOR_TRANSITION = 'color_transition'
|
COLOR_TRANSITION = 'color_transition'
|
||||||
|
@ -89,16 +90,28 @@ class LightHuePlugin(LightPlugin):
|
||||||
|
|
||||||
# Lazy init
|
# Lazy init
|
||||||
if not self.bridge:
|
if not self.bridge:
|
||||||
|
from phue import Bridge, PhueRegistrationException
|
||||||
|
success = False
|
||||||
|
n_tries = 0
|
||||||
|
|
||||||
|
while not success:
|
||||||
|
try:
|
||||||
|
n_tries += 1
|
||||||
self.bridge = Bridge(self.bridge_address)
|
self.bridge = Bridge(self.bridge_address)
|
||||||
|
success = True
|
||||||
|
except PhueRegistrationException as e:
|
||||||
|
self.logger.warning('Bridge registration error: {}'.
|
||||||
|
format(str(e)))
|
||||||
|
|
||||||
|
if n_tries >= self._MAX_RECONNECT_TRIES:
|
||||||
|
self.logger.error(('Bridge registration failed after ' +
|
||||||
|
'{} attempts').format(n_tries))
|
||||||
|
break
|
||||||
|
|
||||||
|
time.sleep(self._BRIDGE_RECONNECT_SECONDS)
|
||||||
|
|
||||||
self.logger.info('Bridge connected')
|
self.logger.info('Bridge connected')
|
||||||
|
|
||||||
self.get_scenes()
|
self.get_scenes()
|
||||||
|
|
||||||
# uncomment these lines if you're running huectrl for
|
|
||||||
# the first time and you need to pair it to the switch
|
|
||||||
|
|
||||||
# self.bridge.connect()
|
|
||||||
# self.bridge.get_api()
|
|
||||||
else:
|
else:
|
||||||
self.logger.info('Bridge already connected')
|
self.logger.info('Bridge already connected')
|
||||||
|
|
||||||
|
@ -731,4 +744,3 @@ class LightHuePlugin(LightPlugin):
|
||||||
|
|
||||||
|
|
||||||
# vim:sw=4:ts=4:et:
|
# vim:sw=4:ts=4:et:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue