D10:
authordxy15521469561 <1731678236@qq.com>
Thu, 7 Dec 2023 11:02:38 +0000 (19:02 +0800)
committerdxy15521469561 <1731678236@qq.com>
Thu, 7 Dec 2023 11:02:38 +0000 (19:02 +0800)
优化

2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_health.py
2.sdk/project/D10/audio.bin
2.sdk/project/D10/audio/R_DRINK_ALARM.mp3 [new file with mode: 0644]
2.sdk/project/D10/audio/R_MEDICINE_ALARM.mp3 [new file with mode: 0644]
2.sdk/project/D10/list.json
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/D10/usr/static/audio.bin

index fed87f6..b36730e 100644 (file)
@@ -415,7 +415,7 @@ class TemperatureScreen(Screen):
         global temp_line1,temp_line2,temp_line3,temp_line4,temp_line5,temp_line6,temp_line7
         read_data = {}
         read_data = EventMesh.publish("get_history_temp_value")
-        # print("hr get_history_temp_value",read_data)
+        print("hr get_history_temp_value",read_data)
         if read_data != None:
             if len(read_data) != 0:
                 sort_new = {}
@@ -426,7 +426,6 @@ class TemperatureScreen(Screen):
                         print(int(sort_new[i]["temp"]))
                         print("hr history read_data",read_data)
                         value_float = sort_new[i]["temp"]
-                        value_float = 29
                         value = 0
                         value_dot = 0
                         line_value = 0
index df7bebd..65b6831 100644 (file)
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_DRINK_ALARM.mp3 b/2.sdk/project/D10/audio/R_DRINK_ALARM.mp3
new file mode 100644 (file)
index 0000000..6322645
Binary files /dev/null and b/2.sdk/project/D10/audio/R_DRINK_ALARM.mp3 differ
diff --git a/2.sdk/project/D10/audio/R_MEDICINE_ALARM.mp3 b/2.sdk/project/D10/audio/R_MEDICINE_ALARM.mp3
new file mode 100644 (file)
index 0000000..3606112
Binary files /dev/null and b/2.sdk/project/D10/audio/R_MEDICINE_ALARM.mp3 differ
index 50b4991..a314d60 100644 (file)
@@ -1 +1 @@
-['audio_find_haixiu', 'R_ALARM_NEW', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_FALL_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', '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_SIM_CONNECT', 'R_SIM_FAILE', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WECHAT_RECV']
\ No newline at end of file
+['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_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_SIM_CONNECT', 'R_SIM_FAILE', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WECHAT_RECV']
\ No newline at end of file
index 3dd8d54..3983bbd 100644 (file)
@@ -113,6 +113,12 @@ class PROTOCOL:
 
     BLOODGLUSOCE_SEND = "bloodglucose_SEND"
     BLOODGLUSOCE_RECV = "bloodglucose_RECV"
+
+    REMIND_CH_DRINK_SEND = "REMIND_CH_DRINK_SEND"
+    REMIND_CH_DRINK_RECV = "REMIND_CH_DRINK_RECV"
+
+    REMIND_CH_MEDICINE2_SEND = "REMIND_CH_MEDICINE2_SEND"
+    REMIND_CH_MEDICINE2_RECV = "REMIND_CH_MEDICINE2_RECV"
     
 
 class EVENT:
index cb16816..bafb405 100644 (file)
@@ -186,6 +186,8 @@ def main_init():
     pcr.add_support(protocol.blood_ProtoCol())
     pcr.add_support(protocol.bgstart_ProtoCol())
     pcr.add_support(protocol.bloodglucose_ProtoCol())
+    pcr.add_support(protocol.REMIND_CHDRINK_ProtoCol())
+    pcr.add_support(protocol.REMIND_CHMEDICINE2_ProtoCol())
 
     sm = protocol.SockManager()
     sm.add_support_resolver(pcr)
index 9a3a504..d0577c6 100644 (file)
@@ -108,6 +108,7 @@ def get_blood_sugar_value():#血糖值
 
 
 
+
 class PhoneVolumeLevelManager(Abstract):
     def __init__(self):
         self.level = 0
@@ -780,6 +781,9 @@ class DeviceInfoManager(Abstract):
         self.no_smi_state = 0
 
         self.old_bp_time = 0
+
+        self.alarm_count = 0
+        self.alarm_flag  = 0
         
         self.charge_full_count = 0
         self.GPS_step_t = 0#记录步数
@@ -825,6 +829,8 @@ class DeviceInfoManager(Abstract):
 
         self.pull_time = 0
 
+        self.drink_time = 0
+
 
     def post_processor_after_instantiation(self):
         EventMesh.debug_log("post_processor_after_instantiation:1")
@@ -1798,6 +1804,97 @@ class DeviceInfoManager(Abstract):
                 EventMesh.publish("set_led_time_arg",[1,2,20*11,led_mode.FLASH_LIGHT_RED,20,10,led_mode.OTHER_MEASURE_MODE])#測量成功
                 # 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.drink_alarm()
+        #该吃药了
+        self.medicine_alarm()
+
+
+    #喝水提醒
+    def drink_alarm(self):
+        date_tmp = utime.localtime()
+        time_tmp = utime.mktime(date_tmp)
+       
+        if self.drink_time == 0:
+            self.drink_time = time_tmp
+        
+        on = EventMesh.publish("get_storage_config","drink_on")
+        time = EventMesh.publish("get_storage_config","drink_time")
+        print("drink info2",on,time)
+        if on != None and time != None:
+            if on != 0 and time != 0:
+                if (time_tmp - self.drink_time) >= (time*60*60):#需要转换成小时3600
+                    self.drink_time = time_tmp 
+                    EventMesh.publish("drink_alarm_event")#跌倒报警启动中
+                    #该喝水了
+            else:
+                self.drink_time = 0
+        else:
+            self.drink_time = 0
+
+    #吃药提醒
+    def medicine_alarm(self):
+        date_tmp = utime.localtime()
+        time_tmp = utime.mktime(date_tmp)
+        data = RTC().datetime()
+        hour = data[4]
+        min = data[5]
+
+        week = int(data[3])
+
+        date1 = data[1]
+        date2 = data[2]
+        cur_total_min = int(hour)*60+int(min)
+        medicine = EventMesh.publish("get_storage_config","medicine")
+        print("medicine info2",medicine,cur_total_min)
+        if self.alarm_flag == 1:#表示闹钟响过清除标志
+            self.alarm_count+=1
+            if self.alarm_count > 6:
+                self.alarm_count = 0
+                self.alarm_flag = 0
+        if medicine != None:
+            if len(medicine) != 0 and medicine != []:
+                for i in range(len(medicine)):
+                    alarm_hour = medicine[i]["hour"]
+                    alarm_min = medicine[i]["min"]
+                    alarm_day = medicine[i]["day"]
+                    alarm_enale = medicine[i]["enable"]
+                    alarm_totalmin = int(alarm_hour)*60+int(alarm_min)
+                    if alarm_day == []:
+                        if alarm_enale != 0:
+                            if alarm_totalmin >= cur_total_min and self.alarm_flag == 0:#14:00
+                                self.alarm_count = 0
+                                self.alarm_flag  = 1                                                                                                                                                  
+                                break
+                    else:
+                        if alarm_enale != 0:
+                            if alarm_totalmin >= cur_total_min and self.alarm_flag == 0:#14:00
+                                self.alarm_count = 0
+                                self.alarm_flag  = 1                                                                                                                                                  
+                                break
+
+                        
+                pass
+        # if self.medicine_time == 0:
+        #     self.medicine_time = time_tmp
+        
+        # on = EventMesh.publish("get_storage_config","drink_on")
+        # time = EventMesh.publish("get_storage_config","drink_time")
+        # print("medicine_time info2",on,time)
+        # if on != None and time != None:
+        #     if on != 0 and time != 0:
+        #         if (time_tmp - self.medicine_time) >= (time*60*60):#需要转换成小时3600
+        #             self.medicine_time = time_tmp 
+        #             EventMesh.publish("drink_alarm_event")#跌倒报警启动中
+        #             #该吃药了
+        #     else:
+        #         self.medicine_time = 0
+        # else:
+        #     self.medicine_time = 0
+        
+
+
       
     def get_sim_Status(self, event, msg):
         return sim.getStatus()
index b95abbf..33ea9ab 100644 (file)
@@ -1720,7 +1720,7 @@ class TK_ProtoCol(ProtoCol):
                 
             datalen = len(arm) + 4+len(str(arm_sec))+1
             #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
-            send_data = bytearray("SZKW*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec))
+            send_data = bytearray(self.PID+"*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec))
             send_data.extend(arm)
             MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
@@ -1846,7 +1846,7 @@ class TKS_ProtoCol(ProtoCol):
                 
             datalen = len(arm) + 4+len(str(arm_sec))+1
             #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
-            send_data = bytearray("SZKW*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
+            send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
             send_data.extend(arm)
             MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
@@ -1940,9 +1940,8 @@ class MESSAGE_ProtoCol(ProtoCol):
     
 
     def send(self, event, msg):
-       
         #[XT*334588000000156*0007*MESSAGE]
-        send_data = "SZKW*%s*0007*MESSAGE"%(self.imei)
+        send_data = self.PID+"*%s*0007*MESSAGE"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
@@ -2009,7 +2008,7 @@ class FALLDOWN_ProtoCol(ProtoCol):
     def send(self, event, msg):
        
         #[XT*334588000000156*LEN*FALLDOWN]
-        send_data = "SZKW*%s*0008*FALLDOWN"%(self.imei)
+        send_data = self.PID+"*%s*0008*FALLDOWN"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
@@ -2042,7 +2041,7 @@ class REMOVE_ProtoCol(ProtoCol):
     TYPE = "REMOVE"
     
     def send(self, event, msg):
-        send_data = "SZKW*%s*0006*REMOVE"%(self.imei)
+        send_data = self.PID+"*%s*0006*REMOVE"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
@@ -2072,7 +2071,7 @@ class HELP_ProtoCol(ProtoCol):
     
     def send(self, event, msg):
         #[XT*334588000000156*LEN*FALLDOWN]
-        send_data = "SZKW*%s*0008*HELP,%d"%(self.imei,msg)
+        send_data = self.PID+"*%s*0008*HELP,%d"%(self.imei,msg)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
@@ -2086,6 +2085,158 @@ class HELP_ProtoCol(ProtoCol):
 
         pass   
 
+
+#喝水闹钟提示
+# 喝水闹钟设置指令
+# 平台发送:
+# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_DRINK,时间间隔(小时),开关(0为关,1为开)]
+# 实例:
+# [XT*334588000000156*0026*REMIND_CH_DRINK,4,0]
+# 终端回复:
+# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_DRINK]
+# 实例:[XT*334588000000156*000E*REMIND_CH_DRINK]
+class REMIND_CHDRINK_ProtoCol(ProtoCol):
+    """
+    
+    平台发送:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_DRINK,时间间隔(小时),开关(0为关,1为开)]
+    实例:[XT*334588000000156*0008*REMIND_CH_DRINK,时间间隔(小时),开关(0为关,1为开)]
+    终端回复:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_DRINK]
+    """
+    TYPE = "REMIND_CH_DRINK"
+    
+    def send(self, event, msg):
+        send_data = self.PID+"*%s*000F*REMIND_CH_DRINK"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+        # SZKW*860132060346475*0013*REMIND_CH_DRINK,4-1
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_data = msg_tmp.split(',')
+        data = str(msg_data[1])
+        hour = int(data.split('-')[0])
+        btn_on = int(data.split('-')[1])
+
+        EventMesh.debug_log("recv REMIND_CH_DRINK:{}-{}-{}".format(hour,btn_on,msg))
+        EventMesh.publish("set_storage_config",["drink_on",btn_on])
+        EventMesh.publish("set_storage_config",["drink_time",hour])
+        EventMesh.publish(constants.PROTOCOL.REMIND_CH_DRINK_SEND)  
+
+# 自定义服药闹钟设置指令
+# 平台发送:
+# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_MEDICINE2,时间1-开关,时间2-开关,周几]
+# 实例:
+# [XT*334588000000156*0026*REMIND_CH_MEDICINE2,08:10-0,09:10-0,1000001]
+# 终端回复:
+# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_MEDICINE2]
+# 实例:[XT*334588000000156*000E*REMIND_CH_MEDICINE2]
+# 说明:闹铃格式为:时间-开关(0/1),周几(周六到周日)
+
+#REMIND_CH_MEDICINE2,09:00-1,14:00-0,18:00-0,1111111]'",)
+class REMIND_CHMEDICINE2_ProtoCol(ProtoCol):#吃药提醒
+    """
+    
+    平台发送:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_MEDICINE2,,时间1-开关,时间2-开关,周几]
+    实例:[XT*334588000000156*0008*REMIND_CH_MEDICINE2,,时间1-开关,时间2-开关,周几]
+    终端回复:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_DRINK]
+    """
+    TYPE = "REMIND_CH_MEDICINE2"
+    
+    def send(self, event, msg):
+        send_data = self.PID+"*%s*00013*REMIND_CH_MEDICINE2"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+        # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_data = msg_tmp.split(',')
+
+        medicin_data = []
+
+        medicine_alarmday = str(msg_data[4])
+        alarmday=[]
+
+        for i in range(1,4):#默认是三个时间多了也不保存
+            print("i",i)
+            medicine_alarm = str(msg_data[i])
+            on = int(medicine_alarm.split('-')[1])
+            if on != 0:
+                alarmday = []
+                data = str(medicine_alarm.split('-')[0])
+                hour = int(data.split(":")[0])
+                min = int(data.split(":")[1])
+                for i in range(0,7):
+                    print("medicine_alarmday",medicine_alarmday,medicine_alarmday[i])
+                    if medicine_alarmday[i] != '0':
+                        alarmday.append(i)
+                enable = 1
+                medicin_data.append({"hour":hour,"min":min,"day":alarmday,"enable":enable})
+        
+        EventMesh.publish("set_storage_config",["medicine",medicin_data])
+        medicine = EventMesh.publish("get_storage_config","medicine")
+        print("get medicine",medicine,type(medicine))
+
+        # medicine_alarm1 = str(msg_data[1])
+        # on1 = int(medicine_alarm1.split('-')[1])
+        # if on1 != 0:
+        #     data = str(medicine_alarm1.split('-')[0])
+        #     hour = int(data.split(":")[0])
+        #     min = int(data.split(":")[1])
+        #     for i in range(0,7):
+        #         if medicine_alarmday[i] != '0':
+        #             alarmday.append(i)
+        #     enable = 1
+        #     medicin_data.append({"hour":hour,"min":min,"day":alarmday,"enable":enable})
+
+        # medicine_alarm2 = str(msg_data[2])
+        # on2 = int(medicine_alarm2.split('-')[1])
+        # if on2 != 0:
+        #     alarmday = []
+        #     data = str(medicine_alarm2.split('-')[0])
+        #     hour = int(data.split(":")[0])
+        #     min = int(data.split(":")[1])
+        #     for i in range(0,7):
+        #         if medicine_alarmday[i] != '0':
+        #             alarmday.append(i)
+        #     enable = 1#1是重复 0单次
+        #     medicin_data.append({"hour":hour,"min":min,"day":alarmday,"enable":enable})
+
+        # medicine_alarm3 = str(msg_data[3])
+        # on3 = int(medicine_alarm3.split('-')[1])
+        # if on3 != 0:
+        #     alarmday = []
+        #     data = str(medicine_alarm3.split('-')[0])
+        #     hour = int(data.split(":")[0])
+        #     min = int(data.split(":")[1])
+        #     for i in range(0,7):
+        #         if medicine_alarmday[i] != '0':
+        #             alarmday.append(i)
+        #     enable = 1#1是重复 0单次
+            
+        #     medicin_data.append({"hour":hour,"min":min,"day":alarmday,"enable":enable})
+        
+
+
+        EventMesh.debug_log("recv REMIND_CH_MEDICINE2:{} medicin_data ;{}".format(msg,medicin_data))
+       
+        EventMesh.publish(constants.PROTOCOL.REMIND_CH_MEDICINE2_SEND)   
+
+
+
+
 class ProtoColResolver(object):
     def __init__(self):
         self.protocol_list = []
index df7bebd..65b6831 100644 (file)
Binary files a/2.sdk/project/D10/usr/static/audio.bin and b/2.sdk/project/D10/usr/static/audio.bin differ