Skip to content
Snippets Groups Projects
Commit 60c0dc42 authored by jkerdreu's avatar jkerdreu
Browse files

still API error

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2415 b32b6428-25c9-4566-ad07-03861ab6144f
parent d6d0638a
Branches
No related tags found
No related merge requests found
......@@ -27,41 +27,25 @@ class YeelightDev(object):
def __init__(self,bulb,addr):
logger.info('New device at %s : %s' % (bulb._ip,addr))
self.bulb = bulb
#self.bulb.get_properties()
self.addr = addr
self.dev = None
self.setup()
self.get_properties()
self.set_properties()
self.set_xaal()
def set_properties(self):
def set_xaal(self):
self.dev.vendor_id = 'Yeelight'
self.dev.info = str(self.bulb)
def setup(self):
logger.warning('Please overide setup()')
def spawn(self,func,*args,**kwargs):
gevent.spawn(wrap_errors(Exception,func),*args,**kwargs)
class RGBW(YeelightDev):
def setup(self):
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['setRGB'] = self.set_color
dev.methods['setWhite'] = self.set_white
dev.methods['debug'] = self.debug
dev.info = 'RGBW / %s' % self.addr
self.dev = dev
def on_properties(self,properties):
logger.warning('Please overide on_properties')
def debug(self):
import pdb;pdb.set_trace()
def spawn(self,func,*args,**kwargs):
#gevent.spawn(wrap_errors(Exception,func),*args,**kwargs)
gevent.spawn(func,*args,**kwargs)
def get_properties(self):
self.spawn(self._get_properties)
......@@ -77,23 +61,6 @@ class RGBW(YeelightDev):
def toggle(self):
self.spawn(self._toggle)
def dim(self,_target):
val = int(_target)
self.spawn(self._dim,val)
def set_color(self,_target):
print(_target)
r,g,b = split_color(_target)
self.spawn(self._set_color,r,g,b)
self.dev.attributes['mode'] = 'RGB'
self.dev.attributes['rgb'] = _target
def set_white(self,_target):
val = int(_target)
self.spawn(self._set_color_temp,val)
self.dev.attributes['mode'] = 'WHITE'
self.dev.attributes['white_temperature'] = _target
#===================================================
# Yeelight API
#===================================================
......@@ -101,9 +68,6 @@ class RGBW(YeelightDev):
properties = self.bulb.get_properties()
self.on_properties(properties)
def on_properties(self,properties):
print(properties)
@tenacity.retry(stop=TENACITY_RETRY)
def _get_properties(self):
self.__get_properties()
......@@ -123,6 +87,46 @@ class RGBW(YeelightDev):
self.bulb.toggle()
self.__get_properties()
class RGBW(YeelightDev):
def setup(self):
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['setRGB'] = self.set_color
dev.methods['setWhite'] = self.set_white
dev.methods['debug'] = self.debug
dev.info = 'RGBW / %s' % self.addr
self.dev = dev
def debug(self):
import pdb;pdb.set_trace()
def dim(self,_target):
val = int(_target)
self.spawn(self._dim,val)
def set_color(self,_target):
r,g,b = split_color(_target)
self.spawn(self._set_color,r,g,b)
def set_white(self,_target):
val = int(_target)
self.spawn(self._set_color_temp,val)
def on_properties(self,props):
print(props)
attrs = self.dev.attributes
power = props.get('power',None)
if power:
if power == 'on' : attrs['light'] = True
if power == 'off': attrs['light'] = False
#===================================================
# Yeelight API
#===================================================
@tenacity.retry(stop=TENACITY_RETRY)
def _dim(self,val):
self.bulb.turn_on()
......
......@@ -14,10 +14,11 @@ logger = logging.getLogger(PACKAGE_NAME)
class GW(object):
def __init__(self,engine):
self.engine = engine
self.devices = {}
self.devices = []
atexit.register(self._exit)
self.config()
self.setup()
self.engine.add_timer(self.refresh,60)
def config(self):
cfg = tools.load_cfg(PACKAGE_NAME)
......@@ -61,9 +62,13 @@ class GW(object):
bulb = yeelight.Bulb(k)
#dev = devices.RGBW(bulb,addr)
dev = devices.RGBW(bulb,addr)
self.devices.append(dev)
self.engine.add_device(dev.dev)
def refresh(self):
for d in self.devices:
d.get_properties()
d.set_xaal()
def _exit(self):
cfg = tools.load_cfg(PACKAGE_NAME)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment