diff --git a/devices/protocols/Edisio/xaal/edisio/gw.py b/devices/protocols/Edisio/xaal/edisio/gw.py index 8cb3e8c9cf4d27ae6a6fa0515894b146492a6edd..eaa420f1a3dc03d7dc4b656a7183956ff2b0662f 100644 --- a/devices/protocols/Edisio/xaal/edisio/gw.py +++ b/devices/protocols/Edisio/xaal/edisio/gw.py @@ -12,11 +12,6 @@ import time PACKAGE_NAME = "xaal.edisio" logger = logging.getLogger(PACKAGE_NAME) -def hex_to_str(data): - r = "" - for k in data: - r = r + '%02x ' % k - return r def addr_to_str(addr): r = "" @@ -37,7 +32,7 @@ class GW(gevent.Greenlet): def config(self): cfg = tools.load_cfg(PACKAGE_NAME) if not cfg: - cfg= tools.new_cfg(PACKAGE_NAME) + cfg = tools.new_cfg(PACKAGE_NAME) cfg['config']['port'] = '/dev/ttyUSB0' cfg['config']['base_addr'] = str(tools.get_random_base_uuid()) logger.warn("Created an empty config file") @@ -109,33 +104,33 @@ class GW(gevent.Greenlet): if self.filter(pkt): addr = addr_to_str(pkt[3:7]) btn = int(pkt[7]) - logger.debug("%s %s" % (addr,btn)) - self.send_notif(addr,btn) + logger.debug("%s %s" % (addr, btn)) + self.send_notif(addr, btn) - def send_notif(self,addr,btn): + def send_notif(self, addr, btn): if addr not in self.devices.keys(): self.add_buttons(addr) dev = self.devices[addr][btn-1] if dev: dev.send_notification('click') - def add_buttons(self,addr): - base_addr = self.cfg['config'].get('base_addr') - group_id = tools.get_random_uuid() + def add_buttons(self, addr): + base_addr = tools.get_uuid(self.cfg['config'].get('base_addr')) + group_id = base_addr + (int(addr, 16) << 8) + 0xff l = [] addr_list = [] - for i in range(0,8): - tmp = tools.get_uuid( base_addr+addr+'%02d'%(i+1) ) + for i in range(0, 8): + tmp = base_addr + (int(addr, 16) << 8) + (i + 1) btn = Device('button.basic',tmp) btn.vendor_id = 'Edisio' btn.product_id = 'Edision Switches' - btn.hw_id = 'Btn:%s/%s' % (addr,i) + btn.hw_id = 'Btn:%s/%s' % (addr, i) btn.info = 'Edisio ' + btn.hw_id btn.group_id = group_id l.append(btn) addr_list.append(btn.address) self.engine.add_device(btn) - self.devices.update({addr:l}) + self.devices.update({addr: l}) self.gw.attributes['embedded'] = self.gw.attributes['embedded'] + addr_list