From: dxy15521469561 <1731678236@qq.com> Date: Sat, 12 Oct 2024 06:36:34 +0000 (+0800) Subject: D10: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=a6c6a35bcaaef29c47c1f8c6e249edcb3933646c;p=mirrors%2FASR1603_G5.git D10: 加入ICCID协议 K01: 更新websockt --- diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile index 034c2808..d0380a3d 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/Makefile @@ -390,6 +390,7 @@ SRC_QSTR += \ source/modnfc.c \ source/nfc_sl6320.c \ source/modstk.c \ + source/modmask.c \ source/modvoip.c diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py index 7de270ea..e44724e4 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py @@ -1096,10 +1096,15 @@ class AIScreen(Screen):#AI_GUI (AI_think_screen.has_flag(lv.obj.FLAG.HIDDEN)) == False: EventMesh.publish("return_prev_screen") elif code == lv.EVENT.SHORT_CLICKED: + # if msg != 0: + # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1: + # EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) if msg == 1: + self.talking_cb(e) pass elif msg == 2: + self.img_cb(e) pass elif msg == 3: @@ -1135,6 +1140,7 @@ class AIScreen(Screen):#AI_GUI self.tts_time_outcount = 0 def talk_end_cancel_cb(self,e):#对话结束已经播放音频取消继续对话按钮 + EventMesh.publish("system_sleep_rest")#防止黑屏 if self.play_flag == 1: self.play_flag = 0 self.aud.stopPlayStream() @@ -1163,6 +1169,7 @@ class AIScreen(Screen):#AI_GUI al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_stop.png") def talk_end_continue_cb(self,e):#连接超时确定按钮回调或者继续对话按钮 + EventMesh.publish("system_sleep_rest")#防止黑屏 self.Close() self.AI_label_answer = "" AI_no_net_screen.add_flag(lv.obj.FLAG.HIDDEN) #隐藏 @@ -1184,6 +1191,7 @@ class AIScreen(Screen):#AI_GUI pass def think_bt_cb(self,e):#正在思考确定按钮回调 取消播放 + EventMesh.publish("system_sleep_rest")#防止黑屏 self.Close() AI_no_net_screen.add_flag(lv.obj.FLAG.HIDDEN) #隐藏 AI_listen_screen.add_flag(lv.obj.FLAG.HIDDEN) @@ -1368,6 +1376,7 @@ class AIScreen(Screen):#AI_GUI #print("page_change3:str:{}".format(text_str_list[self.page_num])) def listen_end_btcb(self,e):#说话完成确定按钮回调 + EventMesh.publish("system_sleep_rest")#防止黑屏 if self.AI_listen_end == 1:#说话完成 已有录音文字返回 self.AI_listen_end = 0 self.refresh_count = 0 @@ -1521,6 +1530,7 @@ class AIScreen(Screen):#AI_GUI self.ai_talk_end() def img_cb(self,e): #无网络 无数据按钮回调 + EventMesh.publish("system_sleep_rest")#防止黑屏 self.refresh_texttimer.stop() AI_no_net_screen.add_flag(lv.obj.FLAG.HIDDEN) #隐藏 AI_listen_screen.add_flag(lv.obj.FLAG.HIDDEN) @@ -1575,10 +1585,13 @@ class AIScreen(Screen):#AI_GUI #按下录音 def talking_cb(self,e): + EventMesh.publish("system_sleep_rest")#防止黑屏 self.press_state = 0 self.refresh_count = 0 self.refresh_texttimer.stop() signal = EventMesh.publish("screen_get_sig") + # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1: + # EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) if signal == -1 or EventMesh.publish("get_sim_Status") != 1:#网络不正常 AI_listen_screen.add_flag(lv.obj.FLAG.HIDDEN) AI_think_screen.add_flag(lv.obj.FLAG.HIDDEN) #先隐藏 @@ -1810,7 +1823,6 @@ class AIScreen(Screen):#AI_GUI usys.print_exception(e) print("websocket_connect_chat error!!!\r\n") self.connect_timerout_popup(2) - return # 线程接收数据 if self.AI_client_chat_recv_id != 0: try: @@ -1901,7 +1913,6 @@ class AIScreen(Screen):#AI_GUI usys.print_exception(e) print("websocket_connect_tts ERROR:{}\r\n".format(e)) self.connect_timerout_popup(2) - return print("websocket_connect_tts:self.AI_client_tts {}\r\n".format(self.AI_client_tts)) # 线程接收数据 if self.AI_client_tts_recv_id != 0: @@ -2098,7 +2109,6 @@ class AIScreen(Screen):#AI_GUI self.websocket_deconnect_asr()#先断一次,预防出错 except Exception as e: usys.print_exception(e) - try: if EventMesh.DEV_RES_MANAGE_AUTHEN_PLATFORM == 1: #加了设备资源管理鉴权平台的功能 token = EventMesh.publish("get_dev_token") @@ -2117,7 +2127,6 @@ class AIScreen(Screen):#AI_GUI usys.print_exception(e) print("websocket_connect_asr error!!!\r\n") self.connect_timerout_popup(2) - return # 线程接收数据 if self.AI_client_asr_recv_id != 0: try: @@ -2209,34 +2218,45 @@ class AIScreen(Screen):#AI_GUI #bytes_data = bytes(data[1]) #data[0].send(data[1]) if data[0] == self.AI_client_chat_num: + if self.AI_client_chat_isconnect == 0: try: self.websocket_connect_chat() + if self.AI_client_chat != None: + tmp = self.AI_client_chat.send(data[1]) + print("chat send_data:{} tmp:{}".format(len(data[1]),tmp)) except Exception as e: #网络连接异常 usys.print_exception(e) - if self.AI_client_chat != None: - tmp = self.AI_client_chat.send(data[1]) - print("chat send_data:{} tmp:{}".format(len(data[1]),tmp)) + print("chat websocket_connect_chat\r\n") + self.connect_timerout_popup(2) + if data[0] == self.AI_client_asr_num: if isinstance(data[1], str): print("ASR:AI_client_asr_isconnect:{},data:{}",self.AI_client_asr_isconnect,data[1]) if self.AI_client_asr_isconnect == 0: try: self.websocket_connect_asr() + print("asr send_data:{}".format(len(data[1]))) + if self.AI_client_asr != None: + self.AI_client_asr.send(data[1]) except Exception as e: #网络连接异常 usys.print_exception(e) - print("asr send_data:{}".format(len(data[1]))) - if self.AI_client_asr != None: - self.AI_client_asr.send(data[1]) + print("asr websocket_connect_asr\r\n") + self.connect_timerout_popup(2) + if data[0] == self.AI_client_tts_num: + if self.AI_client_tts_isconnect == 0: try: self.websocket_connect_tts() + print("tts send_data:{}".format((data[1]))) + if self.AI_client_tts != None: + self.AI_client_tts.send(data[1]) except Exception as e: #网络连接异常 usys.print_exception(e) - print("tts send_data:{}".format((data[1]))) - if self.AI_client_tts != None: - self.AI_client_tts.send(data[1]) + print("asr websocket_connect_tts\r\n") + self.connect_timerout_popup(2) + except Exception as e: print("DeviceInfo_queue_thread:ERROR:{}".format(e)) usys.print_exception(e) @@ -2330,6 +2350,7 @@ class AIScreen(Screen):#AI_GUI def Close(self): try: + #销毁线程 if self.AI_audio_queue_thread_id != 0: try: diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py index 912b3d07..a29bc49f 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py @@ -3,9 +3,9 @@ import usys import versions import ql_fs -model = "D15" -project = "D15" -platform = "D15"#格物平台 不用的话选择空 +model = "D10" +project = "D10" +platform = "D10"#格物平台 不用的话选择空 # project = "D10" # model = "D10" diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile index 4b642527..5c7c78d2 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile @@ -379,6 +379,7 @@ SRC_QSTR += \ source/code128_p.c \ source/modwlan.c\ source/modwlan.c \ + source/modmask.c \ source/machine_one_wire.c diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py index 38d92147..c21cf835 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py @@ -180,6 +180,9 @@ class PROTOCOL: CALLCANCEL_SEND ="CALLCANCEL_SEND" CALLCANCEL_RECV = "CALLCANCEL_RECV" + + ICCID_SEND = "ICCID_SEND" + ICCID_RECV = "ICCID_RECV" class EVENT: diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py index 8c4f1159..e5dd0135 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py @@ -222,6 +222,7 @@ def main_init(): pcr.add_support(protocol.RESET_ProtoCol()) pcr.add_support(protocol.REMIND_CH_SIT_ProtoCol()) pcr.add_support(protocol.SCREEN_SHOWProtoCol()) + pcr.add_support(protocol.ICCID_ProtoCol()) #视频通话 if EventMesh.model == "D15": diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py index 2ab81a55..b9f80019 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py @@ -23,6 +23,7 @@ import usys import request import umqtt import modem +import sim SHA256 = uhashlib.sha256 import SecureData def server_init(server_type = None): @@ -458,7 +459,13 @@ class SockManager(Abstract): url = "http://app.api.thisiot.com/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(imei,pid_data,sonce_data,sign_data) # print("url:{}".format(url)) - response = request.get(url) + response = 0 + response_result = 0 + try: + response = request.get(url) + response_result = 1 + except Exception as e: + print("get jianquan\r\n") data_tmp ={} # d_server_addr = "device.miwitracker.com" # d_server_port = 8505 @@ -466,49 +473,50 @@ class SockManager(Abstract): # d_PID = "3G" # response.content = {'protocolType': '', 'host': 'device.miwitracker.com', 'secretKey': '', 'port': 8505, 'bid': '3G', 'extJsonStr': ''} # response.status_code=200 - print("test-{}".format(response.status_code)) - if response.status_code == 200: - content = response.content - c = next(content) - # "api.xcloudtech.com" - # d_server_port = 9000 - jsload_data = ujson.loads(c) - print("jsload_data-{}".format(jsload_data)) - # jsload_data = {'data':'111','protocolType':'', 'host':'device.miwitracker.com', 'secretKey': 'bZld0ALsZTt15tKEZhOlLPgbsO75BLTP', 'port':8505, 'bid': '3G', 'extJsonStr': ''} - # ujson.loads(c) - - if "success" in jsload_data: - success = jsload_data["success"] - if success == True:#合法设备 - if "data" in jsload_data: - data_tmp = jsload_data["data"]#返回的数据 - print("data_tmp:{}".format(data_tmp)) - code = jsload_data["code"] - if code == 20000:#合法的设备 - protocloType = data_tmp["protocolType"]#协议类型 - host = data_tmp["host"]#服务骑地址 - secretKey = data_tmp["secretKey"]# - pid = data_tmp["bid"]#产品型号 - port = data_tmp["port"]#端口号 - - - - if host != '' and (port != '' and port != -1): - if host != '': - self.server_addr = host - EventMesh.publish("set_ip",str(self.server_addr)) - - if port != '' and port != -1: - self.server_port = port - EventMesh.publish("set_com",self.server_port) - EventMesh.publish("set_new_key", str(secretKey))#获取pid和key - EventMesh.publish("set_new_pid",str(pid))#获取pid和key - # self.reconnect_timer_cb()#重连设备 - print("self.reconnect_flag",self.reconnect_flag) - self.reconnect_flag = 0 - self.reconnect()#重连设备 - self.publish_timer.stop() - EventMesh.publish("set_server_state",1)#获取修改服务器状态 + if response_result == 1: + print("test-{}".format(response.status_code)) + if response.status_code == 200: + content = response.content + c = next(content) + # "api.xcloudtech.com" + # d_server_port = 9000 + jsload_data = ujson.loads(c) + print("jsload_data-{}".format(jsload_data)) + # jsload_data = {'data':'111','protocolType':'', 'host':'device.miwitracker.com', 'secretKey': 'bZld0ALsZTt15tKEZhOlLPgbsO75BLTP', 'port':8505, 'bid': '3G', 'extJsonStr': ''} + # ujson.loads(c) + + if "success" in jsload_data: + success = jsload_data["success"] + if success == True:#合法设备 + if "data" in jsload_data: + data_tmp = jsload_data["data"]#返回的数据 + print("data_tmp:{}".format(data_tmp)) + code = jsload_data["code"] + if code == 20000:#合法的设备 + protocloType = data_tmp["protocolType"]#协议类型 + host = data_tmp["host"]#服务骑地址 + secretKey = data_tmp["secretKey"]# + pid = data_tmp["bid"]#产品型号 + port = data_tmp["port"]#端口号 + + + + if host != '' and (port != '' and port != -1): + if host != '': + self.server_addr = host + EventMesh.publish("set_ip",str(self.server_addr)) + + if port != '' and port != -1: + self.server_port = port + EventMesh.publish("set_com",self.server_port) + EventMesh.publish("set_new_key", str(secretKey))#获取pid和key + EventMesh.publish("set_new_pid",str(pid))#获取pid和key + # self.reconnect_timer_cb()#重连设备 + print("self.reconnect_flag",self.reconnect_flag) + self.reconnect_flag = 0 + self.reconnect()#重连设备 + self.publish_timer.stop() + EventMesh.publish("set_server_state",1)#获取修改服务器状态 else: self.publish_timer.stop() @@ -1077,7 +1085,9 @@ class LK_ProtoCol(ProtoCol): EventMesh.publish(constants.PROTOCOL.PING_SEND) EventMesh.publish(constants.PROTOCOL.KA_SEND) EventMesh.publish(constants.PROTOCOL.TIME_SEND) - + iccid = sim.getIccid() + print("ICCID:{}\r\n".format(iccid)) + EventMesh.publish(constants.PROTOCOL.ICCID_SEND,str(iccid)) EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位 EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.WT_SEND) #开始WT定位 if EventMesh.model == 'D15': @@ -3237,7 +3247,8 @@ class SLEEP_DATA_ProtoCol(ProtoCol):#睡眠时间 TYPE = "SleepReport" def send(self, event, msg): - send_data = EventMesh.publish("get_new_pid")+"*%s*0000b*SleepReport"%(self.imei) + str_len = len("SleepReport,")+len(str(msg)) + send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*SleepReport"%(self.imei,str_len) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg) EventMesh.debug_log("SLEEP_DATA:send:%s"%(data)) @@ -3575,10 +3586,11 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话 def send(self, event, msg): # [XT*334588000000156*0005*WLKEY] - send_data = EventMesh.publish("get_new_pid")+"*%s*0007*CALLING"%(self.imei) + str_len = len("CALLING,")+len(str(msg)) + send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*CALLING"%(self.imei,str_len) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) - # print("CALLING:send data:%s"%(data)) + print("CALLING:send data:%s"%(data)) # print("WLKEY!!!!!!!!!!!!!") # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -3589,7 +3601,7 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话 @param msg: 接收到的下行数据 """ # b'[SZKW*867387060319166*000A*CALLING]' - print("CALLING!!!!!!!!!!!!!",msg) + # print("CALLING!!!!!!!!!!!!!",msg) if EventMesh.model == "D10":#D10没有视频通话 EventMesh.publish(constants.PROTOCOL.CALLING_SEND,1) return @@ -3632,10 +3644,12 @@ class RCALLING_ProtoCol(ProtoCol):#设备拒接接听 def send(self, event, msg): # [XT*334588000000156*0005*WLKEY] - send_data = EventMesh.publish("get_new_pid")+"*%s*0008*RCALLING"%(self.imei) + # print("RCALLING:send msg:%s %d"%(msg,len(msg))) + str_len = len("RCALLING,")+len(str(msg[0]))+1+len(str(msg[1]))+1+len(str(msg[2])) + send_data = EventMesh.publish("get_new_pid")+"*%s*%04x*RCALLING"%(self.imei,str_len) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%s,%s,%d]"%(str(MD5_SIGN),send_data,msg[0],msg[1],msg[2]) - # print("RCALLING:send data:%s"%(data)) + print("RCALLING:send data:%s"%(data)) # print("WLKEY!!!!!!!!!!!!!") # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -3655,7 +3669,8 @@ class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话与app接听视频通 def send(self, event, msg): # [XT*334588000000156*0005*WLKEY] - send_data = EventMesh.publish("get_new_pid")+"*%s*0006*AGTALK"%(self.imei) + str_len = len("AGTALK,")+len(str(msg[0]))+1+len(str(msg[1])) + send_data = EventMesh.publish("get_new_pid")+"*%s*%04x*AGTALK"%(self.imei,str_len) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) print("AGTALK:send data:%s"%(data)) @@ -3701,7 +3716,8 @@ class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 def send(self, event, msg): # [XT*334588000000156*0005*WLKEY] - send_data = EventMesh.publish("get_new_pid")+"*%s*0005*RTALK"%(self.imei) + str_len = len("RTALK,")+len(str(msg[0]))+1+len(str(msg[1])) + send_data = EventMesh.publish("get_new_pid")+"*%s*%04x*RTALK"%(self.imei,str_len) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) # print("AGTALK:send data:%s"%(data)) @@ -3722,8 +3738,33 @@ class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 msg_tmp_d = msg_tmp.split(',') EventMesh.publish("app_rtalk_cb",1) +# 上传ICCID 信息 +# 终端发送[XT*YYYYYYYYYYYYYYY*LEN*ICCID,x] +# x 表示 ICCID 地址 +# 示例[XT*334588000000156*001A*ICCID,XXXXXX0MFSSYYGXXXXXX] +# å¹³ 台 回 复 : [XT*334588000000156*0005*ICCID] +class ICCID_ProtoCol(ProtoCol):#ICCID + """""" + TYPE = "ICCID" + def send(self, event, msg): + # [XT*334588000000156*0005*ICCID] + str_len = len("ICCID,")+len(str(msg)) + send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*ICCID"%(self.imei,str_len) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg) + print("ICCID:send data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + def recv(self, event, msg): + """ + @param event: + @param msg: 接收到的下行数据 + """ + # b'[SZKW*867387060319166*000A*ICCID]' + print("ICCID!!!!!!!!!!!!!") + class ProtoColResolver(object): def __init__(self): @@ -3736,7 +3777,7 @@ class ProtoColResolver(object): def handler(self, data): # 这里接收数据 - EventMesh.debug_log("handler -> {}".format(data)) + # EventMesh.debug_log("handler -> {}".format(data)) # if data.startswith('Init;'): # data = data[5:] # EventMesh.publish(constants.EVENT.SET_KEY, {"value": ujson.loads(data)['KEY']})