Skip to content
Snippets Groups Projects
Commit 6a802286 authored by jkerdreu's avatar jkerdreu
Browse files

Long time w/ no commits

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/trunk@2139 b32b6428-25c9-4566-ad07-03861ab6144f
parent 26900379
No related branches found
No related tags found
No related merge requests found
......@@ -2,9 +2,12 @@ from xaal.schemas import devices
from xaal.lib import tools,Device
import logging
import tenacity
logger = logging.getLogger(__name__)
# we try twice within one second, if nothing works, just drop
TENACITY_RETRY=tenacity.stop_after_attempt(2) | tenacity.stop_after_delay(1)
def split_color(color):
data = color.split('#')[-1]
......@@ -19,6 +22,7 @@ class YeelightDev(object):
logger.info('New device at %s : %s' % (bulb._ip,addr))
self.bulb = bulb
self.addr = addr
self.dev = None
self.setup()
self.set_properties()
......@@ -31,38 +35,49 @@ class YeelightDev(object):
class RGBW(YeelightDev):
def setup(self):
dev = devices.lamp_dimmer(self.addr)
dev = devices.lamp_rgbw(self.addr)
dev.methods['on'] = self.on
dev.methods['off'] = self.off
dev.methods['toggle'] = self.toggle
dev.methods['dim'] = self.dim
dev.methods['setColor'] = self.set_color
dev.methods['setTemp'] = self.set_temp
dev.methods['setRGB'] = self.set_color
dev.methods['setWhite'] = self.set_white
dev.info = 'RGBW / %s' % self.addr
self.dev = dev
@tenacity.retry(stop=TENACITY_RETRY)
def on(self):
self.bulb.turn_on()
self.dev.attributes['light'] = True
@tenacity.retry(stop=TENACITY_RETRY)
def off(self):
self.bulb.turn_off()
self.dev.attributes['light'] = False
@tenacity.retry(stop=TENACITY_RETRY)
def toggle(self):
self.bulb.toggle()
def dim(self,_target):
val = int(_target)
self.on()
self.bulb.set_brightness(val)
def set_color(self,_target):
print(_target)
r,g,b = split_color(_target)
self.on()
self.bulb.set_rgb(r,g,b)
self.dev.attributes['mode'] = 'RGB'
self.dev.attributes['rgb'] = _target
def set_temp(self,_target):
def set_white(self,_target):
val = int(_target)
self.on()
self.bulb.set_color_temp(val)
self.dev.attributes['mode'] = 'WHITE'
self.dev.attributes['white_temperature'] = _target
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment