From a131a91fa89cca216bfb923db4a95a33fa84c05b Mon Sep 17 00:00:00 2001
From: jkerdreu <jkerdreu@b32b6428-25c9-4566-ad07-03861ab6144f>
Date: Mon, 29 Aug 2022 15:12:38 +0000
Subject: [PATCH] Use static group_id for HA.

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2971 b32b6428-25c9-4566-ad07-03861ab6144f
---
 devices/protocols/Edisio/xaal/edisio/gw.py | 27 +++++++++-------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/devices/protocols/Edisio/xaal/edisio/gw.py b/devices/protocols/Edisio/xaal/edisio/gw.py
index 8cb3e8c9..eaa420f1 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
 
 
-- 
GitLab