Skip to content
Snippets Groups Projects
Commit 8294e599 authored by jkerdreu's avatar jkerdreu
Browse files

Work in progress

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2473 b32b6428-25c9-4566-ad07-03861ab6144f
parent a7d0733c
No related branches found
No related tags found
No related merge requests found
......@@ -97,6 +97,7 @@ class TuyaDev:
self.cfg = cfg
self.load_config()
self.setup()
self.init_properties()
def load_config(self):
cfg = self.cfg
......@@ -104,9 +105,8 @@ class TuyaDev:
ip = cfg.get('ip',None)
key = cfg.get('key',None)
proto = cfg.get('protocol','3.3')
if not ip or not key:
return
# invalid file ?
if not ip or not key: return
if addr == None:
addr = tools.get_random_base_uuid()
......@@ -117,13 +117,24 @@ class TuyaDev:
self.tuya_info = { 'ip' : ip, 'deviceid' : self.tuya_id, 'localkey' : key,'protocol' : proto }
self.is_valid = True
def init_properties(self):
for dev in self.devices:
dev.vendor_id = 'IHSEV / Tuya'
dev.hw_id = self.tuya_id
dev.info = 'Tuya %s: @ %s' % (self.__class__.__name__,self.tuya_info['ip'])
if len(self.devices) > 1:
dev.group_id = self.base_addr + 0xff
def setup(self):
logger.warning('Please override setup()')
@spawn
def update_status(self):
data=self.status()
self.on_status(data)
if data:
self.on_status(data)
self.last_update = now()
#========================================================================
......@@ -148,26 +159,25 @@ class TuyaDev:
class PowerRelay(TuyaDev):
def setup(self):
self.dps = self.cfg.get('dps',[1])
dps = self.cfg.get('dps',['1'])
addr = self.base_addr
for k in self.dps:
self.dps_to_dev = {}
for k in dps:
dev = devices.powerrelay_toggle(addr)
dev.methods['turn_on'] = functools.partial(self.turn_on,k,dev)
dev.methods['turn_off'] = functools.partial(self.turn_off,k,dev)
dev.methods['toggle'] = functools.partial(self.toggle,k,dev)
addr = addr +1
self.dps_to_dev.update({k:dev})
self.devices.append(dev)
addr = addr +1
@spawn
def turn_on(self,idx,dev):
r = self.set_state(True,idx)
print(r)
self.set_state(True,idx)
@spawn
def turn_off(self,idx,dev):
r = self.set_state(False,idx)
print(r)
self.set_state(False,idx)
@spawn
def toggle(self,idx,dev):
......@@ -177,7 +187,11 @@ class PowerRelay(TuyaDev):
self.set_state(not state,idx)
def on_status(self,data):
logger.warning('TDB')
dps = data.get('dps',{})
for k in dps:
tmp = self.dps_to_dev.get(k,None)
if tmp:
tmp.attributes['power'] = dps[k]
class SmartPlug(PowerRelay):
......@@ -209,7 +223,8 @@ class RGBLamp(TuyaDev):
# brightness
result = get_dps(data,3)
if result:
self.devices[0].attributes['brightness'] = result
value = int(result) * 100 / 255
self.devices[0].attributes['brightness'] = int(value)
# color_temperature
result = get_dps(data,4)
if result:
......@@ -223,7 +238,9 @@ class RGBLamp(TuyaDev):
@spawn
def set_brightness(self,_brightness,_smooth=0):
# smooth is not supported
value = int(_brightness)
value = int(_brightness) * 255 / 100
if value < 25: value = 25
if value > 255: value = 255
self.set_status({2:'white',3:value})
@spawn
......
......@@ -26,7 +26,7 @@ class GW:
atexit.register(self._exit)
self.config()
self.setup()
engine.add_timer(self.update,5)
engine.add_timer(self.update,10)
def config(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