diff --git a/devices/protocols/SensFloor/xaal/sensfloor/gw.py b/devices/protocols/SensFloor/xaal/sensfloor/gw.py index 1f4802804e9876134c5d978d91f08f2ff46da854..8e6af3c20c843ed9ddbdf458691e6ab0a5fe8e76 100644 --- a/devices/protocols/SensFloor/xaal/sensfloor/gw.py +++ b/devices/protocols/SensFloor/xaal/sensfloor/gw.py @@ -1,8 +1,7 @@ -from xaal.lib import tools,Device,AsyncEngine +from xaal.lib import tools from xaal.schemas import devices -import asyncio import socketio import atexit import logging @@ -16,39 +15,38 @@ logger = logging.getLogger(PACKAGE_NAME) class GW(object): - def __init__(self,engine): + def __init__(self, engine): self.engine = engine self.devices = {} atexit.register(self._exit) self.config() self.setup() - + def config(self): cfg = tools.load_cfg(PACKAGE_NAME) if not cfg: - cfg= tools.new_cfg(PACKAGE_NAME) - cfg['config']['url']='http://floor1.enstb.org:8000/' + cfg = tools.new_cfg(PACKAGE_NAME) + cfg['config']['url'] = 'http://floor1.enstb.org:8000/' cfg['devices'] = {} - logger.warn("Created an empty config file") + logger.warning("Created an empty config file") cfg.write() self.cfg = cfg def setup(self): # socketio config - self.sio = socketio.AsyncClient(engineio_logger=True,ssl_verify=False) - self.sio.on('alarms-detected',self.on_alarm) - # xaal gateway + self.sio = socketio.AsyncClient(engineio_logger=True, ssl_verify=False) + self.sio.on('alarms-detected', self.on_alarm) + # xaal gateway addr = tools.get_uuid(self.cfg['config']['addr']) self.gw = devices.gateway(addr) self.engine.add_device(self.gw) for k in self.cfg['devices']: cfg = self.cfg['devices'][k] - dev = self.add_device(k,cfg['type'],tools.get_uuid(cfg['addr'])) + dev = self.add_device(k, cfg['type'], tools.get_uuid(cfg['addr'])) self.engine.add_device(dev) - - def add_device(self,idx,al_type,addr=None): + def add_device(self, idx, al_type, addr=None): if not addr: addr = tools.get_random_uuid() dev = None @@ -56,44 +54,42 @@ class GW(object): dev = devices.falldetector(addr) if al_type == 'presence': dev = devices.motion(addr) - if dev==None: - return + if dev is None: + return logger.debug(f"New device {addr} {idx}") dev.vendor_id = 'Future Shape' - dev.product_id='SensFloor' - dev.info='zone index: %s' % idx + dev.product_id = 'SensFloor' + dev.info = 'zone index: %s' % idx - self.devices.update({idx:dev}) + self.devices.update({idx: dev}) self.engine.add_device(dev) return dev - - def get_device(self,idx,al_type): - dev = self.devices.get(idx,None) + def get_device(self, idx, al_type): + dev = self.devices.get(idx, None) return dev - - def on_alarm(self,data): + def on_alarm(self, data): active = [] for k in data: - #print(k) + # print(k) idx = str(k['index']) al_type = k['type'] - state = k['state'] - dev = self.get_device(idx,al_type) - if dev == None: - dev = self.add_device(idx,al_type) - self.cfg['devices'][str(idx)] = {'addr':dev.address,'type':al_type} - - if dev.dev_type=='motion.basic': + # state = k['state'] + dev = self.get_device(idx, al_type) + if dev is None: + dev = self.add_device(idx, al_type) + self.cfg['devices'][str(idx)] = {'addr': dev.address, 'type': al_type} + + if dev.dev_type == 'motion.basic': dev.attributes['presence'] = True active.append(dev) - #print(active) + # print(active) for dev in self.devices.values(): - if dev in active:continue - if dev.dev_type=='motion.basic': - dev.attributes['presence'] = False - + if dev in active: + continue + if dev.dev_type == 'motion.basic': + dev.attributes['presence'] = False def _exit(self): cfg = tools.load_cfg(PACKAGE_NAME) @@ -101,21 +97,24 @@ class GW(object): logger.info('Saving configuration file') self.cfg.write() -# async def xaal_task(self): -# await self.engine.run() + # async def xaal_task(self): + # await self.engine.run() async def sio_task(self): url = self.cfg['config']['url'] - await self.sio.connect(url)#transports='polling') + await self.sio.connect(url) # transports='polling') await self.sio.wait() def stop(): - import pdb;pdb.set_trace() + import pdb + + pdb.set_trace() def setup(eng): gw = GW(eng) eng.on_stop(stop) eng.new_task(gw.sio_task()) - return True \ No newline at end of file + return True +