def server_init(server_type = None):
- #服务器选择1,防走丢,2大锤,3三基同创,4童信
+ #服务器选择1,防走丢,2大锤,3三基同创,4童信 5云米
if server_type == None:
server_type = 1
#print("server_init:server_type:{}".format(server_type))
d_server_port = 8505
d_md5_key = ""
d_PID = "3G"
- elif server_type == 6:
- d_server_addr = "120.26.104.21"
- d_server_port = 9968
- d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
- d_PID = "SZKW"
+
return [d_server_addr,d_server_port,d_md5_key,d_PID]
from queue import Queue
def unicode_to_utf8(src):
def connect(self):
print("connect1{}:{}".format(self.server_addr, self.server_port))
- if EventMesh.publish("get_sim_Status") != 1: #没sim
+ if EventMesh.publish("network_state") == 0: #没注网
return
try:
if(self.sock != None) :
def send(self, topic, msg):
# print("TCP:send data:{}".format(msg))
- if EventMesh.publish("get_sim_Status") != 1: #没sim,则不发送
+ if EventMesh.publish("network_state") == 0: #没注网,则不发送
EventMesh.publish(constants.EVENT.SET_CONNECT, 0)#标记断网
print("dataCall not connect")
return
data = data + r
print("TCP recv: data:len:{}".format(len(data)))
- print("TCP recv: data:{}".format(data))
+ # print("TCP recv: data:{}".format(data))
if data[-1] != 0x5d and len(data)<20*1024: #']':
continue
self.connect_tmp = 1 #有数据,就认为是连接状态
data = b''
except Exception as e:
- #print("TCP:ERROR:recv:")
- #usys.print_exception(e)
+ print("TCP:ERROR:recv:")
+ usys.print_exception(e)
self.run_flag = False
self.reconnect()
MD5_SIGN = self.pack_MD5_head(MD5_head_data)
data = "[%s%s]"%(str(MD5_SIGN),send_data)
- #EventMesh.txt_log("{}".format(data))
+ print("UD:data:{}".format(data))
# wt_data = EventMesh.publish("get_weather_data")
# # #如果没有天气数据,则获取天气数据
# if wt_data != None or wt_data[0] == None :
phonebook_oldtmp = phonebook_tmp
# print("phonebook_oldtmp!!!:{}".format(str(phonebook_oldtmp)))
# print("phonebook!!!:{}".format(str(phonebook)))
- with open("/ext/static/storage_file/phonebook.json","w",encoding="utf-8") as fd:
+ with open("/usr/static/storage_file/phonebook.json","w",encoding="utf-8") as fd:
ujson.dump(phonebook,fd)
print("创建电话簿")
msg_tmp = msg_tmp[1]
alarm_new = EventMesh.publish("read_alarminjson")
- # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
+ print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
- k=0
+
+ k=1
+ count = 0
+
+ for i in range(len(str(msg_tmp))):#寻找有多少个,号
+ if msg_tmp[i] == ',':
+ k+=1
if len(alarm_new) < 5 :
alarm_new = []
for i in range(5):
- alarm_new.append({'hour': 16, 'repeart': 1, 'idx': i, 'enabled': 0, 'days': [], 'minute': 39})
- for j in range(2,5):#0 1是开关机,234是闹钟
+ alarm_new.append({'hour': 8, 'repeart': 10, 'idx': i, 'enabled': 0, 'days': [], 'minute': 39})
+ for j in range(2,2+k):#0 1是开关机,234是闹钟
alarm_day = []
alarm_week = []
alarm_total_data = []
- alarm_total_data = msg_tmp.split(',')[k]
- k+=1
- b = alarm_total_data.find('-')
- if b != -1:
- alarm_data = alarm_total_data.split('-')#-作为分隔符
- alarm_switch = int(alarm_data[1])#开关
- alarm_day_num = int(alarm_data[2])#天
- alarm_time = alarm_data[0]#时间
- 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)
- alarm_new[j] = {"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num}
-
- # print("self.alarm_list: {}".format(alarm_new))
- with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
+ if k == 1:
+ if len(msg_tmp) != 0:
+ alarm_data = msg_tmp.split('-')#-作为分隔符
+ alarm_switch = int(alarm_data[1])#开关
+ alarm_day_num = int(alarm_data[2])#天
+ alarm_time = alarm_data[0]#时间
+ 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)
+ alarm_new[j] = {"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:
+ alarm_total_data = msg_tmp.split(',')[count]
+ count+=1
+ b = alarm_total_data.find('-')
+ if b != -1:
+ alarm_data = alarm_total_data.split('-')#-作为分隔符
+ alarm_switch = int(alarm_data[1])#开关
+ alarm_day_num = int(alarm_data[2])#天
+ alarm_time = alarm_data[0]#时间
+ 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)
+ alarm_new[j] = {"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num}
+
+ print("k",k,alarm_new)
+
+ with open("/usr/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
ujson.dump(alarm_new,fd)
EventMesh.publish("push_update_alarm_show")
@param msg: 接收到的下行数据
"""
# b'[SZKW*867387060319166*000A*MONITOR]'
- read_data = EventMesh.publish("get_storage_config","center_dial")
-
- if read_data != None:
- contact = read_data
- if len(contact) > 0:
- print("MONITOR RECV msg:{} {}".format(contact,type(contact)))
- EventMesh.publish("save_phonename", contact)
- EventMesh.publish("save_phonenum", contact)
- voiceCall.callStart(contact)
+ msg = msg[1:-1]
+ msg_tmp = msg.decode('ascii')
+ msg_tmp = msg_tmp.split('MONITOR')
+ msg_tmp = msg_tmp[1]
+ print("MONITOR_ProtoCol RECV msg:{} msg_:{}".format(msg,len(msg_tmp)))
+ if len(msg_tmp) != 0:
+ data = msg_tmp.split(",")
+ contact = data[1]
+ EventMesh.publish("save_phonename", contact)
+ EventMesh.publish("save_phonenum", contact)
+ EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
+ # voiceCall.callStart(contact)
+ else:
+ read_data = EventMesh.publish("get_storage_config","center_dial")
+
+ if read_data != None:
+ contact = read_data
+ if len(contact) > 0:
+ print("MONITOR RECV msg:{} {}".format(contact,type(contact)))
+ EventMesh.publish("save_phonename", contact)
+ EventMesh.publish("save_phonenum", contact)
+ EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
EventMesh.publish(constants.PROTOCOL.MONITOR_SEND)
#定时开关机
EventMesh.publish("set_low_bat_btn",on_bt)
EventMesh.publish(constants.PROTOCOL.LOWBAT_SEND)
-# 低电提醒
+#
#[XT*334588000000156*0008*LOWBAT,1]
class Time_ProtoCol(ProtoCol):
"""设置系统时间"""
# print("WLKEY!!!!!!!!!!!!!",msg)
EventMesh.publish(constants.PROTOCOL.WLKEY_SEND)
+# [SG*5678901234*0037* SILENCETIMEFS,21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110]
+
+#免打扰
+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)
+ MD5_SIGN = self.pack_MD5_head(send_data)
+ data = "[%s%s]"%(str(MD5_SIGN),send_data)
+ # print("KEYBRD:data:%s"%(data))
+ # print("SILENCETIME2!!!!!!!!!!!!!",msg)
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+ def recv(self, event, msg):
+ """
+ @param event:
+ @param msg: 接收到的下行数据
+ """
+ class_in_buf = {"1": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []},\
+ "0": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+ "3": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+ "2": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}}
+
+ # class_in_buf.append({'start_hour': "16:54", 'week': [], 'idx': 0, 'enabled': 0, 'end_hour': "18:39"})
+ msg = msg[1:-1]
+ msg_tmp = msg.decode('ascii')
+ msg_tmp_d = str(msg_tmp.split('SILENCETIMEFS,')[1])
+
+ count = 1
+ k = 0
+
+ for i in range(len(str(msg_tmp_d))):
+ if msg_tmp_d[i] == ',':
+ count+=1
+
+ for x in range(count):#21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110
+ week = []
+ if x >= 4:
+ break
+ if count > 1:
+
+ msg_data = msg_tmp_d.split(',')[x]
+ print("SILENCETIMEFS count",msg_data)
+ b = msg_data.find('-')
+ if b != -1:
+ data = msg_data.split('-')#-作为分隔符
+ time = data[1].split('@')#@作为分隔符
+ print("data",data,time,data[0],time[0])
+ start_time = data[0]#开始时间
+ end_time = time[0]#结束时间
+ enable = 1
+ week_day = time[1]
+ for i in range(0,7):
+ if week_day[i] != '0':
+ week.append(i)
+ tmp={}
+ tmp["start_time"] = start_time
+ tmp["end_time"] = end_time
+ tmp["week"] = week
+ tmp["enable"] = enable
+ class_in_buf["{}".format(x)] = tmp
+ else:
+ if len(msg_tmp_d) != 0:
+ b = msg_tmp_d.find('-')
+ if b != -1:
+
+ data = msg_tmp_d.split('-')#-作为分隔符
+ time = data[1].split('@')#@作为分隔符
+ print("data",data,time,data[0],time[0])
+ start_time = data[0]#开始时间
+ end_time = time[0]#结束时间
+ enable = 1
+ week_day = time[1]
+ for i in range(0,7):
+ if week_day[i] != '0':
+ week.append(i)
+ tmp={}
+ tmp["start_time"] = start_time
+ tmp["end_time"] = end_time
+ tmp["week"] = week
+ tmp["enable"] = enable
+ class_in_buf["{}".format(x)] = tmp
+
+ with open("/usr/static/storage_file/class_msg.json", 'w+',encoding='utf-8') as fd:
+ ujson.dump(class_in_buf,fd)
+
+
+ EventMesh.publish("set_class_time", class_in_buf)
+ EventMesh.publish(constants.PROTOCOL.SILENCETIMEFS_SEND)
+ EventMesh.publish("get_class_in_time_page")
+
+
#免打扰
class SILENCETIME2_ProtoCol(ProtoCol):
"""免打扰"""
@param event:
@param msg: 接收到的下行数据
"""
- # b'[SZKW*867387060319166*000A*KEYBRD]'
- # print("SILENCETIME2!!!!!!!!!!!!!",msg)
+ class_in_buf = {"1": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []},\
+ "0": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+ "3": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+ "2": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}}
+
+ # class_in_buf.append({'start_hour': "16:54", 'week': [], 'idx': 0, 'enabled': 0, 'end_hour': "18:39"})
+ msg = msg[1:-1]
+ msg_tmp = msg.decode('ascii')
+ msg_tmp_d = str(msg_tmp.split('SILENCETIME2,')[1])
+
+ count = 1
+ k = 0
+
+ for i in range(len(str(msg_tmp_d))):
+ if msg_tmp_d[i] == ',':
+ count+=1
+
+ for x in range(count):#08:00-17:00-1-0111110,08:00-17:00-1-0111110
+ week = []
+ if count > 1:
+ msg_data = msg_tmp_d.split(',')[k]
+ # print("SILENCETIME count",msg_data)
+ k+= 1
+ b = msg_data.find('-')
+ if b != -1:
+ data = msg_data.split('-')#-作为分隔符
+ start_time = data[0]
+ end_time = data[1]
+ enable = int(data[2])
+ week_day = data[3]
+ for i in range(0,7):
+ if week_day[i] != '0':
+ week.append(i)
+ tmp={}
+ tmp["start_time"] = start_time
+ tmp["end_time"] = end_time
+ tmp["week"] = week
+ tmp["enable"] = enable
+ class_in_buf["{}".format(x)] = tmp
+ else:
+ b = msg_tmp_d.find('-')
+ if b != -1:
+ data = msg_tmp_d.split('-')#-作为分隔符
+ start_time = data[0]
+ end_time = data[1]
+ enable = int(data[2])
+ week_day = data[3]
+ for i in range(0,7):
+ if week_day[i] != '0':
+ week.append(i)
+ tmp={}
+ tmp["start_time"] = start_time
+ tmp["end_time"] = end_time
+ tmp["week"] = week
+ tmp["enable"] = enable
+ class_in_buf["{}".format(x)] = tmp
+
+ with open("/usr/static/storage_file/class_msg.json", 'w+',encoding='utf-8') as fd:
+ ujson.dump(class_in_buf,fd)
+
+
+ EventMesh.publish("set_class_time", class_in_buf)
EventMesh.publish(constants.PROTOCOL.SILENCETIME2_SEND)
+ EventMesh.publish("get_class_in_time_page")
#键盘开关
class KEYBRD_ProtoCol(ProtoCol):
def handler(self, data):
# 这里接收数据
- # print("handler -> {}".format(data))
+ print("handler -> {}".format(data))
# if data.startswith('Init;'):
# data = data[5:]
# EventMesh.publish(constants.EVENT.SET_KEY, {"value": ujson.loads(data)['KEY']})
#contact_btn_label_1 = lv.label(contact_btn)
self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_pos(5, 4)
- self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_size(LCD_X-15, 20)
+ self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_size(LCD_X-15, 16)
self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_text(key_tmp[4:])
self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_long_mode(lv.label.LONG.DOT)
self.contact_detail_listt_dict[i]["contact_btn_label_1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
#contact_btn_label_3 = lv.label(contact_btn)
self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_pos(5, 24)
- self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_size(LCD_X-15, 21)
+ self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_size(LCD_X-15, 16)
self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_text(name)
self.contact_detail_listt_dict[i]["contact_btn_label_3"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
sos_screen_label = lv.label(sos_screen)
- sos_screen_label.set_text("是否拨打求助电话?")
+ sos_screen_label.set_text("是否拨打求助电话")
sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
sos_screen_label.set_size(128, 20)
sos_screen_label.set_pos(0,2)
class_mgr_popup_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
self.meta = class_mgr_popup_screen
+ sos_flag = EventMesh.publish("get_sos_flag")
+ if sos_flag == 1:
+ EventMesh.publish("set_sos_flag",0)
+ EventMesh.publish("set_sos_num",0)
+ EventMesh.publish("set_hangup_mode",0)
+
data = RTC().datetime()
hour = data[4]
min = data[5]
def btn1_release(self):
+ state = EventMesh.publish("get_cur_class_time_state")
+ print("state:{}".format(state))
+ if state != None:
+ if state == 0:
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+ return
flag = EventMesh.publish("get_lcd_state")
if flag == 1:
EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
EventMesh.publish(constants.EVENT.SYSTEM_UP)
def btn8_press(self):
+ state = EventMesh.publish("get_cur_class_time_state")
+ print("state:{}".format(state))
+ if state != None:
+ if state == 0:
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+ return
flag = EventMesh.publish("get_lcd_state")
if flag == 1:
EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
self.timer1.start(1000,1,self.timer_cb_onescond)
ret = 0
- ret = ql_fs.path_exists("/ext/static/storage_file")#电话本
+ ret = ql_fs.path_exists("/usr/static/storage_file")#电话本
if ret == True:
- ql_fs.rmdirs("/ext/static/storage_file")
- ql_fs.mkdirs("/ext/static/storage_file")
+ ql_fs.rmdirs("/usr/static/storage_file")
+ ql_fs.mkdirs("/usr/static/storage_file")
if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂
EventMesh.publish(constants.PROTOCOL.DLT_SEND)
def load_screen_cb(self, topic, msg):
EventMesh.publish("publish_message_event_ui",{"func":self.load_screen,"data":msg})
+
+ # "dialing_noplay_popup"
+ # "dial_no_connect_popup"
+ # "on_call"
+ # "dialing"
+ # "incoming_call"
+
def load_screen(self, msg):
print("msg1={} self.UI_high_priority_flag:{}".format(msg,self.UI_high_priority_flag))
+ if self.UI_high_priority_flag == 1:#电话界面屏蔽其他界面
+ return
state = EventMesh.publish("get_cur_class_time_state")
+ print("state:{}".format(state))
if state != None:
if state == 1:
screen_NAME = EventMesh.publish("get_screen_NAME")
if screen_NAME != None:
- if screen_NAME == "class_time" :#在上课禁用界面打断其他操作界面
- print("class_time UI")
- if msg["screen"] == "countdown_end":
- print("countdown_end UI")
- EventMesh.publish("close_count_show_info")
- return
- if self.UI_high_priority_flag == 1:#电话界面屏蔽其他界面
- return
+ if msg["screen"] == "charge_out" or msg["screen"] == "charge_in":
+ pass
+ else:
+ if screen_NAME == "class_time" :#在上课禁用界面打断其他操作界面
+ print("class_time UI")
+ if msg["screen"] == "countdown_end":
+ # print("countdown_end UI")
+ EventMesh.publish("close_count_show_info")
+ return
+ else:
+ if screen_NAME != "dialing_noplay_popup" or screen_NAME != "dial_no_connect_popup" or \
+ screen_NAME != "on_call" or screen_NAME != "dialing" or screen_NAME != "incoming_call" or \
+ screen_NAME != "charge_in" or screen_NAME != "charge_out":
+ EventMesh.publish("load_screen", {"screen": "class_time"})
+
if self.screen :
if self.screen.NAME == msg["screen"]:
return