(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:
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()
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) #隐藏
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)
#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
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)
#按下录音
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) #先隐藏
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:
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:
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")
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:
#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)
def Close(self):
try:
+
#销毁线程
if self.AI_audio_queue_thread_id != 0:
try:
import request
import umqtt
import modem
+import sim
SHA256 = uhashlib.sha256
import SecureData
def server_init(server_type = None):
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
# 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()
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':
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))
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)
@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
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)
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))
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))
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):
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']})