Skip to content
Snippets Groups Projects
Commit 760c4155 authored by jkerdreu's avatar jkerdreu
Browse files

Added support for scene / mode / and debug



git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2513 b32b6428-25c9-4566-ad07-03861ab6144f
parent 5b6e3e40
Branches
Tags
No related merge requests found
......@@ -24,6 +24,7 @@ class TuyaDev:
self.parent = parent
self.devices = []
self.last_update = 0
self.debug = False
self.cfg = cfg
self.load_config()
self.setup()
......@@ -40,6 +41,7 @@ class TuyaDev:
ip = cfg.get('ip',None)
key = cfg.get('key',None)
proto = cfg.get('protocol','3.3')
self.debug = cfg.get('debug', False)
# invalid file ?
if not ip or not key: return
......@@ -64,6 +66,8 @@ class TuyaDev:
def event_handle(self,ev_type,ev_data):
if ev_type == tuyaclient.Event.DPS:
if self.debug:
logger.debug(f"RECV {self.tuya_id} DPS: {ev_data}")
self.on_dps(ev_data)
elif ev_type == tuyaclient.Event.CONNECTED:
......@@ -74,9 +78,13 @@ class TuyaDev:
self.parent.trigger_update_inactive()
def post_dps(self,data):
if self.debug:
logger.debug(f"POST {self.tuya_id} DPS: {data}")
self.tuya_client.post_dps(data)
def request_dps(self):
if self.debug:
logger.debug(f"REQUEST {self.tuya_id}")
self.tuya_client.request_dps()
def setup(self):
......@@ -263,9 +271,14 @@ class LampDimmer(Lamp,AdvLampMixin):
class LampRGB(Lamp,AdvLampMixin):
SCENES = ['scene_1','scene_2','scene_3','scene_4']
def setup(self):
dev = devices.lamp_color(self.base_addr+1)
dev.methods['set_hsv'] = self.set_hsv
dev.methods['set_mode'] = self.set_mode
dev.methods['get_scenes'] = self.get_scenes
dev.methods['set_scene'] = self.set_scene
self.setup_mixin(dev)
def on_dps(self,dps):
......@@ -278,6 +291,7 @@ class LampRGB(Lamp,AdvLampMixin):
result = get_dps(dps,2)
if result == 'colour': attrs['mode'] = 'color'
if result == 'white': attrs['mode'] = 'white'
if result and result.startswith('scene'): attrs['mode'] = 'scene'
# brightness
result = get_dps(dps,3)
if result:
......@@ -308,3 +322,17 @@ class LampRGB(Lamp,AdvLampMixin):
result = tuyaclient.color_to_hex(hsv)
self.post_dps({2:'colour',5:result})
def set_mode(self,_mode):
if _mode == 'color':
self.post_dps({2:'colour'})
if _mode == 'white':
self.post_dps({2:'white'})
if _mode == 'scene':
self.post_dps({2:'scene_4'})
def get_scenes(self):
return LampRGB.SCENES
def set_scene(self,_scene):
if _scene in LampRGB.SCENES:
self.post_dps({2:_scene})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment