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

Added inactive_embedded.

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2508 b32b6428-25c9-4566-ad07-03861ab6144f
parent ed86d7f5
Branches
No related tags found
No related merge requests found
from xaal.schemas import devices
from xaal.lib import tools,Device
from xaal.lib import tools
import time
import logging
import functools
......@@ -8,7 +8,6 @@ from decorator import decorator
from . import tuyaclient
logger = logging.getLogger(__name__)
......@@ -19,9 +18,10 @@ def now():
return time.time()
class TuyaDev:
def __init__(self,tuya_id,cfg):
def __init__(self,tuya_id,cfg,parent):
self.is_valid = False
self.tuya_id = tuya_id
self.parent = parent
self.devices = []
self.last_update = 0
self.cfg = cfg
......@@ -30,6 +30,10 @@ class TuyaDev:
self.init_properties()
self.tuya_client.subscribe(self.event_handle)
@property
def connected(self):
return self.tuya_client.connected
def load_config(self):
cfg = self.cfg
addr = tools.get_uuid(cfg.get('base_addr',None))
......@@ -57,15 +61,17 @@ class TuyaDev:
dev.info = 'Tuya %s: @ %s' % (self.__class__.__name__,self.tuya_client.ip)
if len(self.devices) > 1:
dev.group_id = self.base_addr + 0xff
#debug method / usefull to start the debugging a device
#dev.methods['debug'] = self.debug
def event_handle(self,ev_type,ev_data):
if ev_type == tuyaclient.Event.DPS:
self.on_status(ev_data)
self.on_dps(ev_data)
elif ev_type == tuyaclient.Event.CONNECTED:
self.request_dps()
self.parent.remove_inactive([k.address for k in self.devices])
elif ev_type == tuyaclient.Event.DISCONNECTED:
self.parent.add_inactive([k.address for k in self.devices])
else:
logger.debug(f"{ev_type} / {ev_data}")
......@@ -76,15 +82,10 @@ class TuyaDev:
def request_dps(self):
self.tuya_client.request_dps()
def debug(self):
import pdb;
pdb.set_trace()
def setup(self):
logger.warning('Please override setup()')
def on_status(self,data):
def on_dps(self,data):
logger.warning('Please implement on_status in your class')
......@@ -111,7 +112,7 @@ class PowerRelay(TuyaDev):
def toggle(self,idx,dev):
self.post_dps({idx:not dev.attributes[0].value})
def on_status(self,dps):
def on_dps(self,dps):
for k in dps:
tmp = self.dps_to_dev.get(k,None)
if tmp:
......@@ -132,8 +133,8 @@ class SmartPlug(PowerRelay):
# related power relays
pmeter.attributes['devices'] = [k.address for k in self.devices[1:]]
def on_status(self,dps):
PowerRelay.on_status(self,dps)
def on_dps(self,dps):
PowerRelay.on_dps(self,dps)
pmeter_attr = self.devices[0].attributes
# extract current / power / voltage from
current = get_dps(dps,self.pmeter_dps[0])
......@@ -164,7 +165,7 @@ class Lamp(TuyaDev):
def toggle(self):
self.post_dps({1:not self.devices[0].attributes['light']})
def on_status(self,dps):
def on_dps(self,dps):
state = get_dps(dps,1)
if state != None:
self.devices[0].attributes['light'] = state
......@@ -217,7 +218,7 @@ class LampDimmer(Lamp,AdvLampMixin):
dev = devices.lamp_dimmer(self.base_addr+1)
self.setup_mixin(dev)
def on_status(self,dps):
def on_dps(self,dps):
attrs = self.devices[0].attributes
# state
result = get_dps(dps,1)
......@@ -251,7 +252,7 @@ class LampRGB(Lamp,AdvLampMixin):
dev.methods['set_hsv'] = self.set_hsv
self.setup_mixin(dev)
def on_status(self,dps):
def on_dps(self,dps):
attrs = self.devices[0].attributes
# state
result = get_dps(dps,1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment