{
int ret = 0;
char *dtmf = (char *)mp_obj_str_get_str(mp_obj_dtmf);
+ QPY_MODVOICECALL_LOG("dtmf:%s\n",dtmf);
int duration = mp_obj_get_int(mp_obj_duration);
if (duration > 1000 || duration < 100)
from machine import RTC
import ujson
import ql_fs
+from misc import Power
import audio
from ui import style_img,style_screen,style_font_youyuan_20
import ntptime
self.days = 0
self.idx = 0
+ IFEXIST = ql_fs.path_exists("/ext/static/storage_file/alarm_msg.json")
+ self.check_alarm_list=[]
+ if IFEXIST == False:
+ with open("/ext/static/storage_file/alarm_msg.json","w",encoding='utf-8') as fd:
+ ujson.dump( self.check_alarm_list,fd)
+ print("闹钟信息加载完成")
+ else:
+ with open("/ext/static/storage_file/alarm_msg.json","r",encoding='utf-8') as fd:
+ self.check_alarm_list = ujson.load(fd)
+
def post_processor_after_instantiation(self):
EventMesh.subscribe("push_clock_info", self.set)
EventMesh.subscribe("read_alarminjson", self.read_alarminjson)
EventMesh.subscribe("add_alarm", self.add_alarm)
EventMesh.subscribe("remove_alarm", self.remove_alarm)
EventMesh.subscribe("set_rtc_alarm", self.set_rtc_alarm)
+ EventMesh.subscribe("get_alarm_indx", self.get_alarm_indx)
+ EventMesh.subscribe("get_check_alarm_list", self.get_check_alarm_list)
+ EventMesh.subscribe("set_check_alarm_list", self.set_check_alarm_list)
+
+ def set_check_alarm_list(self, event, msg):
+ self.check_alarm_list = msg
+ print("self.check_alarm_list = {}".format(self.check_alarm_list))
+
+ def get_check_alarm_list(self, event, msg):
+ return self.check_alarm_list
def set(self, event, msg):
global alarm_list
else:
with open("/ext/static/storage_file/alarm_msg.json","r",encoding='utf-8') as fd:
alarm_list = ujson.load(fd)
-
+
def add_alarm(self, event, msg):
- global alarm_list
+ global alarm_list
idx = len(alarm_list)
- print("add_here-----idx:",idx)
- alarm_list.append({"idx": idx, "hour": 0, "minute": 0, "days": [], "enabled": False,"repeart":1})
- with open("/ext/static/storage_file/alarm_msg.json", 'w+',encoding='utf-8') as fd:
- ujson.dump(alarm_list,fd)
+ set_index1 = 0
+ set_index2 = 0
+ count = 0
+ for i in range(0,2):
+ get_index = EventMesh.publish("get_boot_off_index")#设置关机时间
+ print("get_index{}".format(get_index))
+ if idx == 0:#
+ if get_index[0] == 0 and i == 0:#记录开关机的index
+ count = i+1
+ set_index1 = i+1
+ elif get_index[0] != 1 and i == 0:
+ count = int(get_index[0])
+ set_index1 = count
+
+ if get_index[1] == 0 and i == 1:
+ count = i+1
+ set_index2 = count
+ elif get_index[1] != 0 and i == 1:
+ count = int(get_index[1])
+ set_index2 = count
+ else:
+ if get_index[0] == 0 and i == 0:
+ count = idx+1
+ set_index1 = idx+1
+ elif get_index[0] != 0 and i == 0:
+ count= int(get_index[0])
+ set_index1 = count
+
+ if get_index[1] == 0 and i == 1:
+ count = idx+2
+ set_index2 = idx+2
+
+ elif get_index[1] != 0 and i == 1:
+ count= int(get_index[1])
+ set_index2 = count
+
+ print("idx {} set_index1:{} set_index2:{} count:{}".format(idx,set_index1,set_index2,count))
+ EventMesh.publish("set_boot_off_index",[set_index1,set_index2])#设置关机时间
+
+#00获取所有闹钟信息:
+# {'minute': 13, 'repeart': 2, 'idx': 0, 'enabled': 1, 'days': [1, 2, 3, 4, 5, 6, 0], 'hour': 11},
+# {'minute': 0, 'repeart': 2, 'idx': 1, 'enabled': 0, 'days': [1, 2, 3, 4, 5, 6, 0], 'hour': 17},
+# {'minute': 0, 'repeart': 1, 'idx': 2, 'enabled': 0, 'days': [], 'hour': 18},
+# {'hour': 8, 'repeart': 10, 'idx': 2, 'enabled': 1, 'days': [0, 1, 2, 3, 4, 5, 6], 'minute': 28},
+# {'hour': 17, 'repeart': 10, 'idx': 3, 'enabled': 1, 'days': [0, 1, 2, 3, 4, 5, 6], 'minute': 11}]
+
+ print("i {}".format(i))
+ off_msg1 = msg[i+1]
+ msg_tmp1 = off_msg1.split(':')
+ start_hour = int(msg_tmp1[0])
+ start_min = int(msg_tmp1[1])
+ enable = int(msg[0])
+ print("add_here-----idx:{} msg:{}",idx,msg)
+ alarm_list.append({"idx": count-1, "hour": start_hour, "minute": start_min, "days": [0,1,2,3,4,5,6], "enabled": enable,"repeart":10})
+ with open("/ext/static/storage_file/alarm_msg.json", 'w+',encoding='utf-8') as fd:
+ ujson.dump(alarm_list,fd)
+ print("alarm_list----- :{}",alarm_list)
+ EventMesh.publish("set_check_alarm_list",alarm_list)
def remove_alarm(self, event, msg):
global alarm_list
with open("/ext/static/storage_file/alarm_msg.json", 'w+',encoding='utf-8') as fd:
ujson.dump(alarm_list,fd)
+ def get_alarm_indx(self,event,msg):
+ return self.idx
+
def _rtc_callback(self,args):
print("---!!!!!!alarm_ring!!!!!!!---,idx:",args)
global alarm_list
idx = self.idx
print("单次闹钟关闭:",idx)
#判断是否是单次闹钟,如果是,则将开关状态设置为关闭
- print("关闭1:",alarm_list [idx]["days"])
+ print("关闭1:",alarm_list[idx]["days"])
if not alarm_list [idx]["days"] :
print("关闭2:",alarm_list [idx]["days"])
alarm_list[idx]["enabled"] = False
ujson.dump(alarm_list,fd)
#设置下一个闹钟
+ msg_tmp = EventMesh.publish("get_boot_off_time")
+
+ off_tmp2 = msg_tmp[2]
+ msg_tmp2 = off_tmp2.split(':')
+ end_min = int(msg_tmp2[0])*60+int(msg_tmp2[1])
+
+ rtc_now_time = self.rtc.datetime()
+ current = rtc_now_time[4]*60+rtc_now_time[5]
EventMesh.publish("set_rtc_alarm")
+ print("end_min:{} current:{} off_tmp2:{}".format(end_min,current,off_tmp2))
+ if end_min == current:#结束的时间分钟等于关机时间分钟数则关机
+
+ EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
+ return
+
+
get_hr_state = EventMesh.publish("get_hr_state")
get_spo2_state = EventMesh.publish("get_spo2_state")
if get_hr_state != None or get_spo2_state != None:
self.alarm_show_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
#print("菜单的孩子个数:",clk_list_screen1.get_child_cnt())
num = 0
+ count = 0
for i ,each in enumerate(self.clock_list):
-
+ if count >= 3:
+ break
+ num = each["idx"]
+ repeart = each["repeart"]
+ if repeart == 10:
+ continue
_btn = lv.btn(self.alarm_show_list)
_btn.set_size(230,75)
- _btn.set_pos(8,79*i)
+ _btn.set_pos(8,79*count)
_btn.add_style(style_cont_alarm, lv.PART.MAIN | lv.STATE.DEFAULT)
_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_alarm(e)),
lv.EVENT.CLICKED, None)
- num = each["idx"]
+
# print("------刷新闹钟列表噢:{} num:{}",each,num)
_btn_label1 = lv.label(_btn)
_btn_label1.set_pos(50, 0)
# _btn_switch.add_state(lv.STATE.CHECKED)
# else:
# _btn_switch.clear_state(lv.STATE.CHECKED)
+ count+=1
+ if count == 0:
+ no_add_alarm_img.clear_flag(lv.obj.FLAG.HIDDEN)
+ no_add_alarm.clear_flag(lv.obj.FLAG.HIDDEN)
+ self.alarm_show_list.add_flag(lv.obj.FLAG.HIDDEN)
else:
no_add_alarm_img.clear_flag(lv.obj.FLAG.HIDDEN)
no_add_alarm.clear_flag(lv.obj.FLAG.HIDDEN)
import mgr as mgr
print("init7:{}".format(utime.localtime()))
- from mgr import ConfigStoreManager, LocationManager, SockManager,getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
+ from mgr import ConfigStoreManager,getBootOffManager, LocationManager, SockManager,getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
NetManager,AddrBookManager,MsgdetailManager,PhoneCallingManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager
print("init8:{}".format(utime.localtime()))
app.append_manager(getTempTimeManager())
app.append_manager(getplayAudiodStateManager())
app.append_manager(getLowBatManager())
+ app.append_manager(getBootOffManager())
print("init21:{}".format(utime.localtime()))
from machine import I2C
from Gsensor import SC7A20
from Hsensor import GH3018
+from machine import RTC
import quecgnss
import wifiScan
import math
if heart_value > 50 and heart_value != None:
EventMesh.publish("set_old_hr_data",heart_value)
EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)
+ print("stop debug1")
EventMesh.publish(constants.EVENT.STOP_HEART)
self.HR_state = 0
elif self.get_spo2_state == 2 and self.HR_state == 2:
if (time_tmp - self.SENSOR_time) >= hr_time:
if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量没有完毕优先测量间隔时间测量的
if self.get_hr_state == 3:
+ print("stop debug2")
EventMesh.publish(constants.EVENT.STOP_HEART)
heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
if heart_value > 50 and heart_value != None:
self.HR_OneTime = 0
elif (time_tmp - self.SENSOR_time) >= 60 and self.HR_state == 1:
EventMesh.publish("set_hr_state",0)#2代表后台进入测试
+ print("stop debug3")
EventMesh.publish(constants.EVENT.STOP_HEART)
heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
print("heart_value:{}".format(heart_value))
elif self.HR_OneTime > 6 and self.HR_Onestate == 1:
# print("self.HR_Onestate...4....:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
if self.Hr_Need_Open == 1:#需要关闭心率测量
+ print("stop debug4")
EventMesh.publish(constants.EVENT.STOP_HEART)
heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
if heart_value > 50 and heart_value != None:
EventMesh.publish("set_old_spo2_data",spo2_value)
elif self.set_hsenor_crt == 1:
EventMesh.publish("set_hr_state",0)#0代表g关闭测试
+ print("stop debug5")
EventMesh.publish(constants.EVENT.STOP_HEART)
heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
if heart_value > 50 and heart_value != None:
elif self.HR_OneTime > 6 and self.HR_Onestate == 1:
print("stop_heart Onec ")
if self.Hr_Need_Open == 1:#需要关闭心率测量
+ print("stop debug6")
EventMesh.publish(constants.EVENT.STOP_HEART)
heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
print("stop_heart heart_value:{}".format(heart_value))
EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
elif self.set_hsenor_crt == 1:
EventMesh.publish("set_hr_state",0)#0代表g关闭测试
+ print("stop debug7")
EventMesh.publish(constants.EVENT.STOP_HEART)
heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
if heart_value > 50 and heart_value != None:
self.HR_Onestate = 0
self.HR_OneTime = 0
else:
- if self.get_hr_state != 0 or self.get_spo2_state != 0:#3单次测量
- if self.get_hr_state != 0:
- EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率
- EventMesh.publish(constants.EVENT.STOP_HEART)
- elif self.get_spo2_state != 0:
- EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
- EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+ if self.get_hr_state != None and self.get_spo2_state != None:
+ if self.get_hr_state != 0 or self.get_spo2_state != 0:#3单次测量
+ if self.get_hr_state != 0:
+ EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率
+ EventMesh.publish(constants.EVENT.STOP_HEART)
+ elif self.get_spo2_state != 0:
+ EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+ EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
if get_temp_time != None:
if get_temp_state != 0:
# n =
# 1683975862
#836+600
-#1440 - 604 + 360 s = 71760
class getBootOffManager(Abstract):#开关机时间
def __init__(self):
self.read_data = {}
- self.off_msg = []
+ self.off_msg = {}
+ self.off_index1 = 0
+ self.off_index2 = 0
+ self.rtc = RTC()
check = ql_fs.path_exists("/ext/static/storage_file/config.json")
if check == True:
b3 = str("off_end") in self.read_data.keys()
if b3 == True:
self.off_end = self.read_data["off_end"]
+ b4 = str("off_index1") in self.read_data.keys()
+ if b4 == True:
+ self.off_index1 = self.read_data["off_index1"]
+ b5 = str("off_index2") in self.read_data.keys()
+ if b5 == True:
+ self.off_index2 = self.read_data["off_index2"]
# print("self.sos_numer1:{} self.read_data:{}".format(self.sos_numer1,self.read_data))
EventMesh.subscribe("set_boot_off_time", self.set_boot_off_time)#设置关机时间
EventMesh.subscribe("get_boot_off_time", self.get_boot_off_time)
- # def _rtc_callback(self,args):
- # msg_tmp = self.off_msg
- # off_tmp1 = msg_tmp[1]
- # msg_tmp1 = off_tmp1.split(':')
- # start_min = msg_tmp1[0]*60+msg_tmp1[1]
+ EventMesh.subscribe("set_boot_off_index", self.set_boot_off_index)#设置关机时间
+ EventMesh.subscribe("get_boot_off_index", self.get_boot_off_index)
+ def set_boot_off_index(self, event, msg):
+ self.off_index1 = msg[0]
+ self.off_index2 = msg[1]
- # off_tmp2 = msg_tmp[2]
- # msg_tmp2 = off_tmp2.split(':')
- # end_min = off_tmp2[0]*60+msg_tmp2[1]
+ print("self.off_index1:{} self.off_index2:{}".format(self.off_index1,self.off_index2))
- # rtc_now_time = self.rtc.datetime()
- # current = rtc_now_time[4]*60+rtc_now_time[5]
- # # if current == start_min:
- # # if current == start_min:
+ def get_boot_off_index(self, event, msg):
+ return [self.off_index1,self.off_index2]
- # # print("---!!!!!!alarm_ring!!!!!!!---,idx:",args)
+ def set_boot_off_time(self, event, msg):
+ self.off_msg = msg
- # def set_boot_off_time(self, event, msg):
-
- # self.off_msg = msg
- # if msg[0] == 0:
- # return
-
- # rtc_now_time = self.rtc.datetime()
-
- # # data = RTC().datetime()
- # # hour = data[4]
- # # min = data[5]
- # #反向获取时间戳
- # def_time = 24*60 #一天的总分钟数
- # time = utime.localtime()
- # print("09获取utime的时间戳:", time)
- # rtc_mktime = utime.mktime(time)
- # print("10反向获取utime的mktime:", rtc_mktime)
-
-
- # current_minute = rtc_now_time[4]*60 + rtc_now_time[5] #当前的分钟数不包含年月日
- # off_msg1 = msg[1]
- # off_msg2 = msg[2]
- # msg_tmp1 = off_msg1.split(':')
- # msg_tmp2 = off_msg2.split(':')
- # start_min = msg_tmp1[0]*60+msg_tmp1[1]
- # end_min = msg_tmp2[0]*60+msg_tmp2[1]
- # #9:00 6:00
- # next_off_mktime = 0 #关机的时间戳
- # next_on_mktime = 0 #开机的时间戳
- # if current_minute > start_min:#如果当前的分钟数 大于开始的关机时间分钟数 则认为是第二天6:00需要开机 23:00需要关机
- # next_off_mktime = rtc_mktime+((def_time - current_minute)+start_min)*60#算到下一个开机时间
- # pass
- # else:
-
- # pass
-
-
- # #格式化时间戳,得到下一次闹钟的时间
- # next_time = utime.localtime(next_off_mktime)
- # print("12下一次开机时间的准确时间:", next_time)
- # #将时间转换为rtc的格式
- # data_l = [2021, 7, 9, 5, 12, 30, 0, 0]
- # #给rtc时间赋值
- # data_l[0] = next_time[0] #year
- # data_l[1] = next_time[1] #month
- # data_l[2] = next_time[2] #day
- # data_l[4] = next_time[3] #hour
- # data_l[5] = next_time[4] #minute
- # #转换为元组
- # data_e=tuple(data_l)
- # print("13将该时间转换为RTC元组:", data_e)
-
- # #设置rtc闹钟时间
- # self.rtc.register_callback(self._rtc_callback)
-
- # FLAG = self.rtc.set_alarm(data_e)
- # if FLAG == 0:
- # print("成功设置rtc的到期时间:", data_e)
- # else:
- # print("设置rtc的到期时间失败:", data_e)
-
- # self.rtc.enable_alarm(1)
-
- # def get_boot_off_time(self, event, msg):
- # return self.off_msg
+ def get_boot_off_time(self, event, msg):
+ return self.off_msg
\ No newline at end of file
msg_tmp = msg.decode('ascii')
msg_tmp = msg_tmp.split('REMIND,')
msg_tmp = msg_tmp[1]
- num = 0
+ alarm_data = EventMesh.publish("get_check_alarm_list")
+ num = len(alarm_data)
+ print("num:%d"%(num))
j=0
for j in range(0,3):
self.alarm_day = []
with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
ujson.dump(self.alarm_list,fd)
num+=1
- if num >= 2:
- num = 2
+ EventMesh.publish("set_check_alarm_list", self.alarm_list)
EventMesh.publish("push_update_alarm_show")
EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
@param msg: 接收到的下行数据
"""
# b'[SZKW*867387060319166*000A*SOS_SEND]'
- read_data = {}
- read_data = EventMesh.publish("get_storage_data")
msg = msg[1:-1]
msg_tmp = msg.decode('ascii')
msg_tmp = msg_tmp.split(',')
on_end = msg_tmp[3]
print("BOOTOFF:send data:{} {} {}".format(on_bt,on_start,on_end))
#b'[SZKW*860132060006970*0015*BOOTOFF,1,06:00,23:59]'
-
- read_data["off_on"] = on_bt
- read_data["off_start"] = on_start
- read_data["off_end"] = on_end
- EventMesh.publish("set_storage_data",read_data)
EventMesh.publish("set_boot_off_time",[on_bt,on_start,on_end])
- with open("/ext/static/storage_file/config.json","w",encoding="utf-8") as fd:
- ujson.dump(read_data,fd)
+ EventMesh.publish("add_alarm", [on_bt,on_start,on_end])
+ EventMesh.publish("set_rtc_alarm")
EventMesh.publish(constants.PROTOCOL.BOOTOFF_SEND)
self.timer.stop()
self.point = 0
EventMesh.publish("set_hr_state",0)#0代表关闭测试
+ print("stop debug9")
EventMesh.publish(constants.EVENT.STOP_HEART)
def Close(self):
get_spo2_state = EventMesh.publish("get_spo2_state")
if get_hr_state == 1 or get_spo2_state == 1:
EventMesh.publish("set_hr_state",0)#0代表关闭测试
+ print("stop debug10")
EventMesh.publish(constants.EVENT.STOP_HEART)
def done_return(self):
self.level = EventMesh.publish("get_brightness_level")
self.time = EventMesh.publish("get_brightness_time")
print("self.time:{}".format(self.time))
+ if self.time == None:
+ self.time = 5
brightness_label_time_text.set_text("{}秒".format(self.time))
self.show_bar()
def add_level(self, e):
import mgr as mgr
print("init7:{}".format(utime.localtime()))
- from mgr import ConfigStoreManager, LocationManager, SockManager,getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
+ from mgr import ConfigStoreManager,getBootOffManager, LocationManager, SockManager,getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
NetManager,AddrBookManager,MsgdetailManager,PhoneCallingManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager
print("init8:{}".format(utime.localtime()))
app.append_manager(getTempTimeManager())
app.append_manager(getplayAudiodStateManager())
app.append_manager(getLowBatManager())
+ app.append_manager(getBootOffManager())
print("init21:{}".format(utime.localtime()))