K01:
authordxy15521469561 <1731678236@qq.com>
Fri, 17 Nov 2023 01:45:57 +0000 (09:45 +0800)
committerdxy15521469561 <1731678236@qq.com>
Fri, 17 Nov 2023 01:45:57 +0000 (09:45 +0800)
鉴权系统

2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py

index 0ccfb85..0012428 100644 (file)
@@ -3014,32 +3014,39 @@ class testSmsSetIPManager(Abstract):#
         EventMesh.subscribe("set_new_ip", self.set_new_ip)#设置关机时间
         EventMesh.subscribe("get_new_ip", self.get_new_ip)
 
-        EventMesh.subscribe("get_new_key_cb", self.get_new_key_cb)#获取key
-        EventMesh.subscribe("set_new_key_cb", self.set_new_key_cb)#获取key
+        EventMesh.subscribe("set_ip", self.set_ip)#设置关机时间
+        EventMesh.subscribe("get_ip", self.get_ip)
 
-        EventMesh.subscribe("set_new_pid_cb", self.set_new_pid_cb)#获取pid
-        EventMesh.subscribe("get_new_pid_cb", self.get_new_pid_cb)#获取pid
+        EventMesh.subscribe("set_com", self.set_com)#设置关机时间
+        EventMesh.subscribe("get_com", self.get_com)
+
+        EventMesh.subscribe("get_new_key", self.get_new_key_cb)#获取key
+        EventMesh.subscribe("set_new_key", self.set_new_key_cb)#获取key
+
+        EventMesh.subscribe("set_new_pid", self.set_new_pid_cb)#获取pid
+        EventMesh.subscribe("get_new_pid", self.get_new_pid_cb)#获取pid
 
         EventMesh.subscribe("set_server_state", self.set_server_state)#
         EventMesh.subscribe("get_server_state", self.get_server_state)#
 
-        EventMesh.subscribe("get_new_key_pid", self.get_new_key_pid)#获取pid和key
 
 
     def set_new_key_cb(self, event, msg): 
         self.new_key = msg
-        print("set_new_key_cb",msg,self.new_key)
+        # print("set_new_key_cb",msg,self.new_key)
         EventMesh.publish("set_storage_config",["set_new_key",self.new_key])
 
     def get_new_key_cb(self, event, msg):
+        # print("get_new_key_cb",self.new_key)
         return self.new_key
     
     def set_new_pid_cb(self, event, msg): 
         self.new_pid = msg
-        print("set_new_pid_cb",msg,self.new_pid)
+        # print("set_new_pid_cb",msg,self.new_pid)
         EventMesh.publish("set_storage_config",["set_new_pid",self.new_pid])
 
     def get_new_pid_cb(self, event, msg):
+        # print("get_new_pid_cb",self.new_pid)
         return self.new_pid
 
     def set_new_ip(self, event, msg): 
@@ -3070,6 +3077,22 @@ class testSmsSetIPManager(Abstract):#
         if tmp_com != None:
             self.newcom = tmp_com
         return [self.newip,self.newcom]
+    
+    def set_ip(self, event, msg): 
+        self.newip = msg
+        EventMesh.publish("set_storage_config",["set_new_ip_addr",self.newip])
+
+    def get_ip(self, event, msg):
+        # print("get_ip",self.newip)
+        return self.newip
+    
+    def set_com(self, event, msg): 
+        self.newcom = msg
+        EventMesh.publish("set_storage_config",["set_new_com",self.newcom])
+
+    def get_com(self, event, msg):
+        # print("get_com",self.newcom)
+        return self.newcom
 
     def get_new_key_pid(self, event, msg):
         return [self.new_key,self.new_pid]
index 6b8c651..c4b2033 100644 (file)
@@ -186,10 +186,6 @@ class SockManager(Abstract):
         sever_state = EventMesh.publish("get_server_state")#获取修改服务器状态
         if sever_state != None:
             if sever_state == 0:
-                new_ip_data = EventMesh.publish("get_new_ip")
-
-                new_key_data = EventMesh.publish("get_new_key_pid")#获取pid和key
-
                 imei = EventMesh.publish(constants.EVENT.GET_IMEI)
                 server_data = server_init()
                 key_data = server_data[2]
@@ -206,7 +202,7 @@ class SockManager(Abstract):
                 print("sign_data:{} sonce_data:{}".format(md5_data,sign_data))
                 # sign_data = MD5_head
                 # http://8.134.110.49:31379/dev/device/check?imei=&bid=sonce=sign=
-                url = "http://test.app.api.thisiot.com/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(imei,pid_data,sonce_data,sign_data)
+                url = "http://test.iot.api.thisiot.com/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(imei,pid_data,sonce_data,sign_data)
 
                 response = request.get(url)
                 data_tmp ={}
@@ -240,35 +236,28 @@ class SockManager(Abstract):
                                     secretKey = data_tmp["secretKey"]#
                                     pid = data_tmp["bid"]#产品型号
                                     port = data_tmp["port"]#端口号
-                                    if new_ip_data != None:
-                                        # host = "tcptest.tx.kidxin.com"#童信
-                                        # port = 20500
-                                        # d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+                                    
+                                    # host = "device.miwitracker.com"#童信
+                                    # port = 8505
+
+                                    # d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+
+                                    if secretKey != '':
+                                        EventMesh.publish("set_new_key", str(secretKey))#获取pid和key
+                                    if pid != '':
+                                        EventMesh.publish("set_new_pid",str(pid))#获取pid和key
+
+                                    if host != '' or (port != '' and port != -1):
                                         if host != '':
                                             self.server_addr = host
-                                
-                                            EventMesh.publish("set_storage_config",["set_new_ip_addr",self.server_addr])
-                                            
+                                            EventMesh.publish("set_ip",str(self.server_addr))
+                                        
                                         if port != '' and port != -1:
                                             self.server_port = port
-                                            EventMesh.publish("set_storage_config",["set_new_com",self.server_port])
-                                            # EventMesh.publish("set_new_ip",[new_ip_data[0],self.server_port])
-                                    # pid = "SZKW"
-                                    # secretKey = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
-                                    if new_key_data != None:
-                                        if secretKey != '':
-                                            EventMesh.publish("set_new_key_cb", secretKey)#获取pid和key
-                                            
-                                        if pid != '':
-                                            EventMesh.publish("set_new_pid_cb",pid)#获取pid和key
-                                    
+                                            EventMesh.publish("set_com",self.server_port)
+                                        self.reconnect_timer_cb()#重连设备
                                     EventMesh.publish("set_server_state",1)#获取修改服务器状态
-                                    self.reconnect_timer_cb()#重连设备
-                            # print("self.server_addr",self.server_addr,self.server_port)
-                # key_data = EventMesh.publish("get_new_key_pid")#获取pid和key
-                # print("self.server_addr-{}-self.server_port:{}-key_data:{}-{}".format(self.server_addr,self.server_port,key_data[0],key_data[1]))
-                # print("response.status_code-{}-{}-{}-{}".format(response.status_code,url,response.content,response.text))
-        
+                                    
 
         
     def check(self, *args):
@@ -330,7 +319,7 @@ class SockManager(Abstract):
             utime.sleep(1)
 
     def send(self, topic, msg):
-       # print("TCP:send data:{}".format(msg))
+        # print("TCP:send data:{}".format(msg))
         if EventMesh.publish("network_state") == 0: #没注网,则不发送
             EventMesh.publish(constants.EVENT.SET_CONNECT, 0)#标记断网
             print("dataCall not connect")
@@ -422,7 +411,6 @@ class NetManager(Abstract):
     def get_network_state(self, topic, msg):
         return self.network_state 
 
-
 class ProtoCol(Abstract):
     TYPE = ""
     HEADER = "#@{}@#;"
@@ -430,7 +418,8 @@ class ProtoCol(Abstract):
     END = ";" + chr(0x01)
     #PID = "SZKW"
     #PID = "qAELPTKmFanR4RHe"
-
+    md5_key = ''
+    PID = ''
     def __init__(self):
         self.content = None
         self.check_sum = None
@@ -451,27 +440,14 @@ class ProtoCol(Abstract):
         else:
             self.md5_key = server_data[0]
             self.PID = server_data[1]
+        # print("init md5PID2",self.md5_key,self.PID)
 
     def initialization(self, *args, **kwargs):
         EventMesh.subscribe(self.TYPE + "_SEND", self.handler)
         EventMesh.subscribe(self.TYPE + "_RECV", self.handler)
 
-    def change_key_pid(self):
-        server_data = EventMesh.publish("get_new_key_pid")#获取pid和key
-        print("handler",server_data,type(server_data[0]),type(server_data[1]))
-        if server_data != None:
-            if str(self.md5_key) != str(server_data[0]):
-                print("change md5key1",self.md5_key,server_data[0])
-                self.md5_key = server_data[0]
-                print("change md5key2",self.md5_key,server_data[0])
-            if str(self.PID) != str(server_data[1]):
-                print("change md5PID1",self.PID,server_data[1])
-                self.PID = server_data[1] 
-                print("change md5PID2",self.PID,server_data[1])
-        pass
-
     def handler(self, event, msg):
-        self.change_key_pid()
+        # self.change_key_pid()
 
         self.password = EventMesh.publish(constants.EVENT.GET_PASSWORD)
         self.imei = EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166" #EventMesh.publish(constants.EVENT.GET_IMEI)#"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI) #"867387060319166"#EventMesh.publish(constants.EVENT.GET_IMEI) #"867387060319166"#"867387060319188"#"867387060319177"#"867387060319166"#"860132060004322"#"867387060319166"#"860132060004322"#EventMesh.publish(constants.EVENT.GET_IMEI)
@@ -512,6 +488,7 @@ class ProtoCol(Abstract):
     
     def pack_MD5_head(self,data):                                                                                                                 
         #key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+        self.md5_key=EventMesh.publish("get_new_key")
         if(self.md5_key == ""):
             return ""
         MD5_head = ""
@@ -533,7 +510,7 @@ class LK_ProtoCol(ProtoCol):
     def send(self, event, msg):
         #[SZKW*334588000000156*0002*LK]
         #print('self.imei:%s'%(self.imei))
-        send_data = self.PID+"*%s*0002*LK"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0002*LK"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("LK_ProtoCol:send:%s"%(data))
@@ -548,6 +525,7 @@ class LK_ProtoCol(ProtoCol):
         @param event: LK成功
         @param msg: 接收到的下行数据
         """
+        
         print("LK_ProtoCol:recv:%s"%(msg))
         EventMesh.publish(constants.PROTOCOL.PING_SEND)
         EventMesh.publish(constants.PROTOCOL.KA_SEND)
@@ -562,7 +540,7 @@ class PING_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         #[SZKWT*YYYYYYYYYYYYYYY*LEN*PING]
-        send_data = self.PID+"*%s*0004*PING"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0004*PING"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #print("PING_ProtoCol:send:%s"%(data))
@@ -574,7 +552,7 @@ class PING_ProtoCol(ProtoCol):
 
         @param event: PING
         @param msg: 接收到的下行数据
-        """
+        """ 
         #print("PING_ProtoCol:recv:%s"%(msg))   
         data_tmp =  msg.decode('ascii')   
         data_tmp = data_tmp.split(']')[0] #去掉]    
@@ -613,8 +591,8 @@ class KA_ProtoCol(ProtoCol):
         send_data = "KA,%s,%d,%d,%d"%(date,step,0,battery_caption)
         send_len = len(send_data)
 
-        send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,"KA")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,send_data)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,"KA")
 
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
@@ -630,6 +608,7 @@ class KA_ProtoCol(ProtoCol):
         @param event: PING
         @param msg: 接收到的下行数据
         """
+        
         #print("KA_ProtoCol:recv:%s"%(msg))   
         
 class UD_ProtoCol(ProtoCol):
@@ -651,8 +630,8 @@ class UD_ProtoCol(ProtoCol):
         send_data ="UD,"+msg
         send_len = len(send_data)
         #wt_data = "%s"%(send_data)
-        send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,"UD")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,send_data)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,"UD")
         
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
@@ -666,7 +645,6 @@ class UD_ProtoCol(ProtoCol):
 
     def recv(self, event, msg):
         pass
-        # print("UD_ProtoCol:recv:%s"%(msg))  
 
 class CR_ProtoCol(ProtoCol):
     """立即定位"""
@@ -674,7 +652,7 @@ class CR_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         #[SZKWT*YYYYYYYYYYYYYYY*LEN*PING]
-        send_data = self.PID+"*%s*0002*CR"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0002*CR"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #print("CR_ProtoCol:send:%s"%(data))
@@ -696,8 +674,9 @@ class FIND_ProtoCol(ProtoCol):
     TYPE = "FIND"
 
     def send(self, event, msg):
+       
         #[SZKWT*YYYYYYYYYYYYYYY*LEN*PING]
-        send_data = self.PID+"*%s*0004*FIND"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0004*FIND"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #print("FIND_ProtoCol:send:%s"%(data))
@@ -710,6 +689,7 @@ class FIND_ProtoCol(ProtoCol):
         @param event: FIND,播放铃声
         @param msg: 接收到的下行数据
         """
+        
         EventMesh.publish(constants.PROTOCOL.FIND_SEND)
         # a = audio.Audio(0)
         # a.set_pa(Pin.GPIO29)
@@ -724,8 +704,9 @@ class POWEROFF_ProtoCol(ProtoCol):
     TYPE = "POWEROFF"
 
     def send(self, event, msg):
+        
         # [SZKW*867387060319491*0008*POWEROFF]
-        send_data = self.PID+"*%s*0008*POWEROFF"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0008*POWEROFF"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #print("POWEROFF_ProtoCol:send:%s"%(data))
@@ -751,8 +732,9 @@ class PHL_ProtoCol(ProtoCol):
 
 
     def send(self, event, msg):
+        
         # [SZKW*867387060319491*0008*PHL]
-        send_data = self.PID+"*%s*0003*PHL"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0003*PHL"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #print("POWEROFF_ProtoCol:send:%s"%(data))
@@ -765,6 +747,7 @@ class PHL_ProtoCol(ProtoCol):
         @param event: 电话本同步
         @param msg: 接收到的下行数据
         """
+        
         msg = msg[1:-1]
         # print("phonebook:msg:%s\r\n"%msg)
         msg_tmp = msg.decode('ascii')
@@ -813,9 +796,9 @@ class WT_ProtoCol(ProtoCol):
         if(msg != ""):
             msg_tmp = "WT," + msg
             data_len = len(msg_tmp)
-            MD5_head_data = self.PID+"*%s*%04X*WT"%(self.imei,data_len)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*WT"%(self.imei,data_len)
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
-            send_data = self.PID+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
             data = "[%s%s]"%(str(MD5_SIGN),send_data)
             print("WT_ProtoCol:send:%s"%(data))
             # 通过socket发送到服务器端
@@ -863,8 +846,9 @@ class REMIND_ProtoCol(ProtoCol):
 
 
     def send(self, event, msg):
+        
         # [SZKW*867387060319491*0008*REMIND]
-        send_data = self.PID+"*%s*0006*REMIND"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*REMIND"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("REMIND_ProtoCol:send:%s"%(data))
@@ -876,6 +860,7 @@ class REMIND_ProtoCol(ProtoCol):
         @param event: 闹钟数据下发
         @param msg: 接收到的下行数据
         """
+        
         # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
         # print("REMIND_ProtoCol RECV msg:%s"%(msg))
         alarm_new = []
@@ -911,6 +896,7 @@ class REMIND_ProtoCol(ProtoCol):
                 alarm_day = []
                 alarm_week = []
                 alarm_total_data = []
+                alarm_day_num = 1
                 # print("j!!!!!!!!!!",j)
                 if k == 1:
                     if len(msg_tmp) != 0:
@@ -921,15 +907,14 @@ class REMIND_ProtoCol(ProtoCol):
                         alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
                         alarm_time_hour = int(alarm_time_tmp[0])
                         alarm_time_min = int(alarm_time_tmp[1])
-                        if alarm_day_num == 3:
-                            alarm_week = alarm_data[3]#星期
-
                         if alarm_day_num == 2:#每一天
                             alarm_day = [1,2,3,4,5,6,0]
                         elif alarm_day_num == 3:#自定义
                             for i in range(0,7):
                                 if alarm_week[i] != '0':
                                     alarm_day.append(i)
+                        if alarm_day_num == 0:
+                            alarm_day_num = 1
                         alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
                 else:
                     if len(msg_tmp) != 0:
@@ -944,15 +929,14 @@ class REMIND_ProtoCol(ProtoCol):
                             alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
                             alarm_time_hour = int(alarm_time_tmp[0])
                             alarm_time_min = int(alarm_time_tmp[1])
-                            if alarm_day_num == 3:
-                                alarm_week = alarm_data[3]#星期
-
                             if alarm_day_num == 2:#每一天
                                 alarm_day = [1,2,3,4,5,6,0]
                             elif alarm_day_num == 3:#自定义
                                 for i in range(0,7):
                                     if alarm_week[i] != '0':
                                         alarm_day.append(i)
+                            if alarm_day_num == 0:
+                                alarm_day_num = 1
                             alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
                             
             # print("alarm_new end:{}",alarm_new)
@@ -976,8 +960,9 @@ class HRSTART_ProtoCol(ProtoCol):
 
 
     def send(self, event, msg):
+        
         # [SZKW*867387060319491*0008*hrtstart]
-        send_data = self.PID+"*%s*0008*hrtstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0008*hrtstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("HRSTART_ProtoCol:send:%s"%(data))
@@ -989,6 +974,7 @@ class HRSTART_ProtoCol(ProtoCol):
         @param event: 心率数据下发
         @param msg: 接收到的下行数据
         """
+        
         # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
         # print("REMIND_ProtoCol RECV msg:%s"%(msg))
         # HRSTART_ProtoCol RECV msg:b'SZKW*860132060004322*000D*hrtstart,7200' msg_:7200
@@ -1027,11 +1013,12 @@ class HEART_ProtoCol(ProtoCol):
 
 
     def send(self, event, msg):
+        
         # [SZKW*334588000000156*len*heart,x]
         # print("HEART:send:{}".format(msg))
         len_size = len(str(msg))+len("heart,")
-        send_data = self.PID+"*%s*%04X*heart"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"heart")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*heart"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"heart")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
         # print("HEART_ProtoCol:data:%s"%(data))
@@ -1043,17 +1030,19 @@ class HEART_ProtoCol(ProtoCol):
         @param event: 心率数据下发
         @param msg: 接收到的下行数据
         """
+        
         # print("HRSTART_ProtoCol RECV msg:")
         #EventMesh.publish(constants.PROTOCOL.HEART_SEND)
 class OXYGEN_ProtoCol(ProtoCol):
     """上传血氧测试数据"""
     TYPE = "oxygen"
     def send(self, event, msg):
+        
         # [SZKW*334588000000156*len*heart,x]
         # print("oxstart:send:{}".format(msg))
         len_size = len(str(msg))+len("oxygen,")
-        send_data = self.PID+"*%s*%04X*oxygen"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"oxygen")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*oxygen"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"oxygen")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
         # print("HEART_ProtoCol:data:%s"%(data))
@@ -1065,6 +1054,7 @@ class OXYGEN_ProtoCol(ProtoCol):
         @param event: 心率数据下发
         @param msg: 接收到的下行数据
         """
+        
         # print("HRSTART_ProtoCol RECV msg:")
         #EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND)
 
@@ -1078,9 +1068,10 @@ class OXYGEN_One_ProtoCol(ProtoCol):#单次测量
 # 平台回复:handler -> b'[SZKW*860132060004322*0009*oxstart,1]'
 # [XT*334588000000156*0006*oxygen]
     def send(self, event, msg):
+        
         # [SZKW*334588000000156*len*heart,x]
         print("oxstart:")
-        send_data = self.PID+"*%s*0007*oxstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*oxstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("HEART_ProtoCol:data:%s"%(data))
@@ -1092,6 +1083,7 @@ class OXYGEN_One_ProtoCol(ProtoCol):#单次测量
         @param event: 血氧单次测量下发
         @param msg: 接收到的下行数据
         """
+        
         print("oxstart:{}".format(msg))
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
@@ -1110,6 +1102,7 @@ class TEMP_ProtoCol(ProtoCol):
     """上传体温测试数据"""
     TYPE = "temp"
     def send(self, event, msg):
+        
         # [SZKW*334588000000156*len*heart,x]
         # print("temp:send:{}".format(msg))
         len_size = len(str(msg[0]))+len("temp,")+1+len(str(msg[1]))
@@ -1118,8 +1111,8 @@ class TEMP_ProtoCol(ProtoCol):
         # 代表终端的温度为:36.2
         # 平台回复:
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*%04X*temp"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"temp")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*temp"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"temp")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%d.%d]"%(str(MD5_SIGN),send_data,msg[0],msg[1])
         # print("temp:data:%s"%(data))
@@ -1131,6 +1124,7 @@ class TEMP_ProtoCol(ProtoCol):
         @param event: 
         @param msg: 接收到的下行数据
         """
