-['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
+
class PhoneVolumeLevelManager(Abstract):
def __init__(self):
self.level = 0
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#记录步数
self.pull_time = 0
+ self.drink_time = 0
+
def post_processor_after_instantiation(self):
EventMesh.debug_log("post_processor_after_instantiation:1")
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()
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)
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)
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))
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))
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))
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))
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 = []