From: dxy15521469561 <1731678236@qq.com> Date: Wed, 20 Dec 2023 03:18:26 +0000 (+0800) Subject: D10: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=42fd163bc655dd01fb2c51a56b7eb0d50f2bbcfb;p=mirrors%2FASR1603_G5.git D10: 功能优化 --- diff --git a/2.sdk/new_version.bat b/2.sdk/new_version.bat index 39f70108..c4947b90 100644 --- a/2.sdk/new_version.bat +++ b/2.sdk/new_version.bat @@ -1,2 +1,2 @@ -echo Version="%1_V1.0" > project\%1%\sdk\services\microPython\ports\quectel\core\versions.py +echo Version="V1.0" > project\%1%\sdk\services\microPython\ports\quectel\core\versions.py echo Build_Time="%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8%" >> project\%1%\sdk\services\microPython\ports\quectel\core\versions.py \ No newline at end of file diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/EventMesh.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/EventMesh.py index b1df6058..2b472e34 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/EventMesh.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/EventMesh.py @@ -1,6 +1,12 @@ import _thread import usys +import versions +MODEL = "CO6S_" #项目型号 + + +version = "{}{}".format(MODEL,versions.Version) +builTime = "{}".format(versions.Build_Time) class EventStore(object): def __init__(self): diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py index 939e1665..3e7fe7d2 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -865,7 +865,7 @@ version_label3 = lv.label(version_screen) version_label3.set_pos(10, 70) version_label3.set_size(230, 30) version_label3.set_long_mode(lv.label.LONG.WRAP) -version_label3.set_text(versions.Version) +version_label3.set_text(EventMesh.version) version_label3.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) version_label3.add_style(style_font_youyuan_20_gray, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -889,7 +889,7 @@ version_label6 = lv.label(version_screen) version_label6.set_pos(10, 160) version_label6.set_size(230, 60) version_label6.set_long_mode(lv.label.LONG.WRAP) -version_label6.set_text(versions.Build_Time) +version_label6.set_text(EventMesh.builTime) version_label6.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) version_label6.add_style(style_font_youyuan_20_gray, lv.PART.MAIN | lv.STATE.DEFAULT) diff --git a/2.sdk/project/D10/audio.bin b/2.sdk/project/D10/audio.bin index c28c3d9d..e3aa0cfe 100644 Binary files a/2.sdk/project/D10/audio.bin and b/2.sdk/project/D10/audio.bin differ diff --git a/2.sdk/project/D10/audio/R_BLOOD_SUGAR.mp3 b/2.sdk/project/D10/audio/R_BLOOD_SUGAR.mp3 new file mode 100644 index 00000000..cde79339 Binary files /dev/null and b/2.sdk/project/D10/audio/R_BLOOD_SUGAR.mp3 differ diff --git a/2.sdk/project/D10/list.json b/2.sdk/project/D10/list.json index be59b774..0388fc09 100644 --- a/2.sdk/project/D10/list.json +++ b/2.sdk/project/D10/list.json @@ -1 +1 @@ -['audio_find_haixiu', 'R_ALARM_NEW', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_DRINK_ALARM', 'R_FALL_ALARM', 'R_HOME_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', 'R_MEDICINE_ALARM', 'R_NO_SET_SOS_DIAL', 'R_NO_SIM', 'R_POWER_OFF_1', 'R_READ_STEP_0', 'R_READ_STEP_1', 'R_READ_STEP_2', 'R_READ_STEP_3', 'R_READ_STEP_4', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_MIN', 'R_READ_TIME_ZHENG', 'R_RESET_ALARM', 'R_RESET_END_ALARM', 'R_SIM_CONNECT', 'R_SIM_FAILE', 'R_SLEEP_ALARM', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WAKEUP_ALARM', 'R_WECHAT_RECV'] \ No newline at end of file +['audio_find_haixiu', 'R_ALARM_NEW', 'R_BLOOD_SUGAR', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_DRINK_ALARM', 'R_FALL_ALARM', 'R_HOME_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', 'R_MEDICINE_ALARM', 'R_NO_SET_SOS_DIAL', 'R_NO_SIM', 'R_POWER_OFF_1', 'R_READ_STEP_0', 'R_READ_STEP_1', 'R_READ_STEP_2', 'R_READ_STEP_3', 'R_READ_STEP_4', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_MIN', 'R_READ_TIME_ZHENG', 'R_RESET_ALARM', 'R_RESET_END_ALARM', 'R_SIM_CONNECT', 'R_SIM_FAILE', 'R_SLEEP_ALARM', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WAKEUP_ALARM', 'R_WECHAT_RECV'] \ No newline at end of file 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 4efabf3b..d8c05d5d 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 @@ -1,7 +1,14 @@ import _thread import usys +import versions +model = "D10_" +# model = "G10W_DT_YBX_" + +softversion = "{}{}".format(model,versions.Version) +builTime = "{}".format(versions.Build_Time) + class EventStore(object): def __init__(self): self.map = dict() diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py index 5efab458..0a3b2ab2 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py @@ -17,7 +17,8 @@ from machine import RTC from queue import Queue import _thread import usys - +import sms +from Gsensor import SC7A20 # motor_pin = Pin(Pin.GPIO20, Pin.OUT, Pin.PULL_PD, 0) motor_pin = 1 def open_motor(): @@ -26,7 +27,8 @@ def open_motor(): def close_motor(): motor_pin.write(0) -audio_buf = ['audio_find_haixiu', 'R_ALARM_NEW', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_DRINK_ALARM', 'R_FALL_ALARM', 'R_HOME_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', 'R_MEDICINE_ALARM', 'R_NO_SET_SOS_DIAL', 'R_NO_SIM', 'R_POWER_OFF_1', 'R_READ_STEP_0', 'R_READ_STEP_1', 'R_READ_STEP_2', 'R_READ_STEP_3', 'R_READ_STEP_4', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_MIN', 'R_READ_TIME_ZHENG', 'R_RESET_ALARM', 'R_RESET_END_ALARM', 'R_SIM_CONNECT', 'R_SIM_FAILE', 'R_SLEEP_ALARM', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WAKEUP_ALARM', 'R_WECHAT_RECV'] +audio_buf = ['audio_find_haixiu', 'R_ALARM_NEW', 'R_BLOOD_SUGAR', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_DRINK_ALARM', 'R_FALL_ALARM', 'R_HOME_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', 'R_MEDICINE_ALARM', 'R_NO_SET_SOS_DIAL', 'R_NO_SIM', 'R_POWER_OFF_1', 'R_READ_STEP_0', 'R_READ_STEP_1', 'R_READ_STEP_2', 'R_READ_STEP_3', 'R_READ_STEP_4', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_MIN', 'R_READ_TIME_ZHENG', 'R_RESET_ALARM', 'R_RESET_END_ALARM', 'R_SIM_CONNECT', 'R_SIM_FAILE', 'R_SLEEP_ALARM', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WAKEUP_ALARM', 'R_WECHAT_RECV'] + class call: CALL_OUT = 1 CALL_IN = 2 @@ -51,6 +53,10 @@ class intervManager(Abstract): self.find_timer1 = osTimer() self.fall_flag = 0 + self.factory_timer = osTimer() + + self.restart_timer = osTimer() + self.aud = audio.Audio(0) self.aud.set_pa(Pin.GPIO29) self.aud.setVolume(11) @@ -162,6 +168,8 @@ class intervManager(Abstract): EventMesh.subscribe("play_spo2_value", self.play_spo2_value)#播放心率数值 EventMesh.subscribe("play_temp_value", self.play_temp_value)#播放体温数值 + EventMesh.subscribe("play_sugar_value", self.play_sugar_value)#播放血糖数值 + EventMesh.subscribe("set_usb", self.set_usb)# EventMesh.subscribe("get_usb", self.get_usb)# @@ -226,6 +234,11 @@ class intervManager(Abstract): EventMesh.subscribe("reset_end_alarm_event", self.reset_end_alarm_event)#休息结束了 EventMesh.subscribe("get_fall_down_state", self.get_fall_down_state)#跌倒报警标识 + + EventMesh.subscribe("app_factory", self.app_factory)#app恢复出厂 + + EventMesh.subscribe("app_restart", self.app_restart)#远程重启 + def interInfo_queue_thread(self): @@ -843,7 +856,7 @@ class intervManager(Abstract): audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_STEP_4")) EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) else: - step_tmp = str(step) + step_tmp = str(step)#500 bai_value = int(step_tmp[0])#百 shi_value = int(step_tmp[1])#十 ge_value = int(step_tmp[2])#个 @@ -859,10 +872,17 @@ class intervManager(Abstract): audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4")) EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) else: - str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\ - audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\ - audio_buf.index("R_READ_STEP_4")) - EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + if shi_value == 0 and ge_value == 0:#500 600 + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\ + audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + pass + else: + + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\ + audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\ + audio_buf.index("R_READ_STEP_4")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) pass elif step <= 10000:#千 if step == 10000: @@ -1061,36 +1081,35 @@ class intervManager(Abstract): if get_hr_state != 0: EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 - if get_hr_state == 3 or get_hr_state == 1: - EventMesh.publish("stop_led_timer")#设置参数 if get_hr_state == 1: + EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("set_start_measure_time",0)#设置开始测量的时间戳时间 + EventMesh.debug_log("stop debug8") EventMesh.publish(constants.EVENT.STOP_HEART) elif get_spo2_state != 0: EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 - if get_spo2_state == 3 or get_spo2_state == 1: + if get_spo2_state == 1: EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) EventMesh.debug_log("stop debug13") elif get_bp_state != 0: EventMesh.publish("set_bp_state",0)#2代表后台进入测试 - if get_bp_state == 3 or get_bp_state == 1: + if get_bp_state == 1: EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_HEART) EventMesh.debug_log("stop bp debug1") elif get_bg_state != 0: EventMesh.publish("set_bg_state",0)#2代表后台进入测试 - if get_bg_state == 3 or get_bg_state == 1:#手动开灯关闭灯 + if get_bg_state == 1:#手动开灯关闭灯 EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_HEART) EventMesh.debug_log("stop BG debug14") if get_temp_state != 0: EventMesh.publish("set_temp_state",0)#2代表后台进入测试 - if get_temp_state == 1 or get_temp_state == 3: - EventMesh.publish("stop_led_timer")#设置参数 if get_temp_state == 1: + EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("get_start_temp_measure_time",0)# EventMesh.publish(constants.EVENT.STOP_TEMP) EventMesh.debug_log("stop temp debug14") @@ -1137,6 +1156,35 @@ class intervManager(Abstract): def get_usb(self, event, msg): return self.usbState + + + def app_factory(self,event,msg): + if msg != None: + number = str(msg) + sms.sendPduMsg(number, 'fact# send ok', 'UCS2') + ret = 0 + ret = ql_fs.path_exists("/usr/static/storage_file")# + if ret == True: + 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) + + self.factory_timer.start(6*1000,0,self.factory_cb) + pass + def factory_cb(self,*argc): + self.aud.stopPlayStream() + Power.powerRestart() + + def app_restart(self,event,msg):#远程发短信重启 + if msg != None: + number = str(msg) + sms.sendPduMsg(number, 'rest# send ok', 'UCS2') + self.restart_timer.start(3*1000,0,self.app_restart_cb) + pass + def app_restart_cb(self,*argc): + Power.powerRestart() + def open_power_on(self, event, msg): #msg 1 开机 2 关机 3 重启 4恢复出厂设置 5静音关机 EventMesh.publish("close_timer_all")# if msg == 1: @@ -1151,11 +1199,20 @@ class intervManager(Abstract): self.call_state = 0 voiceCall.callEnd() step = EventMesh.publish("get_old_step_value") + # step1 = SC7A20().get_step() + # step1 = EventMesh.publish(constants.EVENT.GET_STEP) + # step2 = EventMesh.publish("get_storage_config","old_step") self.read_data = EventMesh.publish("get_storage_data") + # EventMesh.publish("set_test_data5",[1,step,step1,step2]) if step != 0: EventMesh.publish("set_storage_config",["old_step",step]) date_tmp = utime.localtime() time_tmp = utime.mktime(date_tmp) + # step3 = EventMesh.publish("get_old_step_value") + # step4 = SC7A20().get_step() + # step4 = EventMesh.publish(constants.EVENT.GET_STEP) + # step5 = EventMesh.publish("get_storage_config","old_step") + # EventMesh.publish("set_test_data6",[1,step3,step4,step5]) EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间 EventMesh.publish("set_storage_config",["power_state",0]) self.pwk_timer1.start(3000,0,self.power_off_audio_cb) @@ -1193,9 +1250,19 @@ class intervManager(Abstract): self.call_state = 0 voiceCall.callEnd() step = EventMesh.publish("get_old_step_value") + # step1 = SC7A20().get_step() + # step1 = EventMesh.publish(constants.EVENT.GET_STEP) + # step2 = EventMesh.publish("get_storage_config","old_step") self.read_data = EventMesh.publish("get_storage_data") + # EventMesh.publish("set_test_data7",[1,step,step1,step2]) if step != 0: EventMesh.publish("set_storage_config",["old_step",step]) + + # step3 = EventMesh.publish("get_old_step_value") + # step4 = SC7A20().get_step() + # step4 = EventMesh.publish(constants.EVENT.GET_STEP) + # step5 = EventMesh.publish("get_storage_config","old_step") + # EventMesh.publish("set_test_data8",[1,step3,step4,step5]) date_tmp = utime.localtime() time_tmp = utime.mktime(date_tmp) EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间 @@ -1218,15 +1285,15 @@ class intervManager(Abstract): power_state = EventMesh.publish("get_storage_config","power_state") if power_state == None: power_state = 0 - print("power_state",power_state) + # print("power_state",power_state) if power_state <= 0: self.aud.play(1,1,'U:/static/R_POWER_OFF_1.mp3') # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1")) # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_GREEN,6,3,led_mode.OTHER_MEASURE_MODE])#測量成功 # EventMesh.publish("set_led_time_arg",[1000,200,10,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数 - self.pwk_timer1.start(2000,0,self.clear_power_on_cb) - self.pwk_timer2.start(6000,0,self.power_on_cb) + self.power_on_flag = 0 + self.pwk_timer2.start(5000,0,self.power_on_cb) def get_power_on_state(self, event, msg): return self.power_on_flag @@ -1237,16 +1304,14 @@ class intervManager(Abstract): # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1")) # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])# - - self.pwk_timer1.start(2000,0,self.set_power_off_cb) - self.pwk_timer2.start(7000,0,self.publish_power_down_event_cb) + self.power_off = 1 + self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb) def power_off_no_audio_cb(self, msg): EventMesh.debug_log("power_off_no_audio_cb") EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])# - - self.pwk_timer1.start(2000,0,self.set_power_off_cb) - self.pwk_timer2.start(7000,0,self.publish_power_down_event_cb) + self.power_off = 1 + self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb) def set_power_off_cb(self, msg): self.power_off = 1 @@ -1261,24 +1326,24 @@ class intervManager(Abstract): get_bg_state = EventMesh.publish("get_bg_state") get_bp_state = EventMesh.publish("get_bp_state") if get_hr_state != None and get_spo2_state != None and get_temp_state != None and get_bg_state != None and get_bp_state != None: - if get_hr_state == 1 or get_hr_state == 3: + if get_hr_state != 0: EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 EventMesh.debug_log("sstop hr") EventMesh.publish(constants.EVENT.STOP_HEART) - if get_spo2_state == 1 or get_spo2_state == 3: + if get_spo2_state != 0 : EventMesh.debug_log("stop spo2") EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) - if get_temp_state == 1 or get_temp_state == 3: + if get_temp_state != 0: EventMesh.debug_log("stop temp") EventMesh.publish("set_temp_state",0) EventMesh.publish(constants.EVENT.STOP_TEMP)#手动体温测试 - if get_bg_state == 1 or get_bg_state == 3: + if get_bg_state != 0: EventMesh.publish("set_bg_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 EventMesh.debug_log("sstop bg") EventMesh.publish(constants.EVENT.STOP_HEART) - if get_bp_state == 1 or get_bp_state == 3: + if get_bp_state != 0: EventMesh.publish("set_bp_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 EventMesh.debug_log("sstop bp") EventMesh.publish(constants.EVENT.STOP_HEART) @@ -1468,6 +1533,48 @@ class intervManager(Abstract): EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + def play_sugar_value(self, event, msg): #播放血糖数值 + flag = EventMesh.publish("get_call_state") + if msg != None: + if flag == 0 and self.fall_flag == 0: + EventMesh.publish("close_timer_all")# + if msg != 0: + # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK")) + # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + EventMesh.publish("set_hr_blood_led",2)#测量成功 + # self.timer.start(2*1000,1,self.play_spo2_fun) + self.play_sugar_fun(msg) + else: + str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + EventMesh.publish("set_hr_blood_led",3)#测量异常 + else: + EventMesh.publish("set_hr_blood_led",3)#测量异常 + + def play_sugar_fun(self,argc):#播放血糖测试值 + flag = EventMesh.publish("get_call_state") + + if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断 + EventMesh.publish("close_timer_all")# + data = str(argc) + data_shi = 0 + data_ge = 0 + if data.find(".") != -1: + data_shi = int(data.split(".")[0]) + data_ge = int(data.split(".")[1]) + else: + data_shi = int(data) + data_ge = 0 + + if data_shi != 0 and data_ge != 0: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_BLOOD_SUGAR"),audio_buf.index("R_READ_TIME_{}".format(data_shi)),\ + audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(data_ge))) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + else: + EventMesh.publish("set_hr_blood_led",3)#测量异常 + + + def play_spo2_value(self, event, msg): #播放血样数值 flag = EventMesh.publish("get_call_state") if msg != None: @@ -1500,9 +1607,15 @@ class intervManager(Abstract): audio_buf.index("R_READ_STEP_2")) EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) else: - str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\ - audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10))) - EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + if data % 10 == 0: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\ + audio_buf.index("R_READ_STEP_3")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + pass + else: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\ + audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10))) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) def set_sim_mode(self, event, msg): #mode 1 蓝灯闪烁 可识别卡 但未联网 2 可绑定appsim正常 3 手表不识别卡或者未插卡 @@ -1613,7 +1726,7 @@ class intervManager(Abstract): elif self.old_hour <= 9:#8:09 9:20 9:45 if self.old_min <= 9:#9点09分 if self.old_min <= 0: - str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\ + str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\ ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")) EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) pass @@ -1637,7 +1750,7 @@ class intervManager(Abstract): else:#12:0 - if self.old_min == 0:#12:00 13:00 15:00 20 + if self.old_min == 0:#12:00 13:00 15:00 20 10 11 12 13 14 15 self.play_count+=1 hour_shi = self.old_hour//10 hour_ge = self.old_hour%10 @@ -1685,11 +1798,17 @@ class intervManager(Abstract): else: if self.old_hour < 20:#19:00 if self.old_min <= 9:#19:09 - str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\ - ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\ - ,audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10))\ - ,audio_buf.index("R_READ_TIME_MIN")) - EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + if self.old_min == 0: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\ + ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + pass + else: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\ + ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\ + ,audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10))\ + ,audio_buf.index("R_READ_TIME_MIN")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) else:#19:18 19:40 19:56 if self.old_min % 10 == 0:#十9点2十分 十9点3十分 @@ -1714,10 +1833,16 @@ class intervManager(Abstract): #20:08 20:18 20:20 if hour_ge == 0: if self.old_min <= 9: - str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\ - ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\ - ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN")) - EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + if self.old_min == 0: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\ + ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + pass + else: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\ + ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\ + ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) else: if min_ge == 0:#2十点2十分 @@ -1733,11 +1858,18 @@ class intervManager(Abstract): else:#21:08 21:18 if self.old_min <= 9: - str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\ - ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\ - ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\ - ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN")) - EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + if self.old_min == 0: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\ + ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\ + ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) + pass + else: + str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\ + ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\ + ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\ + ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN")) + EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) else: if min_ge == 0:#2十3点3十分 str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\ @@ -2103,6 +2235,10 @@ class BtnDevice(Abstract): if power_off != None: if power_off == 1: return + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + if open_power != None: + if open_power == 0: + return fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 if fall_down != None: if fall_down != 0: @@ -2226,6 +2362,7 @@ class BtnDevice(Abstract): usys.print_exception(e) if self.pwKey_press_count >= 1: # EventMesh.debug_log("pwKey_timeout_cb:self.pwKey_press_count >= 1") + EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd() @@ -2235,7 +2372,6 @@ class BtnDevice(Abstract): EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) EventMesh.publish("set_hangup_mode",0) - EventMesh.publish("close_hr_sop2")# flag = EventMesh.publish("get_call_state") if flag != 1: @@ -2248,6 +2384,10 @@ class BtnDevice(Abstract): if power_off != None: if power_off == 1: return + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + if open_power != None: + if open_power == 0: + return self.sosKey_status = self.sosKey.read_level() # EventMesh.debug_log('### key22_extint_cb {} self.GPIO22_status:{}'.format(args,self.sosKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿 if self.WeChatKey_status != 0 and self.GPIO26_status != 0: @@ -2355,8 +2495,13 @@ class BtnDevice(Abstract): def wechatKey_extint_cb(self,args): power_off = EventMesh.publish("get_power_off_state")#获取关机标识 if power_off != None: - if power_off == 1: + if power_off != 0: return + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + if open_power != None: + if open_power == 0: + return + self.WeChatKey_status = self.wechatKey.read_level() # EventMesh.debug_log('### wechatKey_extint_cb {} self.WeChatKey_status:{}'.format(args,self.WeChatKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿 if self.sosKey_status != 0 and self.GPIO26_status != 0: 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 5d7ea8d8..ea2e1ae4 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 @@ -137,6 +137,9 @@ class PROTOCOL: SLEEPTIME_SEND = "SLEEPTIME_SEND" SLEEPTIME_RECV = "SLEEPTIME_RECV" + + FACTORY_SEND = "FACTORY_SEND" + FACTORY_RECV = "FACTORY_RECV" class EVENT: diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py index f861048f..9dc73784 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py @@ -288,8 +288,8 @@ class ledEventManager(Abstract):#灯事件 else: self.wechat_btn = 0 # if get_hr_state != 0 or get_spo2_state != 0 or temp_state != 0 or bp_state != 0 or bg_state != 0 :#心率血氧优先级高 - if get_hr_state == 1 or get_hr_state == 3 or get_spo2_state == 1 or get_spo2_state == 3 or temp_state == 1 or temp_state == 3 \ - or bp_state == 1 or bp_state == 3 or bg_state == 1 or bg_state == 3: + if get_hr_state == 1 or get_spo2_state == 1 or temp_state == 1 \ + or bp_state == 1 or bg_state == 1: if self.working_led_mode != led_mode.HEALTH_LED_MODE:#如果不在亮微聊模式需要亮微聊模式 # EventMesh.debug_log("set_hr_blood_led!!!!!!!!!!") str_buf = [1,2,10*70*2,led_mode.FLASH_LIGHT_RED_GREEN,10,5,led_mode.HEALTH_LED_MODE]#測量成功 @@ -301,10 +301,8 @@ class ledEventManager(Abstract):#灯事件 else: # EventMesh.debug_log("set_hr_blood_led stop!!!!!!!!!!") return - if get_hr_state == 0 and get_spo2_state == 0 and temp_state == 0 and bp_state == 0 and bg_state == 0\ - and get_hr_state == 2 and get_spo2_state == 2 and temp_state == 2 and bp_state == 2 and bg_state == 2: + else:# 0 2都认为其他模式灯亮 不是测试健康灯 self.working_led_mode = led_mode.OTHER_MEASURE_MODE - self.open_timer(msg) @@ -323,9 +321,10 @@ class ledEventManager(Abstract):#灯事件 get_hr_state = EventMesh.publish("get_hr_state") get_spo2_state = EventMesh.publish("get_spo2_state") get_temp_state = EventMesh.publish("get_temp_state") - if get_hr_state != None or get_spo2_state != None or get_temp_state != None: - if get_hr_state == 1 or get_spo2_state == 1 or get_temp_state == 1:#手动触发 - if get_hr_state == 3 or get_spo2_state == 3 or get_temp_state == 3: + get_bp_state = EventMesh.publish("get_bp_state") + get_bg_state = EventMesh.publish("get_bg_state") + if get_hr_state != None and get_spo2_state != None and get_temp_state != None and get_bp_state != None and get_bg_state != None: + if get_hr_state == 1 or get_spo2_state == 1 or get_temp_state == 1 or get_bp_state == 1 or get_bg_state == 1: EventMesh.publish("close_hr_sop2") EventMesh.publish("close_led_pin") return @@ -535,8 +534,6 @@ class ledEventManager(Abstract):#灯事件 def close_all_led(self, event, msg): self.close_all_led_do(0) - # EventMesh.debug_log("close_all_led!!2222222!!") - # EventMesh.publish("publish_message_event_ledInfo",{"func":self.close_all_led_do,"data":0}) def close_all_led_do(self,data): open_power = EventMesh.publish("get_power_on_state")#获取开机标识 if open_power != None: @@ -562,8 +559,8 @@ class ledEventManager(Abstract):#灯事件 bg_state = EventMesh.publish("get_bg_state") # EventMesh.debug_log("get_hr_state",get_hr_state,get_spo2_state,wechat_state,self.working_led_mode) if wechat_state != None: #获取微聊状态 - if wechat_state == 1 or get_spo2_state == 1 or get_spo2_state == 3 or get_hr_state == 1 or get_hr_state == 3 or temp_state == 1 or bp_state == 1 \ - or bg_state == 1 or bg_state == 3 or temp_state == 3 or bp_state == 3: + if wechat_state == 1 or get_spo2_state == 1 or get_hr_state == 1 or temp_state == 1 or bp_state == 1 \ + or bg_state == 1 : return if self.timer_state == 1: self.timer.stop() 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 f326bb5f..dd3e5524 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 @@ -77,11 +77,10 @@ def main_init(): # TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,TKS_ProtoCol,FALLDOWN_ProtoCol,\ # ProtoColResolver,SILENCETIME2_ProtoCol,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager import protocol - import mgr as mgr + import mgr EventMesh.debug_log("init7:{}".format(utime.localtime())) - from mgr import ClockManager,deleteSmsManager,testSmsSetIPManager,ConfigStoreManager,sosInfoCallManager,getBootOffManager,getSosFlagManager,CountdownManager, LocationManager, getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\ - AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager + EventMesh.debug_log("init8:{}".format(utime.localtime())) # from appWechat import TK_ProtoCol,MESSAGE_ProtoCol @@ -96,7 +95,7 @@ def main_init(): app = watchApp() app.set_ui(ui) - app.append_manager(getStorageDataManager()) + app.append_manager(mgr.getStorageDataManager()) app.append_manager(mgr.AlarmVolumeLevelManager()) \ .append_manager(mgr.MsgVolumeLevelManager()) \ .append_manager(mgr.PhoneVolumeLevelManager()) \ @@ -116,33 +115,34 @@ def main_init(): # .append_manager(mgr.CountdownManager()) \ - app.append_manager(ConfigStoreManager()) + app.append_manager(mgr.ConfigStoreManager()) app.append_manager(protocol.NetManager()) - app.append_manager(LocationManager()) - app.append_manager(AddrBookManager()) + app.append_manager(mgr.LocationManager()) + app.append_manager(mgr.AddrBookManager()) app.append_manager(mgr.MsgManager()) - app.append_manager(MsgdetailManager()) + app.append_manager(mgr.MsgdetailManager()) app.append_manager(mgr.CallLogManager()) app.append_manager(mgr.getWeatherDataManager()) - app.append_manager(PhoneCallingManager()) - app.append_manager(ClockManager()) + app.append_manager(mgr.PhoneCallingManager()) + app.append_manager(mgr.ClockManager()) + app.append_manager(mgr.sendDevinfoManager()) - app.append_manager(gethistoryDataManager()) - app.append_manager(getHrTimeManager()) - app.append_manager(getBrightnessManager()) + app.append_manager(mgr.gethistoryDataManager()) + app.append_manager(mgr.getHrTimeManager()) + app.append_manager(mgr.getBrightnessManager()) - app.append_manager(getUpLoadDataManager()) - app.append_manager(getVolumSizeManager()) - app.append_manager(getTempTimeManager()) - app.append_manager(getplayAudiodStateManager()) - app.append_manager(getLowBatManager()) - app.append_manager(getBootOffManager()) - app.append_manager(getOldTimeManager()) - app.append_manager(getSosFlagManager()) - app.append_manager(CountdownManager()) - app.append_manager(sosInfoCallManager()) - app.append_manager(testSmsSetIPManager()) - app.append_manager(deleteSmsManager()) + app.append_manager(mgr.getUpLoadDataManager()) + app.append_manager(mgr.getVolumSizeManager()) + app.append_manager(mgr.getTempTimeManager()) + app.append_manager(mgr.getplayAudiodStateManager()) + app.append_manager(mgr.getLowBatManager()) + app.append_manager(mgr.getBootOffManager()) + app.append_manager(mgr.getOldTimeManager()) + app.append_manager(mgr.getSosFlagManager()) + app.append_manager(mgr.CountdownManager()) + app.append_manager(mgr.sosInfoCallManager()) + app.append_manager(mgr.testSmsSetIPManager()) + app.append_manager(mgr.deleteSmsManager()) EventMesh.debug_log("init21:{}".format(utime.localtime())) @@ -195,6 +195,7 @@ def main_init(): pcr.add_support(protocol.REMIND_CH_REST_ProtoCol()) pcr.add_support(protocol.SLEEP_DATA_ProtoCol()) pcr.add_support(protocol.SLEEPTIME_ProtoCol()) + pcr.add_support(protocol.FACTORY_ProtoCol()) sm = protocol.SockManager() sm.add_support_resolver(pcr) diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py index 2145807d..a65f0ae8 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py @@ -42,6 +42,9 @@ import voiceCall from misc import PWM from led import led_mode,open_led_green,close_led_green,open_led_red,close_led_red,close_led_white from queue import Queue + +heartbeat_time = 7*60 #心跳时间 + def get_autoblood_value():#血压值 data = RTC().datetime() hour = int(data[4]) @@ -787,6 +790,12 @@ class DeviceInfoManager(Abstract): self.bg_times = 0 + self.bp_timeSecond = 0 + self.bpauto_state = 0 + + self.spo2_timeSecond = 0 + self.spo2auto_state = 0 + self.vbat_count = 0 self.vbat_buf=[] @@ -1041,6 +1050,8 @@ class DeviceInfoManager(Abstract): self.old_hr_time = 0 self.old_spo2_time = 0 self.BG_state = 0 + self.bpauto_state = 0 + self.spo2auto_state = 0 pass def clear_temp_state(self,event,msg): @@ -1074,7 +1085,7 @@ class DeviceInfoManager(Abstract): # EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位 """7分钟一次心跳""" - if math.fabs(time_tmp - self.KA_time) > 7*60: #7分钟一次心跳 + if math.fabs(time_tmp - self.KA_time) > heartbeat_time: #7分钟一次心跳 self.KA_time = time_tmp EventMesh.publish(constants.PROTOCOL.KA_SEND) @@ -1095,6 +1106,7 @@ class DeviceInfoManager(Abstract): #EventMesh.txt_log("NO status") EventMesh.debug_log("NO status") EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 + EventMesh.publish(constants.EVENT.PUSH_STEP, self.get_step_count()) """电池平均值""" @@ -1128,28 +1140,27 @@ class DeviceInfoManager(Abstract): data = RTC().datetime() - hour = data[4] - min = data[5] + hour = int(data[4]) + min = int(data[5]) + + cur_month = int(data[1]) cur_day = int(data[2]) cur_year = int(data[0]) old_Timesec = EventMesh.publish("get_old_time_data") - next_alarm_time = utime.localtime(int(old_Timesec)) - old_step_state = EventMesh.publish("get_old_step_data") # EventMesh.debug_log("hour:{} {} cur_month:{} {} next_alarm_time:{} old_Timesec:{}".format(hour,min,cur_month,cur_day,next_alarm_time,old_Timesec)) - if old_step_state == None: - old_step_state = 0 # EventMesh.debug_log("old_Timesec",old_Timesec) - if old_Timesec != None and old_step_state != None: - month = next_alarm_time[1] #00:00 - day = next_alarm_time[2] - year = next_alarm_time[0] + if old_Timesec != None: + next_alarm_time = utime.localtime(int(old_Timesec)) + month = int(next_alarm_time[1]) #00:00 18 + day = int(next_alarm_time[2]) + year = int(next_alarm_time[0]) if month != cur_month or day != cur_day or year != cur_year:#å¹´ 月 日只要其中一个都不一样就清零 - step = EventMesh.publish("get_old_step_value") EventMesh.publish("set_old_time_data",time_tmp) self.gsensor.reset_step() + EventMesh.publish("set_old_step_value",0) hr = EventMesh.publish("get_old_hr_data") @@ -1159,35 +1170,29 @@ class DeviceInfoManager(Abstract): spo2 = EventMesh.publish("get_old_spo2_data") if spo2 != 0: EventMesh.publish("set_old_spo2_data", 0) - EventMesh.publish("set_old_step_data",[1,time_tmp]) EventMesh.debug_log("clear step1111") else: - EventMesh.publish("set_old_step_data",[4,time_tmp]) + pass if hour == 23:#清步数23:59 - if min <= 59 and min >= 58:#58 59 - clear_step_state = EventMesh.publish("get_old_step_data") - if clear_step_state == None: - clear_step_state = 0 - if self.clear_step == 0: - self.clear_step = 1 - step = EventMesh.publish("get_old_step_value") - EventMesh.publish("set_old_time_data",time_tmp) - self.gsensor.reset_step() - EventMesh.publish("set_old_step_value",0) - - hr = EventMesh.publish("get_old_hr_data") - if hr != 0: - EventMesh.publish("set_old_hr_data", 0) - - spo2 = EventMesh.publish("get_old_spo2_data") - if spo2 != 0: - EventMesh.publish("set_old_spo2_data", 0) - EventMesh.publish("set_old_step_data",[2,time_tmp]) - EventMesh.debug_log("clear step2222") + if min == 59:#58 59 + # if self.clear_step == 0: + # self.clear_step = 1 + EventMesh.publish("set_old_time_data",time_tmp) + self.gsensor.reset_step() + EventMesh.publish("set_old_step_value",0) + + hr = EventMesh.publish("get_old_hr_data") + if hr != 0: + EventMesh.publish("set_old_hr_data", 0) + + spo2 = EventMesh.publish("get_old_spo2_data") + if spo2 != 0: + EventMesh.publish("set_old_spo2_data", 0) + EventMesh.debug_log("clear step2222") + else: - EventMesh.publish("set_old_step_data",[3,time_tmp]) self.clear_step = 0 else: self.clear_step = 0 @@ -1215,14 +1220,9 @@ class DeviceInfoManager(Abstract): if battery[0] != '1': self.no_smi_count+=10 # EventMesh.debug_log("self.no_smi_count",self.no_smi_count) - if self.no_smi_count >= (15*60): + if self.no_smi_count >= (15*60):#(15*60) self.no_smi_count = 0 - EventMesh.publish("open_power_on", 2)# #未检测到sim卡15分钟后关机 - - if self.no_smi_state < 6: - self.no_smi_state+=1 - if self.no_smi_state >= 6:#开机一分钟后提示未检测到sim卡 - EventMesh.publish("sim_no_cb")#未插卡 + EventMesh.publish("open_power_on",2)# #未检测到sim卡15分钟后关机 else: self.no_smi_count = 0 @@ -1233,7 +1233,7 @@ class DeviceInfoManager(Abstract): sms_data = sms.getSaveLoc() sms_max = sms_data[0][2] if msg_nums >= sms_max-1: - EventMesh.publish("remove_all_sms_cb")# + EventMesh.publish("delete_sms_event")# #佩戴检测 WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据 @@ -1278,12 +1278,6 @@ class DeviceInfoManager(Abstract): self.get_hr_state = 0 if self.get_spo2_state == None: self.get_spo2_state = 0 - - hr_time = {} - hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0 - - bg_time = {} - bg_time = EventMesh.publish("get_bgauto_time") call_state = EventMesh.publish("get_call_state") if call_state == None: @@ -1357,19 +1351,76 @@ class DeviceInfoManager(Abstract): # print("bp get_bp_state ",get_bp_state,self.old_bp_time) + + if get_hr_state != None: + if get_hr_state == 3: + self.old_hr_time+=1 + if self.old_hr_time == 1: + EventMesh.publish("set_hr_state",3)#2代表后台进入测试 + # EventMesh.publish("set_hr_blood_led",1) + EventMesh.publish(constants.EVENT.START_HEART) + print("hr start 3") + elif self.old_hr_time > 6: + self.old_hr_time = 0 + EventMesh.publish("set_hr_state",0)#2代表后台进入测试 + EventMesh.debug_log("stop hr 3 debug3") + EventMesh.publish(constants.EVENT.STOP_HEART) + heart_value = EventMesh.publish(constants.EVENT.GET_HEART) + EventMesh.debug_log("heart_value:{}".format(heart_value)) + if heart_value > 50 and heart_value != None: + # EventMesh.publish("play_hr_value",heart_value) + EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 + else: + # EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_hr_value",0) + #获取心率数据上传数据app + EventMesh.debug_log("STOP_HEART:3") + else: + self.old_hr_time = 0 + else: + self.old_hr_time = 0 + + + if get_spo2_state != None: + if get_spo2_state == 3: + self.old_spo2_time+=1 + if self.old_spo2_time == 1: + EventMesh.publish("set_spo2_state",3)#2代表后台进入测试 + # EventMesh.publish("set_hr_blood_led",1) + EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧 + print("spo2 start 3") + elif self.old_spo2_time > 6: + self.old_spo2_time = 0 + EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 + EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) + spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) + if spo2_value > 85 and spo2_value != None: + # EventMesh.publish("play_spo2_value",spo2_value) + # EventMesh.publish("set_old_spo2_data",spo2_value) + EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) + else: + # EventMesh.publish("play_spo2_value",0) + print("spo2 stop 3") + else: + self.old_spo2_time = 0 + else: + self.old_spo2_time = 0 + + if get_bp_state != None: if get_bp_state == 3: self.old_bp_time+=1 if self.old_bp_time == 1: EventMesh.publish("set_bp_state",3)#2代表后台进入测试 - EventMesh.publish("set_hr_blood_led",1) + # EventMesh.publish("set_hr_blood_led",1) EventMesh.publish(constants.EVENT.START_HEART) print("bp start ") elif self.old_bp_time > 6: self.old_bp_time = 0 EventMesh.publish("set_bp_state",0)#2代表后台进入测试 - EventMesh.publish("stop_led_timer")#设置参数 + # EventMesh.publish("stop_led_timer")#设置参数 blood_data = get_autoblood_value() if blood_data == None: blood_data[0] = 0 @@ -1393,19 +1444,25 @@ class DeviceInfoManager(Abstract): self.old_bg_time+=1 if self.old_bg_time == 1: EventMesh.publish("set_bg_state",3)#2代表后台进入测试 - EventMesh.publish("set_hr_blood_led",1) + # EventMesh.publish("set_hr_blood_led",1) EventMesh.publish(constants.EVENT.START_HEART) print("bg start ") elif self.old_bg_time > 6: self.old_bg_time = 0 EventMesh.publish("set_bg_state",0)#2代表后台进入测试 - EventMesh.publish("stop_led_timer")#设置参数 + EventMesh.publish(constants.EVENT.STOP_HEART) + # EventMesh.publish("stop_led_timer")#设置参数 bg_data = get_blood_sugar_value() if bg_data == None: bg_data = 0 if bg_data != 0: + # EventMesh.publish("play_sugar_value", bg_data)#播放血糖数值 EventMesh.publish(constants.PROTOCOL.BLOODGLUSOCE_SEND,bg_data) - EventMesh.publish(constants.EVENT.STOP_HEART) + else: + # EventMesh.publish("play_sugar_value", 0)#播放血糖数值 + pass + + print("bg stop ") else: self.old_bg_time = 0 @@ -1413,72 +1470,13 @@ class DeviceInfoManager(Abstract): self.old_bg_time = 0 - if get_hr_state != None: - if get_hr_state == 3: - self.old_hr_time+=1 - if self.old_hr_time == 1: - EventMesh.publish("set_hr_state",3)#2代表后台进入测试 - EventMesh.publish("set_hr_blood_led",1) - EventMesh.publish(constants.EVENT.START_HEART) - print("hr start 3") - elif self.old_hr_time > 6: - self.old_hr_time = 0 - EventMesh.publish("set_hr_state",0)#2代表后台进入测试 - EventMesh.debug_log("stop hr 3 debug3") - EventMesh.publish(constants.EVENT.STOP_HEART) - heart_value = EventMesh.publish(constants.EVENT.GET_HEART) - EventMesh.debug_log("heart_value:{}".format(heart_value)) - if heart_value > 50 and heart_value != None: - # EventMesh.publish("play_hr_value",heart_value) - EventMesh.publish("set_history_hr_value",heart_value) - EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 - else: - EventMesh.publish("stop_led_timer")#设置参数 - pass - # EventMesh.publish("play_hr_value",0) - #获取心率数据上传数据app - EventMesh.debug_log("STOP_HEART:3") - else: - self.old_hr_time = 0 - else: - self.old_hr_time = 0 - - - if get_spo2_state != None: - if get_spo2_state == 3: - self.old_spo2_time+=1 - if self.old_spo2_time == 1: - EventMesh.publish("set_spo2_state",3)#2代表后台进入测试 - EventMesh.publish("set_hr_blood_led",1) - EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧 - print("spo2 start 3") - elif self.old_spo2_time > 6: - self.old_spo2_time = 0 - EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 - EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) - spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) - if spo2_value > 85 and spo2_value != None: - # EventMesh.publish("play_spo2_value",0) - EventMesh.publish("set_history_spo2_value",spo2_value) - EventMesh.publish("set_old_spo2_data",spo2_value) - EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) - else: - EventMesh.publish("stop_led_timer")#设置参数 - pass - print("spo2 stop 3") - # EventMesh.publish("play_spo2_value",0) - else: - self.old_spo2_time = 0 - else: - self.old_spo2_time = 0 - if get_temp_state != None: if get_temp_state == 3:#单次测量 self.temp_one_state+=1 if self.temp_one_state == 1: EventMesh.debug_log("AUTO one temp:2") EventMesh.publish("set_temp_state",3) - EventMesh.publish("set_hr_blood_led",1) + # EventMesh.publish("set_hr_blood_led",1) EventMesh.publish(constants.EVENT.START_TEMP) elif self.temp_one_state > 3: self.temp_one_state = 0 @@ -1499,18 +1497,20 @@ class DeviceInfoManager(Abstract): if temp != None: if temp != 0: - EventMesh.publish("set_history_temp_value",temp) + # EventMesh.publish("set_history_temp_value",temp) # EventMesh.publish("play_temp_value",temp)#播放体温数值 EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) else: - EventMesh.publish("set_history_temp_value",0) + # EventMesh.publish("set_history_temp_value",0) + pass # EventMesh.publish("play_temp_value",0)#播放体温数值 - EventMesh.publish("stop_led_timer")#设置参数 + # EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_TEMP) EventMesh.debug_log("AUTO once temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) + # EventMesh.debug_log("get_temp_time:{} self.temp_one_state:{}".format(get_temp_time,self.temp_one_state)) if get_temp_time != None:#定时测量体温 @@ -1564,7 +1564,22 @@ class DeviceInfoManager(Abstract): else: self.temp_state = 0 self.old_temp_time = 0 - + else: + temp_state = EventMesh.publish("get_temp_state") + if temp_state == 2: + EventMesh.publish("set_temp_state",0)#2代表后台进入测试 + # EventMesh.publish("stop_led_timer")#设置参数 + EventMesh.debug_log("temp stop debug3") + EventMesh.publish(constants.EVENT.STOP_TEMP) + self.temp_state = 0 + self.temp_time = 0 + self.old_temp_time = 0 + + + + hr_time = {} + hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0 + if hr_time[0] != None: self.mearsure_btn = int(hr_time[0]) self.mearsure_timer = int(hr_time[1]) @@ -1617,13 +1632,110 @@ class DeviceInfoManager(Abstract): EventMesh.debug_log("33stop debug3") # EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_HEART) - + get_spo2time = EventMesh.publish("get_spo2_time")#血压自动测试 + # print("get_spo2time",get_spo2time) + if get_spo2time != None:#血压时间不为0 + spo2_on = int(get_spo2time[0]) + spo2_time = int(get_spo2time[1]) + if spo2_on != 0 and spo2_time != 0: + get_hr_state = EventMesh.publish("get_hr_state") + get_spo2_state = EventMesh.publish("get_spo2_state") + get_bp_state = EventMesh.publish("get_bp_state") + get_bg_state = EventMesh.publish("get_bg_state") + # print("state bg2",get_hr_state,get_spo2_state,get_bp_state,get_bg_state) + if (get_hr_state == 0 and get_bp_state == 0 and get_bg_state == 0) and (get_spo2_state == 2 or get_spo2_state == 0):#心率血压血氧不在测试就测试血糖自动测量 + if (time_tmp-self.spo2_timeSecond) >= spo2_time:#大于一个周期的时间,保存的时间戳时间 1678 0 1678 30 1678 + self.spo2_timeSecond = time_tmp + self.spo2auto_state = 0 + # print("time_tmp spo2",time_tmp,self.spo2_timeSecond,time_tmp-self.spo2_timeSecond,self.bg_timer,self.bpauto_state) + if (time_tmp - self.spo2_timeSecond) == 0 and self.spo2auto_state == 0: + EventMesh.debug_log("START_spo2:auto") + EventMesh.publish("set_spo2_state",2)#2代表后台进入测试 + EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧 + self.spo2auto_state = 1 + elif (time_tmp - self.spo2_timeSecond) >= 60 and self.spo2auto_state == 1: + EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 + EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) + spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) + if spo2_value > 85 and spo2_value != None: + EventMesh.publish("set_old_spo2_data",spo2_value) + EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) + print("spo2 auto stop ") + self.spo2auto_state = 0 + else: + self.spo2auto_state = 0 + else: + self.spo2_timeSecond = 0 + self.spo2auto_state = 0 + spo2_state = EventMesh.publish("get_spo2_state")#心率 + if spo2_state == 2: + EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 + EventMesh.debug_log("spo2 stop debug3") + # EventMesh.publish("stop_led_timer")#设置参数 + EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) + + + get_bptime = EventMesh.publish("get_bp_time")#血压自动测试 + # print("get_bptime",get_bptime) + if get_bptime != None:#血压时间不为0 + bp_on = int(get_bptime[0]) + bp_time = int(get_bptime[1]) + if bp_on != 0 and bp_time != 0: + get_hr_state = EventMesh.publish("get_hr_state") + get_spo2_state = EventMesh.publish("get_spo2_state") + get_bp_state = EventMesh.publish("get_bp_state") + get_bg_state = EventMesh.publish("get_bg_state") + # print("state bg2",get_hr_state,get_spo2_state,get_bp_state,get_bg_state) + + if (get_hr_state == 0 and get_spo2_state == 0 and get_bg_state == 0) and (get_bp_state == 2 or get_bp_state == 0):#心率血压血氧不在测试就测试血糖自动测量 + if (time_tmp-self.bp_timeSecond) >= bp_time:#大于一个周期的时间,保存的时间戳时间 1678 0 1678 30 1678 + self.bp_timeSecond = time_tmp + self.bpauto_state = 0 + # print("time_tmp bp",time_tmp,self.bp_timeSecond,time_tmp-self.bp_timeSecond,self.bg_timer,self.bpauto_state) + if (time_tmp - self.bp_timeSecond) == 0 and self.bpauto_state == 0: + EventMesh.debug_log("START_bp:auto") + EventMesh.publish("set_bp_state",2)#2代表后台进入测试 + # EventMesh.publish("set_hr_blood_led",1) + EventMesh.publish(constants.EVENT.START_HEART) + self.bpauto_state = 1 + elif (time_tmp - self.bp_timeSecond) >= 60 and self.bpauto_state == 1: + EventMesh.publish("set_bp_state",0)#2代表后台进入测试 + blood_data = get_autoblood_value() + if blood_data == None: + blood_data[0] = 0 + blood_data[1] = 0 + + max_value = blood_data[0] + min_value = blood_data[1] + if max_value != 0 and min_value != 0: + EventMesh.publish("set_old_blood_data",[max_value,min_value]) + + EventMesh.publish(constants.PROTOCOL.BLOOD_SEND,[max_value,min_value]) + EventMesh.publish(constants.EVENT.STOP_HEART) + print("bp auto stop ") + self.bpauto_state = 0 + else: + self.bpauto_state = 0 + else: + self.bp_timeSecond = 0 + self.bpauto_state = 0 + bp_state = EventMesh.publish("get_bp_state")#心率 + if bp_state == 2: + EventMesh.publish("set_bp_state",0)#2代表后台进入测试 + EventMesh.debug_log("bp stop debug3") + # EventMesh.publish("stop_led_timer")#设置参数 + EventMesh.publish(constants.EVENT.STOP_HEART) + + + + bg_time = {} + bg_time = EventMesh.publish("get_bgauto_time") if bg_time[0] != None: - self.bg_btn = int(bg_time[0]) - self.bg_timer = int(bg_time[1]) + bg_btn = int(bg_time[0]) + bg_timer = int(bg_time[1]) # print("state bg2",self.bg_btn,self.bg_timer) - if self.bg_btn >= 1 and self.bg_timer > 0:#开关打开并且时间大于0就可以测试血糖 + if bg_btn >= 1 and bg_timer > 0:#开关打开并且时间大于0就可以测试血糖 get_hr_state = EventMesh.publish("get_hr_state") get_spo2_state = EventMesh.publish("get_spo2_state") get_bp_state = EventMesh.publish("get_bp_state") @@ -1631,10 +1743,10 @@ class DeviceInfoManager(Abstract): # print("state bg2",get_hr_state,get_spo2_state,get_bp_state,get_bg_state) if (get_hr_state == 0 and get_spo2_state == 0 and get_bp_state == 0) and (get_bg_state == 2 or get_bg_state == 0):#心率血压血氧不在测试就测试血糖自动测量 - if (time_tmp-self.bg_times) >= self.bg_timer:#大于一个周期的时间,保存的时间戳时间 1678 0 1678 30 1678 + if (time_tmp-self.bg_times) >= bg_timer:#大于一个周期的时间,保存的时间戳时间 1678 0 1678 30 1678 self.bg_times = time_tmp self.BG_state = 0 - # print("time_tmp bg",time_tmp,self.bg_times,time_tmp-self.bg_times,self.bg_timer,self.BG_state) + # print("time_tmp bg",time_tmp,self.bg_times,time_tmp-self.bg_times,bg_timer,self.BG_state) if (time_tmp - self.bg_times) == 0 and self.BG_state == 0: EventMesh.debug_log("START_bg:1") EventMesh.publish("set_bg_state",2)#2代表后台进入测试 @@ -1683,6 +1795,12 @@ class DeviceInfoManager(Abstract): self.BG_state = 0 self.temp_time = time_tmp + self.bp_timeSecond = time_tmp + self.bpauto_state = 0 + + self.spo2_timeSecond = time_tmp + self.spo2auto_state = 0 + self.temp_state = 0 self.temp_one_state = 0 self.old_temp_time = 0 @@ -1721,27 +1839,27 @@ class DeviceInfoManager(Abstract): if get_hr_state == 2 or get_hr_state == 3: EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 - if get_hr_state == 3: - EventMesh.publish("stop_led_timer")#设置参数 + # if get_hr_state == 3: + # EventMesh.publish("stop_led_timer")#设置参数 EventMesh.debug_log("stop debug8") EventMesh.publish(constants.EVENT.STOP_HEART) elif get_spo2_state == 2 or get_spo2_state == 3: EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 - if get_spo2_state == 3: - EventMesh.publish("stop_led_timer")#设置参数 + # if get_spo2_state == 3: + # EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) EventMesh.debug_log("stop debug13") elif get_bp_state == 2 or get_bp_state == 3: EventMesh.publish("set_bp_state",0)#2代表后台进入测试 - if get_bp_state == 3: - EventMesh.publish("stop_led_timer")#设置参数 + # if get_bp_state == 3: + # EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_HEART) EventMesh.debug_log("stop debug14") elif get_bg_state == 2 or get_bg_state == 3: EventMesh.publish("set_bg_state",0)#2代表后台进入测试 - if get_bg_state == 3: - EventMesh.publish("stop_led_timer")#设置参数 + # if get_bg_state == 3: + # EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_HEART) EventMesh.debug_log("stop debug15") @@ -1772,8 +1890,8 @@ class DeviceInfoManager(Abstract): else: EventMesh.publish("set_history_temp_value",0) # EventMesh.publish("play_temp_value",0)#播放体温数值 - if get_temp_state == 3: - EventMesh.publish("stop_led_timer")#设置参数 + # if get_temp_state == 3: + # EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish(constants.EVENT.STOP_TEMP) @@ -1917,7 +2035,6 @@ class DeviceInfoManager(Abstract): # EventMesh.publish("set_led_time_arg",[1000,400,52,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#開始測量 - self.normal_alarm() #喝水提醒 self.drink_alarm() @@ -1940,8 +2057,6 @@ class DeviceInfoManager(Abstract): #普通闹钟 def normal_alarm(self): - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) data = RTC().datetime() hour = data[4] min = data[5] @@ -2032,8 +2147,6 @@ class DeviceInfoManager(Abstract): #吃药提醒 def medicine_alarm(self): - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) data = RTC().datetime() hour = data[4] min = data[5] @@ -2086,8 +2199,6 @@ class DeviceInfoManager(Abstract): break #该起床了 def wakeup_alarm(self): - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) data = RTC().datetime() hour = data[4] min = data[5] @@ -2154,8 +2265,6 @@ class DeviceInfoManager(Abstract): #该睡觉了 def sleep_alarm(self): - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) data = RTC().datetime() hour = data[4] min = data[5] @@ -2223,14 +2332,8 @@ class DeviceInfoManager(Abstract): j+=1 - - - - #该回家了 def home_alarm(self): - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) data = RTC().datetime() hour = data[4] min = data[5] @@ -2272,8 +2375,6 @@ class DeviceInfoManager(Abstract): #该休息了 def reset_alarm(self): - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) data = RTC().datetime() hour = data[4] min = data[5] @@ -2440,17 +2541,18 @@ class DeviceInfoManager(Abstract): """ 获取步数 """ + # print("11111:{}".format(EventMesh.publish("get_storage_config","clear_state3"))) XYZ = self.gsensor.get_x_y_z() tmp = 0 - + step =[0,0,0,0] tmp = self.gsensor.get_step() # EventMesh.debug_log("x:%d,y:%d,z:%d tmp %d",XYZ[0],XYZ[1],XYZ[2],tmp) - self.step[0]= tmp - self.step[1] = XYZ[0] - self.step[2] = XYZ[1] - self.step[3] = XYZ[2] - - return self.step + step[0]= tmp + step[1] = XYZ[0] + step[2] = XYZ[1] + step[3] = XYZ[2] + # print("1222:{}".format(EventMesh.publish("get_storage_config","clear_state3"))) + return step def get_ic_cid(self, event, msg): """ @@ -3502,6 +3604,7 @@ class gethistoryDataManager(Abstract): ujson.dump(self.read_histroy_hr_data,fd) pass else: + EventMesh.publish("set_storage_config",["old_hr",msg]) pass @@ -3543,6 +3646,7 @@ class gethistoryDataManager(Abstract): def set_old_step_value(self, event, msg): self.oldstep = msg + EventMesh.publish("set_storage_config",["old_step",msg]) def get_old_step_value(self, event, msg): @@ -3573,6 +3677,56 @@ class getOldTimeManager(Abstract): EventMesh.subscribe("get_old_step_data", self.get_old_step_data) EventMesh.subscribe("set_old_step_data", self.set_old_step_data) + EventMesh.subscribe("set_test_data1", self.set_test_data1) + + EventMesh.subscribe("set_test_data2", self.set_test_data2) + + EventMesh.subscribe("set_test_data3", self.set_test_data3) + + EventMesh.subscribe("set_test_data4", self.set_test_data4) + + EventMesh.subscribe("set_test_data5", self.set_test_data5) + + EventMesh.subscribe("set_test_data6", self.set_test_data6) + + EventMesh.subscribe("set_test_data7", self.set_test_data7) + + EventMesh.subscribe("set_test_data8", self.set_test_data8) + + + def set_test_data1(self, event, msg): + EventMesh.publish("set_storage_config",["clear_state1",msg]) + + + def set_test_data2(self, event, msg): + + EventMesh.publish("set_storage_config",["clear_state2",msg]) + + + def set_test_data3(self, event, msg): + EventMesh.publish("set_storage_config",["clear_state3",msg]) + + def set_test_data4(self, event, msg): + EventMesh.publish("set_storage_config",["clear_state4",msg]) + + def set_test_data5(self, event, msg): + EventMesh.publish("set_storage_config",["clear_state5",msg]) + + def set_test_data6(self, event, msg): + EventMesh.publish("set_storage_config",["clear_state6",msg]) + + def set_test_data7(self, event, msg): + EventMesh.publish("set_storage_config",["clear_state7",msg]) + + def set_test_data8(self, event, msg): + EventMesh.publish("set_storage_config",["clear_state8",msg]) + + # f = open("/usr/static/storage_file/config.json",'r',encoding="utf-8") + # print(f.read()) + + def get_old_step_data(self, event, msg): + return [self.time_step,self.step_second] + def get_old_time_data(self, event, msg): return self.time_sec @@ -3718,19 +3872,28 @@ class getTempTimeManager(Abstract): if read_data != None: self.set_time = read_data - self.set_bptime = 0 + self.get_bgstate = 0 self.get_bpstate = 0 - read_data = EventMesh.publish("get_storage_config","bp_time") + self.bptime_on = 0 + self.bptime_time = 0 + read_data=EventMesh.publish("get_storage_config","bpauto_btn") if read_data != None: - self.set_bptime = read_data + self.bptime_on = read_data - self.set_bgtime = 0 - self.get_bgstate = 0 - read_data = EventMesh.publish("get_storage_config","bg_time") + EventMesh.publish("get_storage_config","bpauto_time") + if read_data != None: + self.bptime_time = read_data + + self.spo2time_on = 0 + self.spo2time_time = 0 + read_data = EventMesh.publish("get_storage_config","spo2auto_btn") + if read_data != None: + self.spo2time_on = read_data + read_data = EventMesh.publish("get_storage_config","spo2auto_time") if read_data != None: - self.set_bgtime = read_data + self.spo2time_time = read_data def post_processor_after_instantiation(self): EventMesh.subscribe("set_temp_time", self.set_temp_time) @@ -3745,21 +3908,13 @@ class getTempTimeManager(Abstract): EventMesh.subscribe("set_bp_state", self.set_bp_state) EventMesh.subscribe("get_bp_state", self.get_bp_state) - EventMesh.subscribe("set_bg_time", self.set_bg_time) - EventMesh.subscribe("get_bg_time", self.get_bg_time) EventMesh.subscribe("set_bg_state", self.set_bg_state) EventMesh.subscribe("get_bg_state", self.get_bg_state) - def set_bg_time(self, event, msg): - self.set_bgtime = msg - EventMesh.publish("set_storage_config",["bg_time",self.set_time]) + EventMesh.subscribe("set_spo2_time", self.set_spo2_time) + EventMesh.subscribe("get_spo2_time", self.get_spo2_time) - def get_bg_time(self, event, msg): - if self.set_bgtime: - return self.set_bgtime - else : - return 0 def set_bg_state(self, event, msg): self.get_bgstate = msg @@ -3774,18 +3929,31 @@ class getTempTimeManager(Abstract): else : return 0 + def set_spo2_time(self, event, msg): + self.spo2time_on = msg[0] + self.spo2time_time = msg[1] + EventMesh.publish("set_storage_config",["spo2auto_btn",self.spo2time_on]) + EventMesh.publish("set_storage_config",["spo2auto_time",self.spo2time_time]) + def get_spo2_time(self, event, msg): + + return [self.spo2time_on,self.spo2time_time] + def set_bp_time(self, event, msg): - self.set_bptime = msg - EventMesh.publish("set_storage_config",["bp_time",self.set_time]) + self.bptime_on = msg[0] + self.bptime_time = msg[1] + EventMesh.publish("set_storage_config",["bpauto_btn",self.bptime_on]) + EventMesh.publish("set_storage_config",["bpauto_time",self.bptime_time]) def get_bp_time(self, event, msg): - if self.set_bptime: - return self.set_bptime - else : - return 0 + if self.bptime_on == None: + self.bptime_on = 0 + if self.bptime_time == None: + self.bptime_time = 0 + return [self.bptime_on,self.bptime_time] + def set_bp_state(self, event, msg): self.get_bpstate = msg @@ -3909,8 +4077,8 @@ class getStorageDataManager(Abstract):#获取内存数据 # EventMesh.debug_log("set_storage_key_data2:{}".format(self.config_data[msg[0]])) EventMesh.publish("publish_message_event_ui",{"func":self.set_storage_save,"data":0}) def set_storage_save(self, data): - with open("/usr/static/storage_file/config.json",'w+',encoding="utf-8") as fd: - ujson.dump(self.config_data,fd) + with open("/usr/static/storage_file/config.json",'w+',encoding="utf-8") as fd: + ujson.dump(self.config_data,fd) def get_storage_data(self, event, msg): # EventMesh.debug_log("get_storage_data:{}".format(self.config_data)) return self.config_data @@ -3930,11 +4098,10 @@ class getStorageDataManager(Abstract):#获取内存数据 #定位频率 class getUpLoadDataManager(Abstract):# def __init__(self): - self.upload_time = 1800 + self.upload_time = 2*60*60 read_data = EventMesh.publish("get_storage_config","upload_time") if read_data != None: self.upload_time = read_data - def post_processor_after_instantiation(self): EventMesh.subscribe("set_upload_data", self.set_upload_data) @@ -3944,6 +4111,8 @@ class getUpLoadDataManager(Abstract):# self.upload_time = msg def get_upload_data(self, event, msg): + if self.upload_time == None: + self.upload_time = 2*60*60 return self.upload_time class getplayAudiodStateManager(Abstract):#获取设置播放音频状态 @@ -4107,7 +4276,7 @@ class getBootOffManager(Abstract):#开关机时间 if read_data != None: self.poweroff_time = read_data else: - self.poweroff_time = [{"poweroff_on":1,"start_hour":6,"start_min":0,"end_hour":0,"end_min":0}] + self.poweroff_time = [{"poweroff_on":0,"start_hour":6,"start_min":0,"end_hour":0,"end_min":0}] @@ -4117,6 +4286,7 @@ class getBootOffManager(Abstract):#开关机时间 def set_boot_off_time(self, event, msg): EventMesh.debug_log("set_boot_off_time",msg) + EventMesh.publish("set_storage_config",["poweroff_alarm",msg]) self.poweroff_time = msg EventMesh.publish("set_rtc_alarm") @@ -4186,6 +4356,81 @@ class testSmsSetIPManager(Abstract):# return [self.newip,self.newcom] +# MMI Version:UIX8910_C55_DS_D12G_PRO18_FZD_V1.0_Release +# Build:07-07-2022 16:12:58 +# IMEI:861218001025267 +# IP:api.xcloudtech.com +# PORT:9000 +# UPLOAD:300 +# Battery:3948, 64 +# Udebug: 0 +# ConnectTime: 7 +import protocol + +class sendDevinfoManager(Abstract):#发送设备信息 + def __init__(self): + self.timer = osTimer() + pass + + def post_processor_after_instantiation(self): + EventMesh.subscribe("send_devinfo_event", self.send_devinfo_event)#删除短信 + + def send_devinfo_event(self, event, msg): + number = str(msg) + versions = EventMesh.softversion + Build = EventMesh.builTime + IMEI = EventMesh.publish(constants.EVENT.GET_IMEI) + IP = "" + new_ip = EventMesh.publish("get_storage_config","set_new_ip_addr") + new_com = EventMesh.publish("get_storage_config","set_new_com") + server_data = protocol.server_init() + + if new_ip != None: + if len(new_ip) != 0: + IP = new_ip + else: + IP = server_data[0] + else: + IP = server_data[0] + + PORT = '' + if new_com != None: + if len(new_com) != 0: + PORT = new_com + else: + PORT = server_data[1] + else: + PORT = server_data[1] + + UPLOAD = EventMesh.publish("get_upload_data") + + level = EventMesh.publish("get_curr_battery_level") + if level == None: + level = 4200 + bat = EventMesh.publish("screen_get_battery")[1] + if bat == None: + bat = 100 + Battery = str(level) +',' + str(bat) + + ConnectTime = heartbeat_time//60 + data1 = "Version:{}\nBuild:{}".format(versions,Build) + + data2 = "IMEI:{}\nIP:{}\nPORT:{}".format(IMEI,IP,PORT) + + data3 = "UPLOAD:{}\nBattery:{}\nConnectTime:{}".format(UPLOAD,Battery,ConnectTime) + + send_state1 = -1 + send_state2 = -1 + # print("data",data1,data2,data3) + send_state1 = sms.sendPduMsg(number, data1, 'UCS2') + + if send_state1 == 0: + send_state2 = sms.sendPduMsg(number, data2, 'UCS2') + + if send_state2 == 0: + sms.sendPduMsg(number, data3, 'UCS2') + + class deleteSmsManager(Abstract):#删除信息 def __init__(self): self.timer = osTimer() @@ -4366,55 +4611,55 @@ class ClockManager(Abstract): if end_min_total == current_minute:#结束的时间分钟等于关机时间分钟数则关机 ubs_state = EventMesh.publish("get_usb")#' - + if ubs_state == 2 or ubs_state == 0: - if next_minute >= current_minute:#开机时间大于当前时间 9:00 > = 8:00 - interval_minute = next_minute - current_minute + if next_minute > current_minute:#开机时间大于当前时间 9:00 > = 8:00 + interval_minute = next_minute - current_minute + + EventMesh.debug_log("开机距离下一次响铃的的分钟数:", interval_minute,next_minute) + else:#8:00 9:00 + #7*60*24 7天一个周期 7*60*24 - + interval_minute = next_minute + (24*60-current_minute) + EventMesh.debug_log("开机08888距离下一次响铃的的分钟数:", interval_minute,next_minute) + + #反向获取时间戳 + time = utime.localtime() + EventMesh.debug_log("开机9获取utime的时间戳:", time) + rtc_mktime = utime.mktime(time)-time[5] + EventMesh.debug_log("开机10反向获取utime的mktime:", rtc_mktime) + + #加上下一次响铃需要的时间 + next_alarm_mktime = rtc_mktime + interval_minute*60 #转换成s单位 时间戳 + EventMesh.debug_log("开机11下一次响铃的mktime:", next_alarm_mktime) + + #格式化时间戳,得到下一次闹钟的时间 + next_alarm_time = utime.localtime(next_alarm_mktime) + EventMesh.debug_log("开机12下一次响铃的准确时间:", next_alarm_time) + #将时间转换为rtc的格式 + data_l = [2021, 7, 9, 5, 12, 30, 0, 0] + #给rtc时间赋值 + data_l[0] = next_alarm_time[0] #year + data_l[1] = next_alarm_time[1] #month + data_l[2] = next_alarm_time[2] #day + data_l[4] = next_alarm_time[3] #hour + data_l[5] = next_alarm_time[4] #minute + data_e=tuple(data_l) + EventMesh.debug_log("开机13将该时间转换为RTC元组:", data_e) - EventMesh.debug_log("开机距离下一次响铃的的分钟数:", interval_minute,next_minute) - else:#8:00 9:00 - #7*60*24 7天一个周期 7*60*24 - - interval_minute = next_minute + (24*60-current_minute) - EventMesh.debug_log("开机08888距离下一次响铃的的分钟数:", interval_minute,next_minute) - - #反向获取时间戳 - time = utime.localtime() - EventMesh.debug_log("开机9获取utime的时间戳:", time) - rtc_mktime = utime.mktime(time)-time[5] - EventMesh.debug_log("开机10反向获取utime的mktime:", rtc_mktime) - - #加上下一次响铃需要的时间 - next_alarm_mktime = rtc_mktime + interval_minute*60 #转换成s单位 时间戳 - EventMesh.debug_log("开机11下一次响铃的mktime:", next_alarm_mktime) - - #格式化时间戳,得到下一次闹钟的时间 - next_alarm_time = utime.localtime(next_alarm_mktime) - EventMesh.debug_log("开机12下一次响铃的准确时间:", next_alarm_time) - #将时间转换为rtc的格式 - data_l = [2021, 7, 9, 5, 12, 30, 0, 0] - #给rtc时间赋值 - data_l[0] = next_alarm_time[0] #year - data_l[1] = next_alarm_time[1] #month - data_l[2] = next_alarm_time[2] #day - data_l[4] = next_alarm_time[3] #hour - data_l[5] = next_alarm_time[4] #minute - data_e=tuple(data_l) - EventMesh.debug_log("开机13将该时间转换为RTC元组:", data_e) - - self.rtc.register_callback(self._rtc_callback) + self.rtc.register_callback(self._rtc_callback) - FLAG = self.rtc.set_alarm(data_e) - if FLAG == 0: - EventMesh.debug_log("开机11成功设置rtc的到期时间:", data_e) - else: - EventMesh.debug_log("开机时设置rtc的到期时间失败:", data_e) - self.rtc.enable_alarm(1) - if ubs_state == 2 or ubs_state == 0: + FLAG = self.rtc.set_alarm(data_e) + if FLAG == 0: + EventMesh.debug_log("开机11成功设置rtc的到期时间:", data_e) + else: + EventMesh.debug_log("开机时设置rtc的到期时间失败:", data_e) + self.rtc.enable_alarm(1) + EventMesh.debug_log("结束时设置rtc的到期时间失败:", data_e) EventMesh.publish("open_power_on", 5)#静音关机 return else: - EventMesh.debug_log("充电关机失败:", data_e) + EventMesh.publish("set_rtc_alarm") #self.rtc.datetime([2023, 12, 1, 5, 5, 59, 30, 0]) return @@ -4425,75 +4670,82 @@ class ClockManager(Abstract): msg_data = EventMesh.publish("get_boot_off_time") if msg_data != None: power_offdata = msg_data[0] - start_hour = power_offdata["start_hour"] - start_min = power_offdata["start_min"] - end_hour = power_offdata["end_hour"] - end_min = power_offdata["end_min"] - - next_minute = start_hour*60+start_min #10:11 - - start_total = start_hour*60+start_min #10:11 - end_total = end_hour*60+end_min #10:11 - rtc_now_time = self.rtc.datetime() - current_minute = rtc_now_time[4]*60 + rtc_now_time[5]#当前时间 - - minute_list = [] - minute_list.append(start_total)#23*60= - minute_list.append(end_total) - minute_list.append(current_minute)#[460,480,340] - minute_list = sorted(minute_list) - current_index = minute_list.index(current_minute) - # print("minute_list",minute_list,start_total,end_total,current_index,power_offdata) - - - next_index = current_index + 1 - if next_index >= len(minute_list): - next_minute = minute_list[0] - print("07下一个闹钟的分钟数:", next_minute) - else: - next_minute = minute_list[next_index] - print("07下一个闹钟的分钟数:", next_minute) + start_hour = int(power_offdata["start_hour"]) + start_min = int(power_offdata["start_min"]) + end_hour = int(power_offdata["end_hour"]) + end_min = int(power_offdata["end_min"]) + off_on = int(power_offdata["poweroff_on"]) + if off_on == 1: + next_minute = start_hour*60+start_min #10:11 + + start_total = start_hour*60+start_min #10:11 + end_total = end_hour*60+end_min #10:11 + rtc_now_time = self.rtc.datetime() + current_minute = rtc_now_time[4]*60 + rtc_now_time[5]#当前时间 + + + minute_list = [] + if start_total != current_minute: + minute_list.append(start_total)#23*60= + if end_total != current_minute: + minute_list.append(end_total) + minute_list.append(current_minute)#[927,927,930] + minute_list = sorted(minute_list) + current_index = minute_list.index(current_minute) + print("minute_list",minute_list,start_total,end_total,current_index,power_offdata) + + + next_index = current_index + 1 + if next_index >= len(minute_list): + next_minute = minute_list[0] + print("07下一个闹钟的分钟数:", next_minute) + else: + next_minute = minute_list[next_index] + print("08下一个闹钟的分钟数:", next_minute) - if next_minute >= current_minute: - interval_minute = next_minute - current_minute - print("08距离下一次响铃的的分钟数:", interval_minute) - else: - interval_minute = (24*60 - current_minute) + next_minute - print("08距离下一次响铃的的分钟数:", interval_minute) - - - #反向获取时间戳 - time = utime.localtime() - EventMesh.debug_log("关机09获取utime的时间戳:", time) - time - rtc_mktime = utime.mktime(time)-time[5] - EventMesh.debug_log("关机10反向获取utime的mktime:", rtc_mktime) - - #加上下一次响铃需要的时间 - next_alarm_mktime = rtc_mktime + interval_minute*60 #转换成s单位 时间戳 - EventMesh.debug_log("关机11下一次响铃的mktime:", next_alarm_mktime) - - #格式化时间戳,得到下一次闹钟的时间 - next_alarm_time = utime.localtime(next_alarm_mktime) - EventMesh.debug_log("关机12下一次响铃的准确时间:", next_alarm_time) - #将时间转换为rtc的格式 - data_l = [2021, 7, 9, 5, 12, 30, 0, 0] - #给rtc时间赋值 - data_l[0] = next_alarm_time[0] #year - data_l[1] = next_alarm_time[1] #month - data_l[2] = next_alarm_time[2] #day - data_l[4] = next_alarm_time[3] #hour - data_l[5] = next_alarm_time[4] #minute - data_e=tuple(data_l) - EventMesh.debug_log("关机13将该时间转换为RTC元组:", data_e) - - self.rtc.register_callback(self._rtc_callback) + print("minute_list1",minute_list,current_index,next_minute) + if next_minute > current_minute: + interval_minute = next_minute - current_minute + print("09距离下一次响铃的的分钟数:", interval_minute)#14 31 14 29 14 31 24*60- + else: + interval_minute = (24*60 - current_minute) + next_minute + print("10距离下一次响铃的的分钟数:", interval_minute) + + + #反向获取时间戳 + time = utime.localtime() + EventMesh.debug_log("关机09获取utime的时间戳:", time) + time + rtc_mktime = utime.mktime(time)-time[5] + EventMesh.debug_log("关机10反向获取utime的mktime:", rtc_mktime) + + #加上下一次响铃需要的时间 + next_alarm_mktime = rtc_mktime + interval_minute*60 #转换成s单位 时间戳 + EventMesh.debug_log("关机11下一次响铃的mktime:", next_alarm_mktime) + + #格式化时间戳,得到下一次闹钟的时间 + next_alarm_time = utime.localtime(next_alarm_mktime) + EventMesh.debug_log("关机12下一次响铃的准确时间:", next_alarm_time) + #将时间转换为rtc的格式 + data_l = [2021, 7, 9, 5, 12, 30, 0, 0] + #给rtc时间赋值 + data_l[0] = next_alarm_time[0] #year + data_l[1] = next_alarm_time[1] #month + data_l[2] = next_alarm_time[2] #day + data_l[4] = next_alarm_time[3] #hour + data_l[5] = next_alarm_time[4] #minute + data_e=tuple(data_l) + EventMesh.debug_log("关机13将该时间转换为RTC元组:", data_e) + + self.rtc.register_callback(self._rtc_callback) - FLAG = self.rtc.set_alarm(data_e) - if FLAG == 0: - EventMesh.debug_log("关机11成功设置rtc的到期时间:", data_e) + FLAG = self.rtc.set_alarm(data_e) + if FLAG == 0: + EventMesh.debug_log("关机11成功设置rtc的到期时间:", data_e) + else: + EventMesh.debug_log("关机时设置rtc的到期时间失败:", data_e) + self.rtc.enable_alarm(1) else: - EventMesh.debug_log("关机时设置rtc的到期时间失败:", data_e) - self.rtc.enable_alarm(1) + self.rtc.enable_alarm(0) 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 bdb0178b..4c07fa3a 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,7 +23,7 @@ import usys def server_init(server_type = None): - #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 8:ds未知 dey.hinwatch. com:9968 9:183.62.239.121:31869 + #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 8:ds未知 dey.hinwatch. com:9968 9:183.62.239.121:31869 10:183.62.239.121:33461 if server_type == None: server_type = 1 #EventMesh.debug_log("server_init:server_type:{}".format(server_type)) @@ -73,6 +73,9 @@ def server_init(server_type = None): elif server_type == 9: d_server_addr = "183.62.239.121" d_server_port = 31869 + elif server_type == 10: + d_server_addr = "183.62.239.121" + d_server_port = 33461 return [d_server_addr,d_server_port,d_md5_key,d_PID] from queue import Queue @@ -262,7 +265,7 @@ class SockManager(Abstract): utime.sleep(1) def send(self, topic, msg): - EventMesh.debug_log("TCP:send data:{}".format(msg)) + # EventMesh.debug_log("TCP:send data:{}".format(msg)) if EventMesh.publish("get_sim_Status") != 1: #没sim,则不发送 EventMesh.publish(constants.EVENT.SET_CONNECT, 0)#标记断网 EventMesh.debug_log("dataCall not connect") @@ -552,7 +555,7 @@ class KA_ProtoCol(ProtoCol): self.roll_count = 0 - # EventMesh.debug_log("ka roll_count:",roll_count) + # EventMesh.debug_log("ka roll_count:",self.roll_count) battery_caption = bat_tmp[1] @@ -1094,28 +1097,29 @@ class HRSTART_ProtoCol(ProtoCol): msg_tmp = msg_tmp[1] EventMesh.debug_log("HRSTART_ProtoCol RECV msg:{} msg_:{}".format(msg,msg_tmp)) hrTotal = int(msg_tmp) - if hrTotal == 0:#关闭自动测量 - EventMesh.debug_log("HRSTART_ 1") - EventMesh.publish("set_time_hr_spo2",[0,0]) + if hrTotal == 1:#单次测量 + EventMesh.debug_log("HRSTART_ 2".format(hrTotal)) + get_hr_state = EventMesh.publish("get_hr_state") + get_spo2_state = EventMesh.publish("get_spo2_state") + get_bp_state = EventMesh.publish("get_bp_state") + get_bg_state = EventMesh.publish("get_bg_state") + # if (get_hr_state == 3 ) or (get_spo2_state == 0 and get_hr_state == 0):#只要两个不在测量 单次优先级最低 + if (get_spo2_state == 0 and get_hr_state == 0 and get_bg_state == 0 and get_bp_state == 0): + battery = EventMesh.publish("screen_get_battery") + if battery != None: + if battery[0] != "1": + EventMesh.publish("set_hr_state",3)#3代表单次测量 + pass else: - if hrTotal == 1:#单次测量 - EventMesh.debug_log("HRSTART_ 2".format(hrTotal)) - get_hr_state = EventMesh.publish("get_hr_state") - get_spo2_state = EventMesh.publish("get_spo2_state") - # if (get_hr_state == 3 ) or (get_spo2_state == 0 and get_hr_state == 0):#只要两个不在测量 单次优先级最低 - if (get_spo2_state == 0 and get_hr_state == 0): - battery = EventMesh.publish("screen_get_battery") - if battery != None: - if battery[0] != "1": - EventMesh.publish("set_hr_state",3)#3代表单次测量 - pass - else: - if hrTotal > 0 and hrTotal <= 300: - hrTotal = 300 - elif hrTotal >= 65536: - hrTotal = 65536 - EventMesh.debug_log("HRSTART_ 3".format(hrTotal)) - EventMesh.publish("set_time_hr_spo2",[1,hrTotal]) + if hrTotal > 0 and hrTotal <= 300: + hrTotal = 300 + elif hrTotal >= 65536: + hrTotal = 65536 + EventMesh.debug_log("HRSTART_ 3".format(hrTotal)) + on = 0 + if hrTotal != 0: + on = 1 + EventMesh.publish("set_time_hr_spo2",[on,hrTotal]) EventMesh.publish(constants.PROTOCOL.HRTSTART_SEND) @@ -1196,16 +1200,36 @@ class OXYGEN_One_ProtoCol(ProtoCol):#单次测量 msg_tmp = msg.decode('ascii') msg_tmp = msg_tmp.split(',') msg_tmp = msg_tmp[1] - state = int(msg_tmp) - get_hr_state = EventMesh.publish("get_hr_state") - get_spo2_state = EventMesh.publish("get_spo2_state") - if state == 1: - # if (get_hr_state == 3 ) or (get_spo2_state == 0 and get_hr_state == 0):#只要两个不在测量 单次优先级最低 - if (get_spo2_state == 0 and get_hr_state == 0): + + oxstartTotal = int(msg_tmp) + # oxstartTotal = 300 + print("oxstartTotal:{}".format(oxstartTotal)) + if oxstartTotal == 1:#单次测量 + get_bp_state = EventMesh.publish("get_bp_state") + get_hr_state = EventMesh.publish("get_hr_state") + get_spo2_state = EventMesh.publish("get_spo2_state") + get_bg_state = EventMesh.publish("get_bp_state") + print("get_bp_state:{}".format(get_bp_state)) + if get_bp_state == 0 and get_hr_state == 0 and get_spo2_state == 0 and get_bg_state == 0:#只要两个不在测量 单次优先级最低 battery = EventMesh.publish("screen_get_battery") if battery != None: if battery[0] != "1": EventMesh.publish("set_spo2_state",3)#3代表单次测量 + else: + if oxstartTotal > 0 and oxstartTotal <= 300: + oxstartTotal = 300 + elif oxstartTotal >= 65536: + oxstartTotal = 65536 + + # if oxstartTotal == 0:#关闭自动测量 + # EventMesh.debug_log("bpSTART_ 1") + # EventMesh.publish("set_spo2_time",[0,0]) + # else: + on = 0 + if oxstartTotal != 0: + on = 1 + EventMesh.publish("set_spo2_time",[on,oxstartTotal]) + EventMesh.publish(constants.PROTOCOL.OXSTART_SEND) class TEMP_ProtoCol(ProtoCol): @@ -1315,13 +1339,15 @@ class bldstart_ProtoCol(ProtoCol): msg_tmp = msg_tmp[1] bldstartTotal = int(msg_tmp) + # bldstartTotal = 300 print("bldstartTotal:{}".format(bldstartTotal)) if bldstartTotal == 1:#单次测量 get_bp_state = EventMesh.publish("get_bp_state") get_hr_state = EventMesh.publish("get_hr_state") get_spo2_state = EventMesh.publish("get_spo2_state") + get_bg_state = EventMesh.publish("get_bg_state") print("get_bp_state:{}".format(get_bp_state)) - if get_bp_state == 0 and get_hr_state == 0 and get_spo2_state == 0:#只要两个不在测量 单次优先级最低 + if get_bp_state == 0 and get_hr_state == 0 and get_spo2_state == 0 and get_bg_state == 0:#只要两个不在测量 单次优先级最低 battery = EventMesh.publish("screen_get_battery") if battery != None: if battery[0] != "1": @@ -1331,7 +1357,12 @@ class bldstart_ProtoCol(ProtoCol): bldstartTotal = 300 elif bldstartTotal >= 65536: bldstartTotal = 65536 - EventMesh.publish("set_bp_time", bldstartTotal) + + on = 0 + if bldstartTotal != 0:#关闭自动测量 + on = 1 + print("on:{} bldstartTotal:{} ".format(on,bldstartTotal)) + EventMesh.publish("set_bp_time",[on,bldstartTotal]) EventMesh.publish(constants.PROTOCOL.BLDSTART_SEND) @@ -1421,11 +1452,14 @@ class bgstart_ProtoCol(ProtoCol): elif bgstartTotal >= 65536: bgstartTotal = 65536 - if bgstartTotal == 0:#关闭自动测量 - EventMesh.debug_log("bgSTART_ 1") - EventMesh.publish("set_bgauto_time",[0,0]) - else: - EventMesh.publish("set_bgauto_time",[1,bgstartTotal]) + # if bgstartTotal == 0:#关闭自动测量 + # EventMesh.debug_log("bgSTART_ 1") + # EventMesh.publish("set_bgauto_time",[0,0]) + # else: + on = 0 + if bgstartTotal != 0: + on = 1 + EventMesh.publish("set_bgauto_time",[on,bgstartTotal]) EventMesh.publish(constants.PROTOCOL.BGSTART_SEND) @@ -1648,12 +1682,12 @@ class sosHome_dial_ProtoCol(ProtoCol): # EventMesh.debug_log("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp)) #b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]' + # print("sosnumber msg_tmp",msg_tmp) i = 0 for i in range(len(msg_tmp)-1): # EventMesh.debug_log("sos:send data :{}".format(msg_tmp[i+1])) if len(msg_tmp[i+1]) != 0: EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]]) - # EventMesh.debug_log("read_data:{} msg_tmp:{}".format(read_data,msg_tmp[i+1])) if (len(msg_tmp)-1) == 3: EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]]) @@ -1720,6 +1754,7 @@ class Time_ProtoCol(ProtoCol): timeSecond = int(msg_data[1]) #EventMesh.debug_log("type {} timeSecond {}".format((msg_data[1]),timeSecond)) + # timeSecond = 1703001360 next_alarm_time = utime.localtime(timeSecond) #EventMesh.debug_log("next_alarm_time",next_alarm_time) #EventMesh.debug_log("local time",msg) @@ -2716,6 +2751,42 @@ class SLEEPTIME_ProtoCol(ProtoCol):#睡眠时间 EventMesh.publish(constants.PROTOCOL.SLEEPTIME_SEND) +# 平台发送: +# [XT*YYYYYYYYYYYYYYY*LEN*FACTORY] +# 实例:[XT*334588000000156*0007*FACTORY] +# 终端回复: +# [XT*YYYYYYYYYYYYYYY*LEN*FACTORY] +# 实例:[XT*334588000000156*0007*FACTORY] +# 说明:终端恢复出厂设置,里面设置的号码都将清空 +class FACTORY_ProtoCol(ProtoCol):#睡眠时间 + """ + 实例:[XT*334588000000156*0008*FACTORY] + 终端回复 + [XT*YYYYYYYYYYYYYYY*LEN*WLKEY] + 实例:[XT*334588000000156*0006*FACTORY] + """ + TYPE = "FACTORY" + + def send(self, event, msg): + send_data = self.PID+"*%s*0007*FACTORY"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg) + EventMesh.debug_log("FACTORY:send:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + def recv(self, event, msg): + + EventMesh.debug_log("FACTORY!!!!!!!!!") + # msg = msg[1:-1] + # msg_tmp = msg.decode('ascii') + # msg_data = msg_tmp.split(',') + # EventMesh.debug_log("WLKEY_ProtoCol".format(msg_data[1])) + # EventMesh.publish("set_storage_config",["WLKEY",msg_data[1]]) + + EventMesh.publish(constants.PROTOCOL.FACTORY_SEND) + EventMesh.publish("app_factory",None)#app恢复出厂 + class ProtoColResolver(object): def __init__(self): self.protocol_list = [] diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py index 8c31f04b..349edc4e 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py @@ -41,6 +41,7 @@ def msg_cb(args): tmp = sms.searchTextMsg(index) detail = tmp[1]#内容 # EventMesh.debug_log("msg_cb:detail {}".format,detail) + if detail.find("SETIP:") != -1:#寻找是否有这个字符串 tmp_test = detail.split("SETIP:")[1] if tmp_test.find(":") != -1: @@ -49,8 +50,16 @@ def msg_cb(args): new_com = tmp_test.split(':')[1] # new_md5 = detail.split(':')[3] if len(new_ip) > 0 and len(new_com) > 0: - EventMesh.publish("set_new_ip", [new_ip,new_com,tmp[0]])#设置关机时间 + EventMesh.publish("set_new_ip", [new_ip,new_com,tmp[0]])# # EventMesh.publish("set_new_ip", [new_ip,new_com,new_md5])#设置关机时间 + if detail.find("ts#") != -1: + EventMesh.publish("send_devinfo_event", tmp[0])#删除短信 + pass + if detail.find("fact#") != -1:#恢复出厂设置 + EventMesh.publish("app_factory",tmp[0])#app恢复出厂 + + if detail.find("rest#") != -1:#重启 + EventMesh.publish("app_restart",tmp[0])# if index >= sms_max-1:#删除短信 EventMesh.publish("delete_sms_event")#删除短信 diff --git a/2.sdk/project/D10/usr/static/audio.bin b/2.sdk/project/D10/usr/static/audio.bin index c28c3d9d..e3aa0cfe 100644 Binary files a/2.sdk/project/D10/usr/static/audio.bin and b/2.sdk/project/D10/usr/static/audio.bin differ diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/EventMesh.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/EventMesh.py index b0d2a6ab..3f601bc4 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/EventMesh.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/EventMesh.py @@ -2,6 +2,17 @@ import _thread import usys import uos import utime +import versions + +MODEL = "K01_" #项目型号 + + +version = "{}{}".format(MODEL,versions.Version) +builTime = "{}".format(versions.Build_Time) + + + + class EventStore(object): def __init__(self): self.map = dict() diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py index 9fb22ddd..5b95aeb8 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -818,7 +818,7 @@ version_label3 = lv.label(version_screen) version_label3.set_pos(10, 25) version_label3.set_size(118, 40) version_label3.set_long_mode(lv.label.LONG.WRAP) -version_label3.set_text(versions.Version) +version_label3.set_text(EventMesh.version) version_label3.set_style_text_align(lv.TEXT_ALIGN.LEFT, 10) version_label3.add_style(style_font_youyuan_20_gray, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -842,7 +842,7 @@ version_label6 = lv.label(version_screen) version_label6.set_pos(10, 75) version_label6.set_size(118, 40) version_label6.set_long_mode(lv.label.LONG.WRAP) -version_label6.set_text(versions.Build_Time) +version_label6.set_text(EventMesh.builTime) version_label6.set_style_text_align(lv.TEXT_ALIGN.LEFT, 10) version_label6.add_style(style_font_youyuan_20_gray, lv.PART.MAIN | lv.STATE.DEFAULT) diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/EventMesh.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/EventMesh.py index 84c8fc71..e7745149 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/EventMesh.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/EventMesh.py @@ -1,6 +1,13 @@ import _thread import usys +import versions + +MODEL = "K5_" #项目型号 + + +version = "{}{}".format(MODEL,versions.Version) +builTime = "{}".format(versions.Build_Time) class EventStore(object): def __init__(self): diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py index cd4b2892..bc77f77a 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -786,7 +786,7 @@ version_label3 = lv.label(version_screen) version_label3.set_pos(10, 70) version_label3.set_size(230, 30) version_label3.set_long_mode(lv.label.LONG.WRAP) -version_label3.set_text(versions.Version) +version_label3.set_text(EventMesh.version) version_label3.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) version_label3.add_style(style_font_youyuan_20_gray, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -810,7 +810,7 @@ version_label6 = lv.label(version_screen) version_label6.set_pos(10, 160) version_label6.set_size(230, 60) version_label6.set_long_mode(lv.label.LONG.WRAP) -version_label6.set_text(versions.Build_Time) +version_label6.set_text(EventMesh.builTime) version_label6.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) version_label6.add_style(style_font_youyuan_20_gray, lv.PART.MAIN | lv.STATE.DEFAULT) diff --git a/2.sdk/project/S6/sdk/services/microPython/ports/quectel/core/EventMesh.py b/2.sdk/project/S6/sdk/services/microPython/ports/quectel/core/EventMesh.py index d25a59c6..8964e416 100644 --- a/2.sdk/project/S6/sdk/services/microPython/ports/quectel/core/EventMesh.py +++ b/2.sdk/project/S6/sdk/services/microPython/ports/quectel/core/EventMesh.py @@ -1,6 +1,12 @@ import _thread import usys +import versions +MODEL = "S6_" #项目型号 + + +version = "{}{}".format(MODEL,versions.Version) +builTime = "{}".format(versions.Build_Time) class EventStore(object): def __init__(self):