+        
         # print("HRSTART_ProtoCol RECV msg:")
         #EventMesh.publish(constants.PROTOCOL.TEMP_SEND)
 
@@ -1138,8 +1132,9 @@ class WDSTART_ProtoCol(ProtoCol):
     """上传体温频率"""
     TYPE = "wdstart"
     def send(self, event, msg):
+        
         #[XT*334588000000156*len*wdstart,300]
-        send_data = self.PID+"*%s*0007*wdstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*wdstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("temp:data:%s"%(data))
@@ -1151,6 +1146,7 @@ class WDSTART_ProtoCol(ProtoCol):
         @param event: 体温下发频率数据
         @param msg: 接收到的下行数据
         """
+        
         # print("WDSTART_ProtoCol RECV msg:")
         print("wdstart:{}".format(msg))
         msg = msg[1:-1]
@@ -1186,8 +1182,9 @@ class DLT_ProtoCol(ProtoCol):
     """解绑数据"""
     TYPE = "DLT"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*0003*DLT"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0003*DLT"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("temp:data:%s"%(data))
@@ -1207,8 +1204,9 @@ class UPLOAD_ProtoCol(ProtoCol):
     """定位频率数据"""
     TYPE = "UPLOAD"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*0006*UPLOAD"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*UPLOAD"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         
@@ -1237,8 +1235,9 @@ class CENTER_ProtoCol(ProtoCol):
     """设置快捷号码"""
     TYPE = "CENTER"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*0006*CENTER"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*CENTER"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("UPLOAD:data:%s"%(data))
@@ -1267,8 +1266,9 @@ class MONITOR_ProtoCol(ProtoCol):
     """呼叫快捷号码"""
     TYPE = "MONITOR"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0004*MONITOR]
-        send_data = self.PID+"*%s*0007*MONITOR"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*MONITOR"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("MONITOR:data:%s"%(data))
@@ -1310,8 +1310,9 @@ class bootoff_ProtoCol(ProtoCol):
     """定时开关机"""
     TYPE = "BOOTOFF"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0004*MONITOR]
-        send_data = self.PID+"*%s*0007*BOOTOFF"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*BOOTOFF"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("BOOTOFF:data:%s"%(data))
@@ -1340,8 +1341,9 @@ class sosHome_dial_ProtoCol(ProtoCol):
     """sos家庭号码"""
     TYPE = "SOS"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0004*MONITOR]
-        send_data = self.PID+"*%s*0003*SOS"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0003*SOS"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("sosHome_dial_ProtoCol:data:%s"%(data))
@@ -1383,8 +1385,9 @@ class LOWBAT_ProtoCol(ProtoCol):
     """低电提醒"""
     TYPE = "LOWBAT"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0006*LOWBAT]
-        send_data = self.PID+"*%s*0006*LOWBAT"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*LOWBAT"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("LOWBAT:data:%s"%(data))
@@ -1413,8 +1416,9 @@ class Time_ProtoCol(ProtoCol):
     """设置系统时间"""
     TYPE = "Time"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0006*LOWBAT]
-        send_data = self.PID+"*%s*0004*Time"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0004*Time"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("Time:data:%s"%(data))
@@ -1449,8 +1453,9 @@ class WLKEY_ProtoCol(ProtoCol):
     """"""
     TYPE = "WLKEY"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0005*WLKEY]
-        send_data = self.PID+"*%s*0005*WLKEY"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0005*WLKEY"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("WLKEY:data:%s"%(data))
@@ -1474,8 +1479,9 @@ class SILENCETIMEFS_ProtoCol(ProtoCol):#云米
     """上课禁用"""
     TYPE = "SILENCETIMEFS"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0006*SILENCETIME2] a b c d
-        send_data = self.PID+"*%s*000D*SILENCETIMEFS"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000D*SILENCETIMEFS"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("KEYBRD:data:%s"%(data))
@@ -1569,8 +1575,9 @@ class SILENCETIME2_ProtoCol(ProtoCol):
     """免打扰"""
     TYPE = "SILENCETIME2"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0006*SILENCETIME2]
-        send_data = self.PID+"*%s*000C*SILENCETIME2"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000C*SILENCETIME2"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("KEYBRD:data:%s"%(data))
@@ -1654,8 +1661,9 @@ class KEYBRD_ProtoCol(ProtoCol):
     """键盘开关"""
     TYPE = "KEYBRD"
     def send(self, event, msg):
+        
         # [XT*334588000000156*0006*SILENCETIME2]
-        send_data = self.PID+"*%s*0006*KEYBRD"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*KEYBRD"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("KEYBRD:data:%s"%(data))
@@ -1686,6 +1694,7 @@ class ppdevvoicemsg_ProtoCol(ProtoCol):
     """设备好友语音发送"""
     TYPE = "ppdevvoicemsg"
     def send(self, event, msg):
+        
 
         # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
             #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
@@ -1710,9 +1719,9 @@ class ppdevvoicemsg_ProtoCol(ProtoCol):
                 
             datalen = len(arm) +len(str("ppdevvoicemsg"))+1
             #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
-            send_data = bytearray(self.PID+"*%s*%04X*ppdevvoicemsg,%s,"%(self.imei,datalen,"860132060129194"))
+            send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*ppdevvoicemsg,%s,"%(self.imei,datalen,"860132060129194"))
             send_data.extend(arm)
-            MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"ppdevvoicemsg")
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"ppdevvoicemsg")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = bytearray('[')
             data.extend(MD5_SIGN)
@@ -1732,9 +1741,10 @@ class ppsrvvoicemsg_ProtoCol(ProtoCol):#服务器发送设备好友语音 [CS*YY
     """服务器发送好友语音发送"""
     TYPE = "ppsrvvoicemsg"
     def send(self, event, msg):
+        
         msg_tmp = "ppsrvvoicemsg," +"%s,"%(msg)+ 1
         data_len = len(str(msg_tmp))
-        send_data = self.PID+"*%s*%04X*ppsrvvoicemsg,%s,%d"%(self.imei,data_len,msg,1)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*ppsrvvoicemsg,%s,%d"%(self.imei,data_len,msg,1)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("POWEROFF_ProtoCol:send:%s"%(data))
@@ -1754,6 +1764,7 @@ class ppfriends_ProtoCol(ProtoCol):
     """碰碰"""
     TYPE = "ppfriends"
     def send(self, event, msg):
+        
         # print("ppfriends:send:")
          # [SZKW*867387060319491*0008*PP]
         if(msg != ""):
@@ -1764,9 +1775,9 @@ class ppfriends_ProtoCol(ProtoCol):
             msg_tmp = "ppfriends," +"%s,"%(time)+ msg
             
             data_len = len(msg_tmp)
-            MD5_head_data = self.PID+"*%s*%04X*ppfriends"%(self.imei,data_len)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*ppfriends"%(self.imei,data_len)
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
-            send_data = self.PID+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
             data = "[%s%s]"%(str(MD5_SIGN),send_data)
 
             # print("PP_ProtoCol:msg_tmp:%s"%(data))
@@ -1785,6 +1796,7 @@ class pp_ProtoCol(ProtoCol):
     """碰碰交友"""
     TYPE = "ppfriends_match"
     def send(self, event, msg):
+        
         # print("PP_ProtoCol:send:")
          # [SZKW*867387060319491*0008*PP]
         if(msg != ""):
@@ -1795,9 +1807,9 @@ class pp_ProtoCol(ProtoCol):
             msg_tmp = "ppfriends_match," +"%s,"%(time)+ msg
             
             data_len = len(msg_tmp)
-            MD5_head_data = self.PID+"*%s*%04X*ppfriends_match"%(self.imei,data_len)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*ppfriends_match"%(self.imei,data_len)
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
-            send_data = self.PID+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
             data = "[%s%s]"%(str(MD5_SIGN),send_data)
 
             # print("PP_ProtoCol:msg_tmp:%s"%(data))
@@ -1840,6 +1852,7 @@ class delpp_ProtoCol(ProtoCol):
     """删除碰碰交友"""
     TYPE = "MFCODE_FRIEND_DEL_REQ"
     def send(self, event, msg):
+        
         # print("MFCODE_FRIEND_DEL_REQ_ProtoCol:send:")
          # [SZKW*867387060319491*0008*MFCODE_FRIEND_DEL_REQ]
         if(msg != ""):
@@ -1847,9 +1860,9 @@ class delpp_ProtoCol(ProtoCol):
             msg_tmp = "MFCODE_FRIEND_DEL_REQ,"+ msg
             
             data_len = len(msg_tmp)
-            MD5_head_data = self.PID+"*%s*%04X*MFCODE_FRIEND_DEL_REQ"%(self.imei,data_len)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*MFCODE_FRIEND_DEL_REQ"%(self.imei,data_len)
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
-            send_data = self.PID+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
             data = "[%s%s]"%(str(MD5_SIGN),send_data)
 
             # print("MFCODE_FRIEND_DEL_REQ_ProtoCol:msg_tmp:%s"%(data))
@@ -1868,7 +1881,8 @@ class reqpp_ProtoCol(ProtoCol):
     """同步碰碰交友"""
     TYPE = "MFCODE_FRIEND_REQ"
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0011*MFCODE_FRIEND_REQ"%(self.imei)
+        
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0011*MFCODE_FRIEND_REQ"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("MFCODE_FRIEND_REQ:data:%s"%(data))
@@ -1887,7 +1901,8 @@ class revpp_ProtoCol(ProtoCol):
     """服务器同步下发碰碰交友"""
     TYPE = "MFCODE_FRIEND"
     def send(self, event, msg):
-        send_data = self.PID+"*%s*000d*MFCODE_FRIEND"%(self.imei)
+        
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000d*MFCODE_FRIEND"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("MFCODE_FRIEND:data:%s"%(data))
@@ -1970,7 +1985,7 @@ class factory_ProtoCol(ProtoCol):
     """恢复出厂设置"""
     TYPE = "FACTORY"
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0007*FACTORY"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*FACTORY"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("FACTORY:data:%s"%(data))
@@ -1990,7 +2005,7 @@ class restart_ProtoCol(ProtoCol):
     """重启"""
     TYPE = "RESET"
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0005*RESET"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0005*RESET"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("FACTORY:data:%s"%(data))
@@ -2019,8 +2034,8 @@ class TK_ProtoCol(ProtoCol):
 
             len_size = len(str(msg))+len("TKS,")
             #  实例:[XT*334588000000156*0009*TK,1]
-            send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size)
-            MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*TKS"%(self.imei,len_size)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
             print("TK:data:%s"%(data))
@@ -2051,9 +2066,9 @@ class TK_ProtoCol(ProtoCol):
                 
             datalen = len(arm) + 4+len(str(arm_sec))+1
             #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
-            send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
+            send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
             send_data.extend(arm)
-            MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = bytearray('[')
             data.extend(MD5_SIGN)
@@ -2144,9 +2159,8 @@ class MESSAGE_ProtoCol(ProtoCol):
     
 
     def send(self, event, msg):
-       
         #[XT*334588000000156*0007*MESSAGE]
-        send_data = self.PID+"*%s*0007*MESSAGE"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*MESSAGE"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
@@ -2209,7 +2223,7 @@ class APPVOICEMSG_ProtoCol(ProtoCol):#群聊语音
     
 
     def send(self, event, msg):
-        send_data = self.PID+"*%s*000b*appvoicemsg,%s,%s,%d"%(self.imei,msg[0],msg[1],1)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000b*appvoicemsg,%s,%s,%d"%(self.imei,msg[0],msg[1],1)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("POWEROFF_ProtoCol:send:%s"%(data))
@@ -2241,7 +2255,7 @@ class srvtextmsg_ProtoCol(ProtoCol):#微聊文字
     
 
     def send(self, event, msg):
-        send_data = self.PID+"*%s*000a*srvtextmsg,%s,%s,%d"%(self.imei,msg[0],msg[1],1)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000a*srvtextmsg,%s,%s,%d"%(self.imei,msg[0],msg[1],1)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         print("POWEROFF_ProtoCol:send:%s"%(data))