C06S:
authordxy15521469561 <1731678236@qq.com>
Fri, 22 Dec 2023 10:15:08 +0000 (18:15 +0800)
committerdxy15521469561 <1731678236@qq.com>
Fri, 22 Dec 2023 10:15:08 +0000 (18:15 +0800)
需求增加
D10默认GPS开启

38 files changed:
2.sdk/project/C06S/ext/static/APP/alipay/1.jpg [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_11.png [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_11_1.png [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_12.png [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_13.png [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_13_1_1.png [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_1_1.png [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_2.png [deleted file]
2.sdk/project/C06S/ext/static/APP/alipay/1_2_1.png [deleted file]
2.sdk/project/C06S/ext/static/IMAGE_SPO2_ONLY_TEST_DONE.png [deleted file]
2.sdk/project/C06S/ext/static/audio_audio_haixiu.mp3
2.sdk/project/C06S/font/ext_font.bin
2.sdk/project/C06S/font/font_28.bin
2.sdk/project/C06S/font/字体库/font_28.bin [new file with mode: 0644]
2.sdk/project/C06S/font/字体库/font_28.c [new file with mode: 0644]
2.sdk/project/C06S/font/常用中文字.txt [new file with mode: 0644]
2.sdk/project/C06S/new.bat
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/alarm.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appFactoryMode.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/constants.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_health.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py
2.sdk/project/C06S/usr/static/alipay_.png [deleted file]
2.sdk/project/C06S/usr/static/degree.png [deleted file]
2.sdk/project/D10/audio.bin
2.sdk/project/D10/list.json
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.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/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py

diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1.jpg b/2.sdk/project/C06S/ext/static/APP/alipay/1.jpg
deleted file mode 100644 (file)
index 78bf3c5..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1.jpg and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_11.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_11.png
deleted file mode 100644 (file)
index ecf6787..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_11.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_11_1.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_11_1.png
deleted file mode 100644 (file)
index d4873f9..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_11_1.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_12.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_12.png
deleted file mode 100644 (file)
index 58d7570..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_12.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_13.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_13.png
deleted file mode 100644 (file)
index b8afd22..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_13.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_13_1_1.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_13_1_1.png
deleted file mode 100644 (file)
index 0e1b0b8..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_13_1_1.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_1_1.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_1_1.png
deleted file mode 100644 (file)
index 3ff4400..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_1_1.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_2.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_2.png
deleted file mode 100644 (file)
index 1cc13f6..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_2.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/APP/alipay/1_2_1.png b/2.sdk/project/C06S/ext/static/APP/alipay/1_2_1.png
deleted file mode 100644 (file)
index 481a84f..0000000
Binary files a/2.sdk/project/C06S/ext/static/APP/alipay/1_2_1.png and /dev/null differ
diff --git a/2.sdk/project/C06S/ext/static/IMAGE_SPO2_ONLY_TEST_DONE.png b/2.sdk/project/C06S/ext/static/IMAGE_SPO2_ONLY_TEST_DONE.png
deleted file mode 100644 (file)
index 827b461..0000000
Binary files a/2.sdk/project/C06S/ext/static/IMAGE_SPO2_ONLY_TEST_DONE.png and /dev/null differ
index 5ef7a93..673a997 100644 (file)
Binary files a/2.sdk/project/C06S/ext/static/audio_audio_haixiu.mp3 and b/2.sdk/project/C06S/ext/static/audio_audio_haixiu.mp3 differ
index 0864f18..fe95234 100644 (file)
Binary files a/2.sdk/project/C06S/font/ext_font.bin and b/2.sdk/project/C06S/font/ext_font.bin differ
index 9fcb1bc..f9a1420 100644 (file)
Binary files a/2.sdk/project/C06S/font/font_28.bin and b/2.sdk/project/C06S/font/font_28.bin differ
diff --git a/2.sdk/project/C06S/font/字体库/font_28.bin b/2.sdk/project/C06S/font/字体库/font_28.bin
new file mode 100644 (file)
index 0000000..f9a1420
Binary files /dev/null and "b/2.sdk/project/C06S/font/\345\255\227\344\275\223\345\272\223/font_28.bin" differ
diff --git a/2.sdk/project/C06S/font/字体库/font_28.c b/2.sdk/project/C06S/font/字体库/font_28.c
new file mode 100644 (file)
index 0000000..0e02733
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+*---------------------------------------------------------------
+*                        Lvgl Font Tool                         
+*                                                               
+* 注:使用unicode编码                                              
+* 注:本字体文件由Lvgl Font Tool V0.4 生成                          
+* 作者:阿里(qq:617622104)                                         
+*---------------------------------------------------------------
+*/
+
+
+#include "lvgl.h"
+
+
+typedef struct{
+    uint16_t min;
+    uint16_t max;
+    uint8_t  bpp;
+    uint8_t  reserved[3];
+}x_header_t;
+typedef struct{
+    uint32_t pos;
+}x_table_t;
+typedef struct{
+    uint8_t adv_w;
+    uint8_t box_w;
+    uint8_t box_h;
+    int8_t  ofs_x;
+    int8_t  ofs_y;
+    uint8_t r;
+}glyph_dsc_t;
+
+
+static x_header_t __g_xbf_hd = {
+    .min = 0x0020,
+    .max = 0xffe5,
+    .bpp = 4,
+};
+
+
+//static uint8_t __g_font_buf[462];//如bin文件存在SPI FLASH可使用此buff
+
+
+static uint8_t *__user_font_getdata(int offset, int size){
+    //如字模保存在SPI FLASH, SPIFLASH_Read(__g_font_buf,offset,size);
+    //如字模已加载到SDRAM,直接返回偏移地址即可如:return (uint8_t*)(sdram_fontddr+offset);
+    return __g_font_buf;
+}
+
+
+static const uint8_t * __user_font_get_bitmap(const lv_font_t * font, uint32_t unicode_letter) {
+    if( unicode_letter>__g_xbf_hd.max || unicode_letter<__g_xbf_hd.min ) {
+        return NULL;
+    }
+    uint32_t unicode_offset = sizeof(x_header_t)+(unicode_letter-__g_xbf_hd.min)*4;
+    uint32_t *p_pos = (uint32_t *)__user_font_getdata(unicode_offset, 4);
+    if( p_pos[0] != 0 ) {
+        uint32_t pos = p_pos[0];
+        glyph_dsc_t * gdsc = (glyph_dsc_t*)__user_font_getdata(pos, sizeof(glyph_dsc_t));
+        return __user_font_getdata(pos+sizeof(glyph_dsc_t), gdsc->box_w*gdsc->box_h*__g_xbf_hd.bpp/8);
+    }
+    return NULL;
+}
+
+
+static bool __user_font_get_glyph_dsc(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) {
+    if( unicode_letter>__g_xbf_hd.max || unicode_letter<__g_xbf_hd.min ) {
+        return NULL;
+    }
+    uint32_t unicode_offset = sizeof(x_header_t)+(unicode_letter-__g_xbf_hd.min)*4;
+    uint32_t *p_pos = (uint32_t *)__user_font_getdata(unicode_offset, 4);
+    if( p_pos[0] != 0 ) {
+        glyph_dsc_t * gdsc = (glyph_dsc_t*)__user_font_getdata(p_pos[0], sizeof(glyph_dsc_t));
+        dsc_out->adv_w = gdsc->adv_w;
+        dsc_out->box_h = gdsc->box_h;
+        dsc_out->box_w = gdsc->box_w;
+        dsc_out->ofs_x = gdsc->ofs_x;
+        dsc_out->ofs_y = gdsc->ofs_y;
+        dsc_out->bpp   = __g_xbf_hd.bpp;
+        return true;
+    }
+    return false;
+}
+
+
+//HarmonyOS Sans SC,,-1
+//字模高度:33
+//XBF字体,外部bin文件
+lv_font_t font_28 = {
+    .get_glyph_bitmap = __user_font_get_bitmap,
+    .get_glyph_dsc = __user_font_get_glyph_dsc,
+    .line_height = 33,
+    .base_line = 0,
+};
+
diff --git a/2.sdk/project/C06S/font/常用中文字.txt b/2.sdk/project/C06S/font/常用中文字.txt
new file mode 100644 (file)
index 0000000..6155138
--- /dev/null
@@ -0,0 +1 @@
+啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄zxcvbnm,./';lkjhgfdsaqwertyuiop[]\1234567890-=ZXCVBNM<>?ASDFGHJKL:"QWERTYUIOP{}|~!@#$%^&*()_+` ,。、‘;’【】、·《》?:“”{}|~!@#¥%……&*()——+°℃
\ No newline at end of file
index 5b5a5da..d369ec0 100644 (file)
@@ -2,7 +2,7 @@
 
 md images
 del images /q
-..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c ext -b 4096 -r 4096 -p 4096 -s 1468000 -i .\images\ext_fs.bin
+..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c ext -b 4096 -r 4096 -p 4096 -s 1363148 -i .\images\ext_fs.bin
 if errorlevel 1 (
     echo "ext_fs.binÉú³Éʧ°Ü !!!!!!!!!!!!!!! "
     goto exit
index 6ec3121..cc93540 100644 (file)
@@ -922,38 +922,36 @@ class ClkListScreen(Screen):
         self.alarm_draw_btn()
         
     def update_show_info(self,event,msg):
-        EventMesh.publish("read_alarminjson")
+        # EventMesh.publish("read_alarminjson")
         self.timer.start(1*1000,0,self.delay_update)
     def delay_update(self,*agrs):
-        EventMesh.publish("set_rtc_alarm")
+        # EventMesh.publish("set_rtc_alarm")
         self.alarm_draw_btn()
 
 
     def alarm_draw_btn(self):
-        global alarm_list 
-        self.clock_list = alarm_list  
-        IFEXIST = ql_fs.path_exists("/ext/static/storage_file/alarm_msg.json")    
-        if IFEXIST == True:
-            if self.clock_list:
+        get_alarm_data = EventMesh.publish("get_storage_config","normal_alarm")
+        print("get_alarm_data",get_alarm_data)
+        if get_alarm_data != None and get_alarm_data != []:
+        
+            if len(get_alarm_data) != 0:
                 # print("nalarm_list:{}".format(alarm_list))
                 no_add_alarm_img.add_flag(lv.obj.FLAG.HIDDEN)
                 no_add_alarm.add_flag(lv.obj.FLAG.HIDDEN)
                 num = 0
                 count = 0
-                clock_nums = len(self.clock_list)-2#3-2 = 1 0 
+                clock_nums = len(get_alarm_data)#3-2 = 1 0 
                 # for i ,each in enumerate(self.clock_list):
                 for i in range(0,self.MXA_clk_num):
                     if i >= clock_nums:
                         self.contact_detail_listt_dict[i]["_btn"].add_flag(lv.obj.FLAG.HIDDEN)
                         continue
-                    each = self.clock_list[2+i]
-                    num = each["idx"]
+                    
+                    hour = get_alarm_data[i]["hour"]
+                    min = get_alarm_data[i]["min"]
+
+                    day = get_alarm_data[i]["day"]
 
-                    if count >= 3:
-                        break
-                    repeart = each["repeart"]#
-                    if repeart >= 10:
-                        continue
                     print("count1:{}".format(count))
                     #_btn = lv.btn(self.alarm_show_list)
                     self.contact_detail_listt_dict[count]["_btn"].set_size(230,ALARM_LIST_SIZE)
@@ -967,28 +965,27 @@ class ClkListScreen(Screen):
                     #_btn_label1 = lv.label(_btn)
                     self.contact_detail_listt_dict[count]["_btn_label1"].set_pos(50, 0)
                     self.contact_detail_listt_dict[count]["_btn_label1"].set_size(0, 0)
-                    self.contact_detail_listt_dict[count]["_btn_label1"].set_text(str(num))
+                    self.contact_detail_listt_dict[count]["_btn_label1"].set_text(" ")
 
                     #_btn_label2 = lv.label(_btn)
                     self.contact_detail_listt_dict[count]["_btn_label2"].set_pos(20, 8)
                     self.contact_detail_listt_dict[count]["_btn_label2"].set_size(97, 28)
-                    self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" % each["hour"] + ":"+"%02d" % each["minute"])
+                    self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" % hour + ":"+"%02d" %min)
                     # _btn_label2.set_text(str(each["days"]))
 
                     # _btn_label2.set_long_mode(lv.label.LONG.DOT)
                     # _btn_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
                     self.contact_detail_listt_dict[count]["_btn_label2"].set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
-                    _new_list = sorted(each["days"])
-                    repeart = each["repeart"]
+                    _new_list = sorted(day)
                     _output = [self.weekdays_list[x] for x in _new_list]
                     #_btn_label3 = lv.label(_btn)
                     self.contact_detail_listt_dict[count]["_btn_label3"].set_pos(20, 40)
                     self.contact_detail_listt_dict[count]["_btn_label3"].set_size(200, 28)
-                    print("_new_list:{} repeart:{}".format(_new_list,repeart))
-                    if repeart == 1:
+                    print("_new_list:{}".format(_new_list))
+                    if day == []:
                         self.contact_detail_listt_dict[count]["_btn_label3"].set_text("一次")
-                    elif repeart == 2:
+                    elif len(day) > 6:
                         self.contact_detail_listt_dict[count]["_btn_label3"].set_text("每天")
                     else:
                         self.contact_detail_listt_dict[count]["_btn_label3"].set_text(",".join(_output))
index 27f0160..537021f 100644 (file)
@@ -188,6 +188,9 @@ class FactoryModeScreen(Screen):
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
         
+    def done_left_to_right(self):
+        EventMesh.publish("return_prev_screen")
+
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
 
@@ -295,7 +298,7 @@ class FactoryModeLogScreen(Screen):
         EventMesh.publish("load_screen", {"screen": "factorymode"})
     
     def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "factorymode"})
+        EventMesh.publish("return_prev_screen")
 
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -358,8 +361,12 @@ class FactoryModestepScreen(Screen):
     def done_return(self):
         EventMesh.publish("load_screen", {"screen": "factorymode"})
 
+
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "factorymode"})
+    
+    def done_left_to_right(self):
+        EventMesh.publish("return_prev_screen")
         
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -473,7 +480,8 @@ class FactoryModeHsensorTestScreen(Screen):
         EventMesh.publish("load_screen", {"screen": "factorymode"})
 
     def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "factorymode"})
+        EventMesh.publish("return_prev_screen")
+
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
 
@@ -522,7 +530,7 @@ class FactoryModeBatTestScreen(Screen):
         EventMesh.publish("load_screen", {"screen": "factorymode"})
 
     def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "factorymode"})
+        EventMesh.publish("return_prev_screen")
 
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -704,7 +712,6 @@ class FactoryModeLocationScreen(Screen):
         EventMesh.publish("load_screen", {"screen": "factorymode"})
 
     def done_left_to_right(self):
-        
-        EventMesh.publish("load_screen", {"screen": "factorymode"})
+        EventMesh.publish("return_prev_screen")
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
\ No newline at end of file
index 6e94c27..a67e2e0 100644 (file)
@@ -111,6 +111,23 @@ class PROTOCOL:
     BLDSTART_SEND ="bldstart_SEND"
     BLDSTART_RECV = "bldstart_RECV"
 
+    AL_SEND = "AL_SEND"
+    AL_RECV = "AL_RECV"
+
+    FALLDOWN_SEND = "FALLDOWN_SEND"
+    FALLDOWN_RECV = "FALLDOWN_RECV"
+
+    REMOVE_SEND = "REMOVE_SEND"
+    REMOVE_RECV = "REMOVE_RECV"
+
+    FACTORY_SEND = "FACTORY_SEND"
+    FACTORY_RECV = "FACTORY_RECV"
+
+    SLEEPTIME_SEND = "SLEEPTIME_SEND"
+    SLEEPTIME_RECV = "SLEEPTIME_RECV"
+
+    
+
 class EVENT:
     CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND"
     START_LOCATION = "START_LOCATION" 
index 0d524f4..d4eda3e 100644 (file)
@@ -53,10 +53,11 @@ def main_init():
         uos.mount(ldev,'/ext')
     res = uos.statvfs("/ext")
     res = list(res)
-    print('总ext空间:{} MB,剩余空间:{} MB'.format((((res[0] * res[2]) / 1024 / 1024)),((res[0] * res[3]) / 1024 / 1024)))
+    import EventMesh
+    EventMesh.txt_log('总ext空间:{} MB,剩余空间:{} MB'.format((((res[0] * res[2]) / 1024 / 1024)),((res[0] * res[3]) / 1024 / 1024)))
     #print("init1:{}".format(utime.localtime()))
     
-    import EventMesh
+    
     EventMesh.txt_log("power on............\n")
     #print("init2:{}".format(utime.localtime()))
     from lcd import tp_cst816
@@ -70,6 +71,13 @@ def main_init():
     AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager
     from motor import motorEventManager
     from appWechat import WechatScreen,TKS_ProtoCol,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen
+
+    # from protocol import REMOVE_ProtoCol,HELP_ProtoCol,FALLDOWN_ProtoCol,AL_ProtoCol,bldstart_ProtoCol,blood_ProtoCol,SCREEN_SHOWProtoCol,btemp2_ProtoCol,bodytemp2_ProtoCol,TEMP_Hour_ProtoCol,SILENCETIMEFS_ProtoCol,KEYBRD_ProtoCol,SILENCETIME2_ProtoCol,WLKEY_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\
+    #         TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\
+    #             ProtoColResolver,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager
+    
+    import protocol 
+
     import ui as _ui
     # import ui as _ui
     #print("init4:{}".format(utime.localtime()))
@@ -210,9 +218,7 @@ def main_init():
     #print("init6:{}".format(utime.localtime()))
     
     try:
-        from protocol import bldstart_ProtoCol,blood_ProtoCol,SCREEN_SHOWProtoCol,btemp2_ProtoCol,bodytemp2_ProtoCol,TEMP_Hour_ProtoCol,SILENCETIMEFS_ProtoCol,KEYBRD_ProtoCol,SILENCETIME2_ProtoCol,WLKEY_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\
-            TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\
-                ProtoColResolver,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager
+       
         import mgr as mgr
         #print("init7:{}".format(utime.localtime()))
         
@@ -243,7 +249,7 @@ def main_init():
         app.append_manager(schoolclassManager())
         #app.append_manager(Alipay()) 
         app.append_manager(ConfigStoreManager())
-        app.append_manager(NetManager())
+        app.append_manager(protocol.NetManager())
         app.append_manager(LocationManager())
         app.append_manager(AddrBookManager())
         app.append_manager(mgr.MsgManager())
@@ -278,51 +284,58 @@ def main_init():
     
     #print("init11:{}".format(utime.localtime()))  
     try:  
-        pcr = ProtoColResolver()
-        pcr.add_support(LK_ProtoCol())
-        pcr.add_support(PING_ProtoCol())
-        pcr.add_support(KA_ProtoCol())
-        pcr.add_support(UD_ProtoCol())
-        pcr.add_support(CR_ProtoCol())
-        pcr.add_support(FIND_ProtoCol())
-        pcr.add_support(POWEROFF_ProtoCol())
-        pcr.add_support(PHL_ProtoCol())
+        pcr = protocol.ProtoColResolver()
+        pcr.add_support(protocol.LK_ProtoCol())
+        pcr.add_support(protocol.PING_ProtoCol())
+        pcr.add_support(protocol.KA_ProtoCol())
+        pcr.add_support(protocol.UD_ProtoCol())
+        pcr.add_support(protocol.CR_ProtoCol())
+        pcr.add_support(protocol.FIND_ProtoCol())
+        pcr.add_support(protocol.POWEROFF_ProtoCol())
+        pcr.add_support(protocol.PHL_ProtoCol())
         
-        pcr.add_support(WT_ProtoCol())
-        pcr.add_support(REMIND_ProtoCol())
-        pcr.add_support(HRSTART_ProtoCol())
-        pcr.add_support(HEART_ProtoCol())
-        pcr.add_support(OXYGEN_ProtoCol())
-        pcr.add_support(OXYGEN_One_ProtoCol())
-        pcr.add_support(TEMP_ProtoCol())
-        pcr.add_support(DLT_ProtoCol())
-        pcr.add_support(UPLOAD_ProtoCol())
-        pcr.add_support(MONITOR_ProtoCol())
+        pcr.add_support(protocol.WT_ProtoCol())
+        pcr.add_support(protocol.REMIND_ProtoCol())
+        pcr.add_support(protocol.HRSTART_ProtoCol())
+        pcr.add_support(protocol.HEART_ProtoCol())
+        pcr.add_support(protocol.OXYGEN_ProtoCol())
+        pcr.add_support(protocol.OXYGEN_One_ProtoCol())
+        pcr.add_support(protocol.TEMP_ProtoCol())
+        pcr.add_support(protocol.DLT_ProtoCol())
+        pcr.add_support(protocol.UPLOAD_ProtoCol())
+        pcr.add_support(protocol.MONITOR_ProtoCol())
         # pcr.add_support(CENTER_ProtoCol())
-        pcr.add_support(CENTER_ProtoCol())
-        pcr.add_support(bootoff_ProtoCol())
-        pcr.add_support(WDSTART_ProtoCol())
-        pcr.add_support(LOWBAT_ProtoCol())
-        pcr.add_support(sosHome_dial_ProtoCol())
-        pcr.add_support(Time_ProtoCol())
-        pcr.add_support(WLKEY_ProtoCol())
-        pcr.add_support(KEYBRD_ProtoCol())
-        pcr.add_support(SILENCETIME2_ProtoCol())
-        pcr.add_support(SILENCETIMEFS_ProtoCol())
-        pcr.add_support(TEMP_Hour_ProtoCol())
-        pcr.add_support(bodytemp2_ProtoCol())
-        pcr.add_support(btemp2_ProtoCol())
-        pcr.add_support(SCREEN_SHOWProtoCol())
+        pcr.add_support(protocol.CENTER_ProtoCol())
+        pcr.add_support(protocol.bootoff_ProtoCol())
+        pcr.add_support(protocol.WDSTART_ProtoCol())
+        pcr.add_support(protocol.LOWBAT_ProtoCol())
+        pcr.add_support(protocol.sosHome_dial_ProtoCol())
+        pcr.add_support(protocol.Time_ProtoCol())
+        pcr.add_support(protocol.WLKEY_ProtoCol())
+        pcr.add_support(protocol.KEYBRD_ProtoCol())
+        pcr.add_support(protocol.SILENCETIME2_ProtoCol())
+        pcr.add_support(protocol.SILENCETIMEFS_ProtoCol())
+        pcr.add_support(protocol.TEMP_Hour_ProtoCol())
+        pcr.add_support(protocol.bodytemp2_ProtoCol())
+        pcr.add_support(protocol.btemp2_ProtoCol())
+        pcr.add_support(protocol.SCREEN_SHOWProtoCol())
         pcr.add_support(TKS_ProtoCol())
         pcr.add_support(TK_ProtoCol())
         pcr.add_support(MESSAGE_ProtoCol())
 
-        pcr.add_support(blood_ProtoCol())
-        pcr.add_support(bldstart_ProtoCol())
+        pcr.add_support(protocol.blood_ProtoCol())
+        pcr.add_support(protocol.bldstart_ProtoCol())
+
+        pcr.add_support(protocol.AL_ProtoCol())
+        pcr.add_support(protocol.FALLDOWN_ProtoCol())
+        pcr.add_support(protocol.HELP_ProtoCol())
+        pcr.add_support(protocol.REMOVE_ProtoCol())
+        pcr.add_support(protocol.SLEEPTIME_ProtoCol())
+        pcr.add_support(protocol.FACTORY_ProtoCol())
     except Exception as e:
         usys.print_exception(e)
     try:    
-        sm = SockManager()
+        sm = protocol.SockManager()
         sm.add_support_resolver(pcr)
         app.append_manager(sm)
         #print("init11.0:{}".format(utime.localtime()))   
@@ -343,6 +356,6 @@ def main_init():
     except Exception as e:
         usys.print_exception(e)
     
-    EventMesh.publish("set_rtc_alarm")
+    # EventMesh.publish("set_rtc_alarm")
    
 
index 22467e6..7456f41 100644 (file)
@@ -518,22 +518,22 @@ class sosInfoCallManager(Abstract):
                         num_len = len(number)+2  
                     # print("number:{} number_len :{} num:{} num_len:{}".format(number,len(number),num,num_len))
                     if num > num_len :
-                        if len(number) == 1:
-                            number1 = str(number[0])
-                            sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
-                        elif len(number) == 2:
-                            number1 = str(number[0])
-                            sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
-
-                            number2 = str(number[1])
-                            sms.sendPduMsg(number2, '我需要你的帮助', 'UCS2')
-                        elif len(number) == 3:
-                            number1 = str(number[0])
-                            sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
-                            number2 = str(number[1])
-                            sms.sendPduMsg(number2, '我需要你的帮助', 'UCS2')
-                            number3 = str(number[2])
-                            sms.sendPduMsg(number3, '我需要你的帮助', 'UCS2')
+                        # if len(number) == 1:
+                        #     number1 = str(number[0])
+                        #     sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
+                        # elif len(number) == 2:
+                        #     number1 = str(number[0])
+                        #     sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
+
+                        #     number2 = str(number[1])
+                        #     sms.sendPduMsg(number2, '我需要你的帮助', 'UCS2')
+                        # elif len(number) == 3:
+                        #     number1 = str(number[0])
+                        #     sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
+                        #     number2 = str(number[1])
+                        #     sms.sendPduMsg(number2, '我需要你的帮助', 'UCS2')
+                        #     number3 = str(number[2])
+                        #     sms.sendPduMsg(number3, '我需要你的帮助', 'UCS2')
                         EventMesh.publish("set_sos_flag",0)
                         EventMesh.publish("set_sos_num",0)
                     else:
@@ -559,7 +559,13 @@ class sosInfoCallManager(Abstract):
                             elif num == 3:
                                 print("phone 6")
                                 EventMesh.publish("set_callnumer_cb",number[0])   
-        
+
+WL_timer = osTimer()   
+def WL_timer_cb(*args):   
+    get_call = EventMesh.publish("get_call_state") 
+    if get_call == 2:#只有拨进来才给接听
+        EventMesh.publish("answer_auto_event")
+
 def voice_callback(args):
    print('voicecall iinfo:{}'.format(args))
    if args[0] == 10:
@@ -576,7 +582,29 @@ def voice_callback(args):
 
         if b == True and size_len > 11:
             tmp = tmp[size_len-11:]
-        EventMesh.publish("set_call_state",2)#设置关机时间
+        WLKEY = EventMesh.publish("get_storage_config","WLKEY") 
+        if WLKEY != None:
+            if WLKEY == "1" or WLKEY == "2":#开启了白名单
+                on_list_flag = 0
+                phonebook = EventMesh.publish("get_phonebook_list")
+                phonebook_list = phonebook[1]
+                print("voice_callback:phonebook_list{}".format(phonebook_list))
+                try:
+                    for value in phonebook_list.values():
+                        if value == args[6]:
+                            on_list_flag = 1
+                            break
+                except Exception as e:
+                    usys.print_exception(e)
+                print("voice_callback:on_list_flag{}".format(on_list_flag))
+                if on_list_flag == 1:#在白名单里
+                    if WLKEY == "2":
+                        WL_timer.start(30000, 0, WL_timer_cb)
+                else:
+                    print("voice_callback:不在白名单中,挂断")
+                    voiceCall.callEnd()
+                    return 
+        EventMesh.publish("set_call_state",2)#设置
         EventMesh.publish("load_screen", {"screen": "incoming_call","meta":str(tmp)})
 
    elif args[0] == 11:
@@ -614,13 +642,13 @@ def voice_callback(args):
         
         EventMesh.publish("set_sos_info_call")  
         print('voicecall disconnect end')
-        EventMesh.publish("set_call_state",0)#设置关机时间
+        EventMesh.publish("set_call_state",0)##设置通话状态
         
 
    elif args[0] == 13:
         print('voicecall is waiting, PhoneNO.: ', args[6])
    elif args[0] == 14:
-        EventMesh.publish("set_call_state",4)#设置关机时间
+        EventMesh.publish("set_call_state",4)##设置通话状态
         print('voicecall dialing, PhoneNO.: ', args[6])
         EventMesh.publish("set_UI_high_priority",0)
         EventMesh.publish("load_screen", {"screen": "dialing"})
@@ -701,6 +729,12 @@ class DeviceInfoManager(Abstract):
 
         self.old_bp_time = 0
 
+        self.normal_oldtotalmin = 0
+        self.normal_flag = 0
+        self.normal_count = 0
+
+        self.dev_state = 0
+
         self.charge_full_count = 0
         self.GPS_step_t = 0#记录步数
         self.usb = USB()
@@ -738,6 +772,8 @@ class DeviceInfoManager(Abstract):
         print("DeviceInfoManager:3")
         self.i2c0 = I2C(I2C.I2C0, I2C.FAST_MODE)
         self.stop_temp( None, None)
+
+        self.wear = 1
         
     def post_processor_after_instantiation(self):
         print("post_processor_after_instantiation:1")
@@ -771,6 +807,9 @@ class DeviceInfoManager(Abstract):
         EventMesh.subscribe(constants.EVENT.SET_CONNECT, self.set_connect)
         EventMesh.subscribe(constants.EVENT.GET_CONNECT, self.get_connect)
 
+        EventMesh.subscribe("get_dev_state", self.get_dev_state)
+        EventMesh.subscribe("set_dev_state", self.set_dev_state)
+
         
         EventMesh.subscribe(constants.EVENT.START_BLOOD_OXYGEN, self.start_blood_oxygen)
         EventMesh.subscribe(constants.EVENT.START_HEART, self.start_heart)
@@ -816,8 +855,15 @@ class DeviceInfoManager(Abstract):
     def gsensor_cb(self, para):
         print("gsensor_cb:{}".format(para))
         flip_sw = EventMesh.publish("get_storage_config","flip_sw")
-        
+        fall_sw = EventMesh.publish("get_storage_config","fall_sw")
         if para == 0: #跌倒报警
+            if fall_sw == "1":
+                dev_state =  EventMesh.publish("get_dev_state")
+
+                tmp = 1 << 21
+                dev_state = dev_state|tmp #第21位=1
+                EventMesh.publish("set_dev_state",dev_state)
+                EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,dev_state]) #开始AL定位
             pass
             #EventMesh.publish("load_screen", {"screen": "FIND"})
         elif para == 1: #抬腕
@@ -830,6 +876,12 @@ class DeviceInfoManager(Abstract):
             # if flip_sw == 1:
             #     EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
 
+
+    def get_dev_state(self, event, msg):
+        return self.dev_state
+    def set_dev_state(self, event, msg):
+        self.dev_state = msg
+
     def publish_event_cb(self, *args, **kwargs):
         EventMesh.publish("publish_message_event_DeviceInfo",{"func":self.publish_event,"data":0})  
     def publish_event(self,data):
@@ -950,15 +1002,15 @@ class DeviceInfoManager(Abstract):
                 data = RTC().datetime()
                 hour = data[4]
                 min = data[5]
-                next_alarm_time = utime.localtime(old_Timesec)
+                next_alarm_time = utime.localtime(int(old_Timesec))
                 # print("data[5]:{} {} next_alarm_time:{} old_Timesec:{}".format(data[1],data[2],next_alarm_time,old_Timesec))
                 month = next_alarm_time[1]
                 day = next_alarm_time[2]
-                if month != data[1] or day != data[2]:
+                year = next_alarm_time[0]
+                if month != data[1] or day != data[2] or year != data[0]:
                     step = EventMesh.publish("get_old_step_value")
-                    if step > 0:
-                        self.gsensor.reset_step()
-                        EventMesh.publish("set_old_step_value",0)
+                    self.gsensor.reset_step()
+                    EventMesh.publish("set_old_step_value",0)
                     
                     hr = EventMesh.publish("get_old_hr_data",)
                     if hr != 0:
@@ -968,14 +1020,13 @@ class DeviceInfoManager(Abstract):
                     if spo2 != 0:
                         EventMesh.publish("set_old_spo2_data", 0)
                     EventMesh.publish("set_old_time_data",time_tmp)
-            if hour == 0:#清步数
-                if min <= 1:
+            if hour == 23:#清步数
+                if min == 59:
                     if self.clear_step == 0:
                         step = EventMesh.publish("get_old_step_value")
                         EventMesh.publish("set_old_time_data",time_tmp)
-                        if step > 0:
-                            EventMesh.publish("set_old_step_value",0)
-                            self.gsensor.reset_step()
+                        EventMesh.publish("set_old_step_value",0)
+                        self.gsensor.reset_step()
                         hr = EventMesh.publish("get_old_hr_data")
                         if hr != 0:
                             EventMesh.publish("set_old_hr_data", 0)
@@ -985,8 +1036,7 @@ class DeviceInfoManager(Abstract):
                             EventMesh.publish("set_old_spo2_data", 0)
                         self.clear_step = 1
                 else:
-                    if self.clear_step == 1:
-                        self.clear_step = 0
+                    self.clear_step = 0
             else:
                 if self.clear_step == 1:
                     self.clear_step = 0
@@ -1036,6 +1086,25 @@ class DeviceInfoManager(Abstract):
         WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
         if WEAR == None :
             WEAR = 0
+
+        #佩戴检测
+        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+        if self.wear != WEAR:
+            remove_sw = EventMesh.publish("get_storage_config","remove_sw")
+            if remove_sw == "1":#开启了佩戴检测的开关
+                dev_state =  EventMesh.publish("get_dev_state")
+                if WEAR != 1:
+                    tmp = 1 << 3
+                    tmp = ~tmp
+                    tmp = 1 << 20
+                    dev_state = dev_state|tmp #第20位=1
+
+                    print("佩戴检测:{}".format(dev_state))    
+                    EventMesh.publish("set_dev_state",dev_state)
+                    EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,dev_state]) #开始AL定位,发送报警
+                    #EventMesh.publish(constants.PROTOCOL.HELP_SEND,65)
+        self.wear = WEAR
+
         self.get_hr_state = EventMesh.publish("get_hr_state")
         if self.get_hr_state == None :
             self.get_hr_state = 0
@@ -1090,7 +1159,7 @@ class DeviceInfoManager(Abstract):
                         EventMesh.publish("set_bp_state",3)#2代表后台进入测试
                         EventMesh.publish(constants.EVENT.START_HEART)
                         # print("self.HR_Onestate....3..:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
-                    elif self.old_bp_time > 9:
+                    elif self.old_bp_time > 6:
                         self.old_bp_time = 0
                         EventMesh.publish("set_bp_state",0)#2代表后台进入测试
                         blood_data = EventMesh.publish("get_autoblood_value")
@@ -1609,8 +1678,72 @@ class DeviceInfoManager(Abstract):
             self.old_bp_time = 0
 
         
-        #quecgnss.gnssEnable(0)  
-    
+        self.normal_alarm() 
+
+
+    #普通闹钟
+    def normal_alarm(self):
+        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)
+        # EventMesh.debug_log("self.normal_oldtotalmin",self.normal_oldtotalmin,cur_total_min,self.alarm_flag)
+        if self.normal_oldtotalmin == 0:
+            self.normal_oldtotalmin = cur_total_min #549
+        if self.normal_oldtotalmin != cur_total_min: #上次响过的闹钟分钟数不等于当前的分钟数据需要清零否则下一个不会响铃
+            if self.normal_flag == 1:
+                self.normal_flag = 0
+                self.normal_count = 0
+        normal_alarm = []
+        normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+        # EventMesh.debug_log("sleep info2",sleep,cur_total_min)
+        if self.normal_flag == 1:#表示闹钟响过清除标志
+            self.normal_count+=1
+            if self.normal_count > 6:
+                self.normal_count = 0
+                self.normal_flag = 0
+        if normal_alarm != None:
+            if len(normal_alarm) != 0 and normal_alarm != []:
+                j = 0
+                for i in range(len(normal_alarm)):
+                    # EventMesh.debug_log("normal_alarm normal_alarm 33",normal_alarm,j)
+                    normalalarm_hour = normal_alarm[j]["hour"]
+                    normalalarm_min = normal_alarm[j]["min"]
+                    normalalarm_day = normal_alarm[j]["day"]
+                    normalalarm_enale = normal_alarm[j]["enable"]
+                    normalalarm_totalmin = int(normalalarm_hour)*60+int(normalalarm_min)
+                    # EventMesh.debug_log("wake alarm",normalalarm_hour,sleep_min,sleep_day,sleep_enale,sleep_totalmin,week)
+                    if normalalarm_day == []:#单次闹钟只响一次
+                        if normalalarm_enale != 0:
+                            if normalalarm_totalmin == cur_total_min:#14:00
+                                self.normal_count = 0
+                                self.normal_flag  = 0    
+                                normal_alarm[j]["enable"] = 0
+                                
+                                # EventMesh.debug_log("wakeup wakeup1",sleep,j)
+                                EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm])#删除之后重新保存
+                                EventMesh.publish("push_update_alarm_show")
+                                # new_data=EventMesh.publish("get_storage_config","normal_alarm")
+                                # print("normal wakeup1",new_data,j)
+                                EventMesh.publish("load_screen", {"screen": "popup_alarm"})                                                                                                                                           
+                                break
+                    else:
+                        if normalalarm_enale != 0 and (week in normalalarm_day):#记录响过的时间分钟数
+                            if normalalarm_totalmin == cur_total_min and self.normal_flag == 0:#14:00
+                                self.normal_flag  = 1
+                                self.normal_count = 0
+                                self.normal_oldtotalmin = normalalarm_totalmin
+                                EventMesh.publish("load_screen", {"screen": "popup_alarm"})                                                                                                                                                 
+                                break
+                    j+=1
+
+
+
       
     def get_sim_Status(self, event, msg):
         return sim.getStatus()
@@ -1690,15 +1823,15 @@ class DeviceInfoManager(Abstract):
         """
         XYZ = self.gsensor.get_x_y_z()
         tmp = 0
-       
+        step = [0,0,0,0]
         tmp =  self.gsensor.get_step() 
         # print("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]
+        step[0]= tmp 
+        step[1] = XYZ[0]
+        step[2] = XYZ[1]
+        step[3] = XYZ[2]
         
-        return self.step
+        return step
 
     def get_ic_cid(self, event, msg):
         """
@@ -1959,8 +2092,19 @@ class LocationManager(Abstract):
         self.location_queue = Queue(100)
         self.lpm_fd = None
         self.start_agps = 0
-        quecgnss.init()
-        quecgnss.gnssEnable(0)
+        read_data = EventMesh.publish("get_storage_config","isOpenGNSS")#获取是否打开GNSS
+        if read_data != None:
+            self.isOpenGNSS = read_data
+        else:#默认关闭GNSS
+            self.isOpenGNSS = "1"
+            EventMesh.publish("set_storage_config",["isOpenGNSS",self.isOpenGNSS])
+        self.isOpenGNSS = EventMesh.publish("get_storage_config","isOpenGNSS")
+        if self.isOpenGNSS == None:
+            self.isOpenGNSS = "1"
+
+        if self.isOpenGNSS == "1":
+            quecgnss.init()
+            quecgnss.gnssEnable(0)
     @staticmethod
     def get_date():
         return "{:04d}-{:02d}-{:02d}".format(*utime.localtime()[0:3])
@@ -2050,120 +2194,134 @@ class LocationManager(Abstract):
         else :
             print("WIFI_scan_open:error1") 
     def gps_open(self, event, msg):
-        #print("publish:gps_open")
-        #quecgnss.init()
-        quecgnss.gnssEnable(2)
-        #self.gps.__gps_nmea_data_clean()
+        if self.isOpenGNSS == "1":
+            #EventMesh.debug_log("publish:gps_open")
+            #quecgnss.init()
+            quecgnss.gnssEnable(2)
+            #self.gps.__gps_nmea_data_clean()
     def gps_close(self, event, msg):
-        quecgnss.gnssEnable(0)
+        if self.isOpenGNSS == "1":
+            quecgnss.gnssEnable(0)
     def location_timer(self, *args, **kwargs):
         
         self.location_timer_count = self.location_timer_count +1
         self.location_check_data_timer_count = self.location_check_data_timer_count+1
 
     def Location_send(self, msg) :
-        #print("Location_send1")
+        print("Location_send1")
         if self.location_queue.empty() == True:
             return
-        date = "{:04d}{:02d}{:02d},{:02d}{:02d}{:02d}".format(*utime.localtime()[0:6])
-        date = date[2:]
-        #date = "180916,025723"
-        GPS_type = "V"
-        latitude = "0.000000,N"
-        longitude = "0.000000,E"
-        speed = "0.00"
-        direction = "0.0"
-        high = "100.0"
-        number = "0"
-        precision = "24"
-        if msg[0] :#有GPS数据
-            GPS_type = "A"
-            # 纬度
-            latitude = msg[0]["latitude"]
-            # 经度
-            longitude = msg[0]["longitude"]
-            # 速度
-            speed = msg[0]["speed"]
-            # 方向
-            direction = "0"
-            if msg[0]["direction"] :
-                direction = msg[0]["direction"]
-            # 高度
-            high = msg[0]["high"]
-            high_tmp = high.split(".")
-            if len(high_tmp) >= 2 :
-                high = "%s"%(high_tmp[0])
-            # 讯号质量:搜索到的卫星数目
-            number = msg[0]["number"]
-            precision = msg[0]["precision"]
-            #date = msg[0]["date"]
-        
-        #gsm 信号强度
-        gsm_sig =  str((100//31)*EventMesh.publish("screen_get_sig"))
-        # 电池电量百分比 
-        bat_tmp = EventMesh.publish("screen_get_battery")
-        battery_caption =  str(bat_tmp[1])
-        #步数
-        old_step = 0
-        step = 0
-        step = EventMesh.publish("get_old_step_value")
-        if step != 0:
-            tmp_data  = EventMesh.publish("get_storage_config","old_step_new")
-            if tmp_data != None:
-                old_step = tmp_data
-            if old_step !=  step:
-                EventMesh.publish("set_storage_config",["old_step",step])
-                EventMesh.publish("set_storage_config",["old_step_new",step])
-                
-        old_step = step
-        # step = str(EventMesh.publish(constants.EVENT.GET_STEP)[0])
-        #翻转次数
-        turn_count = "0"
-        #终端状态
-        state = "00000000"
-        #基站数据
-        CELL_num = len(msg[2])
-        CELL_data = "1," #时延
-        if msg[2] != []:
-            for CELL in msg[2] :
-                if CELL[0] == 0 :
-                    CELL_data += "%X,"%(int(CELL[2])) #MCC
-                    CELL_data += str(CELL[3]) +","#MNC
-                    CELL_data += str(CELL[5]) +","#tac,区域码
-                    CELL_data += str(CELL[1]) +","#基站编号 CID
-                    CELL_data += str(int(CELL[7]+140)) +","#信号强度 rssi
-                else :
-                    CELL_data += str(CELL[5]) +","#tac,区域码
-                    CELL_data += str(CELL[1]) +","#基站编号 CID
-                    CELL_data += str(int(CELL[7]+140)) +","#信号强度 rssi
-            CELL_data = CELL_data[:(len(CELL_data)-1)]
-        #WIFI数据
-        WIFI_num = 0 
-        WIFI_data = ""
-        if msg[1] :
-            WIFI_num = msg[1][0]
-            i = 0
-            for MAC in msg[1][1] :
-                WIFI_data += "wifi%d,%s,%d,"%(i,str(MAC[0]),MAC[1])
-                i += 1
-            WIFI_data = WIFI_data[:(len(WIFI_data)-1)]
-        WIFI_data = WIFI_data.lower()
-        #send_data = "UD ,%s ,%s     ,%s       ,%s       ,%s   ,%s       ,%s  ,%s    ,%s     ,%s             ,%s  ,%s        ,%s   ,%d     ,%s       ,%d      ,%s"\
-        #              %(date,GPS_type,latitude,longitude,speed,direction,high,number,gsm_sig,battery_caption,step,turn_count,state,CELL_num,CELL_data,WIFI_num,WIFI_data)
-        #定位数据
-        send_data = "%s,%s,%s"%(date,GPS_type,latitude)
-        send_data += ",%s,%s,%s"%(longitude,speed,direction)
-        send_data += ",%s,%s,%s"%(high,number,gsm_sig,)
-        send_data += ",%s,%s,%s"%(battery_caption,step,turn_count)
-        send_data += ",%s,%d,%s"%(state,CELL_num,CELL_data)
-        send_data += ",%d,%s"%(WIFI_num,WIFI_data)
-        send_data+=",%s"%(precision)
-        #print("Location_send2:{} q_size:{}".format(send_data,self.location_queue.size()))
+        print("Location_send2")
         while True:
             if self.location_queue.empty() == False:
                 TYPE = self.location_queue.get()
-                #print("Location_send3:{}".format(TYPE))
-                EventMesh.publish(TYPE,send_data)
+                date = "{:04d}{:02d}{:02d},{:02d}{:02d}{:02d}".format(*utime.localtime()[0:6])
+                date = date[2:]
+                #date = "180916,025723"
+                GPS_type = "V"
+                latitude = "0.000000,N"
+                longitude = "0.000000,E"
+                speed = "0.00"
+                direction = "0.0"
+                high = "100.0"
+                number = "0"
+                precision = "24"
+                if msg[0] :#有GPS数据
+                    GPS_type = "A"
+                    # 纬度
+                    latitude = msg[0]["latitude"]
+                    # 经度
+                    longitude = msg[0]["longitude"]
+                    # 速度
+                    speed = msg[0]["speed"]
+                    # 方向
+                    direction = "0"
+                    if msg[0]["direction"] :
+                        direction = msg[0]["direction"]
+                    # 高度
+                    high = msg[0]["high"]
+                    high_tmp = high.split(".")
+                    if len(high_tmp) >= 2 :
+                        high = "%s"%(high_tmp[0])
+                    # 讯号质量:搜索到的卫星数目
+                    number = msg[0]["number"]
+                    precision = msg[0]["precision"]
+                    #date = msg[0]["date"]
+                
+                #gsm 信号强度
+                gsm_sig =  str((100//31)*EventMesh.publish("screen_get_sig"))
+                # 电池电量百分比 
+                bat_tmp = EventMesh.publish("screen_get_battery")
+                battery_caption =  str(bat_tmp[1])
+                #步数
+                old_step = 0
+                step = 0
+                step = EventMesh.publish("get_old_step_value")
+                if step != 0:
+                    tmp_data  = EventMesh.publish("get_storage_config","old_step_new")
+                    if tmp_data != None:
+                        old_step = tmp_data
+                    if old_step !=  step:
+                        EventMesh.publish("set_storage_config",["old_step",step])
+                        EventMesh.publish("set_storage_config",["old_step_new",step])
+                        
+                old_step = step
+                # step = str(EventMesh.publish(constants.EVENT.GET_STEP)[0])
+                #翻转次数
+                turn_count = "0"
+                #终端状态
+                state = "%08X"%(EventMesh.publish("get_dev_state"))
+                #EventMesh.debug_log("TYPE:{}".format(TYPE))
+                if type(TYPE) == list:#队列里的数据有终端状态,则用队里的终端状态
+                    if len(TYPE)>= 2 :
+                        state = "%08X"%(TYPE[1])
+                
+                print("state:{}".format(state))
+                #基站数据
+                CELL_num = len(msg[2])
+                CELL_data = "1," #时延
+                if msg[2] != []:
+                    for CELL in msg[2] :
+                        if CELL[0] == 0 :
+                            CELL_data += "%X,"%(int(CELL[2])) #MCC
+                            CELL_data += str(CELL[3]) +","#MNC
+                            CELL_data += str(CELL[5]) +","#tac,区域码
+                            CELL_data += str(CELL[1]) +","#基站编号 CID
+                            CELL_data += str(int(CELL[7]+140)) +","#信号强度 rssi
+                        else :
+                            CELL_data += str(CELL[5]) +","#tac,区域码
+                            CELL_data += str(CELL[1]) +","#基站编号 CID
+                            CELL_data += str(int(CELL[7]+140)) +","#信号强度 rssi
+                    CELL_data = CELL_data[:(len(CELL_data)-1)]
+                #WIFI数据
+                WIFI_num = 0 
+                WIFI_data = ""
+                if msg[1] :
+                    WIFI_num = msg[1][0]
+                    i = 0
+                    for MAC in msg[1][1] :
+                        WIFI_data += "wifi%d,%s,%d,"%(i,str(MAC[0]),MAC[1])
+                        i += 1
+                    WIFI_data = WIFI_data[:(len(WIFI_data)-1)]
+                WIFI_data = WIFI_data.lower()
+                #send_data = "UD ,%s ,%s     ,%s       ,%s       ,%s   ,%s       ,%s  ,%s    ,%s     ,%s             ,%s  ,%s        ,%s   ,%d     ,%s       ,%d      ,%s"\
+                #              %(date,GPS_type,latitude,longitude,speed,direction,high,number,gsm_sig,battery_caption,step,turn_count,state,CELL_num,CELL_data,WIFI_num,WIFI_data)
+                #定位数据
+                send_data = "%s,%s,%s"%(date,GPS_type,latitude)
+                send_data += ",%s,%s,%s"%(longitude,speed,direction)
+                send_data += ",%s,%s,%s"%(high,number,gsm_sig,)
+                send_data += ",%s,%s,%s"%(battery_caption,step,turn_count)
+                send_data += ",%s,%d,%s"%(state,CELL_num,CELL_data)
+                send_data += ",%d,%s"%(WIFI_num,WIFI_data)
+                send_data+=",%s"%(precision)
+                #EventMesh.debug_log("Location_send2:{} q_size:{}".format(send_data,self.location_queue.size()))
+        
+            
+                #EventMesh.debug_log("Location_send3:{}:{}".format(TYPE,send_data))
+                if type(TYPE) == list:
+                    EventMesh.publish(TYPE[0],send_data)
+                else:
+                    EventMesh.publish(TYPE,send_data)
             else :
                 break
 
@@ -2208,7 +2366,7 @@ class LocationManager(Abstract):
             self.lpm_fd = pm.create_wakelock("test_lock", len("test_lock"))
         pm.wakelock_lock(self.lpm_fd)
         print("location_thread:1")
-        # EventMesh.publish(constants.EVENT.GPSOPEN)
+        EventMesh.publish(constants.EVENT.GPSOPEN)
         print("location_thread:2")
         #self.timer_read_GPS_info.start(1000, 1, self.location_timer)
         print("location_thread:3")
@@ -2232,90 +2390,90 @@ class LocationManager(Abstract):
                     self.location_check_data_timer_count = 0
                     #print(self.location_timer_count)
                     GSV_dict= {}
-                    
-                    # #检查GNSS数据
-                    # if ( self.gps_data == {} or self.location_type == 1) and quecgnss.get_state() == 2:
-
-                    #     pass
-                    #     tmp_ok_count = 0
-                    #     tmp_very_ok_count = 0
-                    #     gsv_data = quecgnss.get_gsv()
-                    #     rmc_data = quecgnss.get_rmc()
-                    #     gga_data = quecgnss.get_gga()
-                    #     vtg_data = quecgnss.get_vtg()
-                    #     # print("gsv:{}".format(quecgnss.get_gsv()))
-                    #     # print("gga:{}".format(quecgnss.get_gga()))
-                    #     # print("rmc:{}".format(quecgnss.get_rmc()))
-                    #     # print("vtg:{}".format(quecgnss.get_vtg())) 
-                    #     for i in range(len(gsv_data)) :
-                            
-                    #         if i % 2 == 0:
-                    #             if i+1 >= len(gsv_data) :
-                    #                 print("gsv_data num error!!")
-                    #                 break
-                    #             GSV_dict[gsv_data[i]] = gsv_data[i+1]
-                    #             #print("type:gsv_data{}".format(type(gsv_data[i+1])))
-                    #             try:
-                    #                 #print("gsv_tmp[i+3]:{}".format(gsv_tmp[i+3]))
-                    #                 if gsv_data[i+1] :
-                    #                     if (gsv_data[i+1])>=20:
-                    #                         tmp_ok_count +=1   
-                    #                     if (gsv_data[i+1])>=30:
-                    #                         tmp_very_ok_count +=1  
-                                            
-                    #             except Exception as e:
-                    #                 usys.print_exception(e)
+                    if self.isOpenGNSS == "1":                    
+                        #检查GNSS数据
+                        if ( self.gps_data == {} or self.location_type == 1) and quecgnss.get_state() == 2:
+
+                            pass
+                            tmp_ok_count = 0
+                            tmp_very_ok_count = 0
+                            gsv_data = quecgnss.get_gsv()
+                            rmc_data = quecgnss.get_rmc()
+                            gga_data = quecgnss.get_gga()
+                            vtg_data = quecgnss.get_vtg()
+                            # EventMesh.debug_log("gsv:{}".format(quecgnss.get_gsv()))
+                            # EventMesh.debug_log("gga:{}".format(quecgnss.get_gga()))
+                            # EventMesh.debug_log("rmc:{}".format(quecgnss.get_rmc()))
+                            # EventMesh.debug_log("vtg:{}".format(quecgnss.get_vtg())) 
+                            for i in range(len(gsv_data)) :
                                 
-                    #     if(tmp_ok_count > self.GSV_sig_ok_count ):
-                    #         self.GSV_sig_ok_count = tmp_ok_count
-                    #     if(tmp_very_ok_count > self.GSV_sig_very_ok_count ):
-                    #         self.GSV_sig_very_ok_count = tmp_very_ok_count
-                    #     match_rmc_data = rmc_data.split(",")
-                    #     if len (match_rmc_data)>3: #有rmc数据
-                    #              if match_rmc_data[2] == 'A':    
-                    #                 match_gga_data = gga_data.split(",")
-                    #                 if len(match_gga_data) >4: #数据全
-                    #                     match_vtg_data = vtg_data.split(",")
-                    #                     gps_date = "%s,%s"%(match_rmc_data[9],match_rmc_data[1][:6])#日期
-                    #                     #gps_data_tmp = self.gps.read_coordinates(gnss_r_data[1])
-                    #                     latitude = "0,N" #纬度
-                    #                     latitude_tmp = str(self.GxGGA_latitude(gga_data)).split(".")
-                    #                     if len(latitude_tmp) >= 2 and len(latitude_tmp[1])>=5:
-                    #                         latitude = "%s.%s"%(latitude_tmp[0],latitude_tmp[1][:6])
-                    #                         latitude = "%s,%s"%(latitude,match_rmc_data[4] )
-
-                    #                     longitude = "0,E"#经度
-                    #                     longitude_tmp = str(self.GxGGA_longitude(gga_data)).split(".")
-                    #                     if len(longitude_tmp) >= 2 and len(longitude_tmp[1])>=5:
-                    #                         longitude = "%s.%s"%(longitude_tmp[0],longitude_tmp[1][:6])
-                    #                         longitude = "%s,%s"%(longitude,match_rmc_data[6] ) #match_rmc_data[6] + str(gnss_r_data[1])
-                                        
-                    #                     high = "0"#高度
-                    #                     high = str(self.GxGGA_altitude(gga_data))
-                    #                     number = "0"#可用卫星
-                    #                     precision = "5.8"#精度
-                    #                     if len(match_gga_data)>5 :
-                    #                         if match_gga_data[7]:
-                    #                             number = match_gga_data[7]
-                    #                         if match_gga_data[8]:
-                    #                             precision = match_gga_data[8]
-                    #                     direction = "249.5" #方向
-                    #                     speed = '0.00'    #速度    
-                    #                     if(len(match_vtg_data)>5 ):
-                    #                         if match_vtg_data[1]:
-                    #                             direction =  match_vtg_data[1]
-                    #                         if match_vtg_data[7]:    
-                    #                             speed =  match_vtg_data[7]
-                    #                     self.gps_data = {
-                    #                         "latitude": latitude,
-                    #                         "longitude": longitude,
-                    #                         "high": high,
-                    #                         "direction": direction,
-                    #                         "speed": speed,
-                    #                         "number": number, 
-                    #                         "date":  gps_date,
-                    #                         "precision":  precision
-                    #                     }
+                                if i % 2 == 0:
+                                    if i+1 >= len(gsv_data) :
+                                        # EventMesh.debug_log("gsv_data num error!!")
+                                        break
+                                    GSV_dict[gsv_data[i]] = gsv_data[i+1]
+                                    #EventMesh.debug_log("type:gsv_data{}".format(type(gsv_data[i+1])))
+                                    try:
+                                        #EventMesh.debug_log("gsv_tmp[i+3]:{}".format(gsv_tmp[i+3]))
+                                        if gsv_data[i+1] :
+                                            if (gsv_data[i+1])>=20:
+                                                tmp_ok_count +=1   
+                                            if (gsv_data[i+1])>=30:
+                                                tmp_very_ok_count +=1  
+                                                
+                                    except Exception as e:
+                                        usys.print_exception(e)
+                                    
+                            if(tmp_ok_count > self.GSV_sig_ok_count ):
+                                self.GSV_sig_ok_count = tmp_ok_count
+                            if(tmp_very_ok_count > self.GSV_sig_very_ok_count ):
+                                self.GSV_sig_very_ok_count = tmp_very_ok_count
+                            match_rmc_data = rmc_data.split(",")
+                            if len (match_rmc_data)>3: #有rmc数据
+                                    if match_rmc_data[2] == 'A':    
+                                        match_gga_data = gga_data.split(",")
+                                        if len(match_gga_data) >4: #数据全
+                                            match_vtg_data = vtg_data.split(",")
+                                            gps_date = "%s,%s"%(match_rmc_data[9],match_rmc_data[1][:6])#日期
+                                            #gps_data_tmp = self.gps.read_coordinates(gnss_r_data[1])
+                                            latitude = "0,N" #纬度
+                                            latitude_tmp = str(self.GxGGA_latitude(gga_data)).split(".")
+                                            if len(latitude_tmp) >= 2 and len(latitude_tmp[1])>=5:
+                                                latitude = "%s.%s"%(latitude_tmp[0],latitude_tmp[1][:6])
+                                                latitude = "%s,%s"%(latitude,match_rmc_data[4] )
+
+                                            longitude = "0,E"#经度
+                                            longitude_tmp = str(self.GxGGA_longitude(gga_data)).split(".")
+                                            if len(longitude_tmp) >= 2 and len(longitude_tmp[1])>=5:
+                                                longitude = "%s.%s"%(longitude_tmp[0],longitude_tmp[1][:6])
+                                                longitude = "%s,%s"%(longitude,match_rmc_data[6] ) #match_rmc_data[6] + str(gnss_r_data[1])
+                                            
+                                            high = "0"#高度
+                                            high = str(self.GxGGA_altitude(gga_data))
+                                            number = "0"#可用卫星
+                                            precision = "5.8"#精度
+                                            if len(match_gga_data)>5 :
+                                                if match_gga_data[7]:
+                                                    number = match_gga_data[7]
+                                                if match_gga_data[8]:
+                                                    precision = match_gga_data[8]
+                                            direction = "249.5" #方向
+                                            speed = '0.00'    #速度    
+                                            if(len(match_vtg_data)>5 ):
+                                                if match_vtg_data[1]:
+                                                    direction =  match_vtg_data[1]
+                                                if match_vtg_data[7]:    
+                                                    speed =  match_vtg_data[7]
+                                            self.gps_data = {
+                                                "latitude": latitude,
+                                                "longitude": longitude,
+                                                "high": high,
+                                                "direction": direction,
+                                                "speed": speed,
+                                                "number": number, 
+                                                "date":  gps_date,
+                                                "precision":  precision
+                                            }
 # ***********************************************************************************
 
 
@@ -2326,7 +2484,7 @@ class LocationManager(Abstract):
                 #检查基站数据
                 if self.cell_data == []:   
                     data_tmp = net.getCellInfo()
-                    if(len(str(data_tmp))>=2):
+                    if(len(data_tmp)>=2):
                         for cell in data_tmp:
                             if cell and cell[0][0] == 0 and len(cell[0]) > 1:
                                 self.cell_data = cell
@@ -2345,12 +2503,13 @@ class LocationManager(Abstract):
                 elif self.location_type == 0: #正常模式     
                     if self.gps_data  != {} or self.location_timer_count > 100: #or( self.wifi_data != [] and self.cell_data != []): 
                         if self.location_queue.empty() == False:#有定位队列
-                            EventMesh.txt_log("LOCATION timer:{} ok:{} very_ok:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GSV_sig_very_ok_count))   
+                            pass
+                            #EventMesh.txt_log("LOCATION timer:{} ok:{} very_ok:{}".format(self.location_timer_count,self.GSV_sig_ok_count))   
                             #EventMesh.txt_log("LOCATION:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
                         if self.gps_data  == {}: #定位超时,且信噪比多个大于30,下次启动agps
                             if self.GSV_sig_very_ok_count > 3:#3个超30以上
                                 self.start_agps = 1
-                                EventMesh.txt_log("open agps:{}".format(GSV_dict))
+                                #EventMesh.txt_log("open agps:{}".format(GSV_dict))
                         #upload_time = EventMesh.publish("get_upload_data")    
                         self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
                         #if upload_time > 200  : 
@@ -2359,28 +2518,21 @@ class LocationManager(Abstract):
                         #     self.location_timer_count = 0
                         #     self.GSV_sig_ok_count = 0
                             
+                        
 
-                    if  self.wifi_data != [] and self.cell_data != [] : #
-                        EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位   
-                        EventMesh.txt_log("GSV_sig_ok_count<3:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
-                        self.Location_send([self.gps_data,self.wifi_data,self.cell_data])    
-                    # if self.GSV_sig_ok_count <= 1 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 20: #超过40秒且信号大于30的不足3个
-                    #     EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位   
-                    #     EventMesh.txt_log("GSV_sig_ok_count<3:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
-                    #     self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
-                        #break
-                # if self.location_type != 1 and self.location_timer_count >= 60*4 : #4分钟关闭
-                #     EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
-                    #break
-                #EventMesh.txt_log("self.GSV_sig_ok_count :{}".format(self.GSV_sig_ok_count))
-                #EventMesh.publish("set_old_step_value",self.location_timer_count)
-                
-                #print("location_timer_count:{}".format(self.location_timer_count))
+                        
+                    if (self.isOpenGNSS != "1" or (self.GSV_sig_ok_count <= 1 and self.location_timer_count > 20)) and self.wifi_data != [] and self.cell_data != [] : #超过40秒且信号大于30的不足3个
+                        EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 
+                        print("Location_send:CLOSE_LOCATION")  
+                        #EventMesh.txt_log("GSV_sig_ok_count<3:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
+                        self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
+
+             
                 
             except Exception as e:
                 usys.print_exception(e)
                 EventMesh.txt_log("location_thread:ERROR:".format(e))
-                #print("location_thread:ERROR:{}".format(usys.print_exception(e)))
+                #EventMesh.debug_log("location_thread:ERROR:{}".format(usys.print_exception(e)))
                 print("self.gps_data{},self.wifi_data{},self.cell_data{}".format(self.gps_data,self.wifi_data,self.cell_data))
                 #self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
                 EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 
@@ -2748,7 +2900,8 @@ 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): 
         step = EventMesh.publish(constants.EVENT.GET_STEP)
@@ -3024,8 +3177,8 @@ class getStorageDataManager(Abstract):#获取内存数据
         
 
     def set_storage_save(self, data): 
-            with open("/ext/static/storage_file/config.json",'w+',encoding="utf-8") as fd:
-                ujson.dump(self.config_data,fd)
+        with open("/ext/static/storage_file/config.json",'w+',encoding="utf-8") as fd:
+            ujson.dump(self.config_data,fd)
     def get_storage_data(self, event, msg): 
         # print("get_storage_data:{}".format(self.config_data))
         return self.config_data 
@@ -3033,7 +3186,7 @@ class getStorageDataManager(Abstract):#获取内存数据
         # print("get_storage_key_data1:{}".format(msg))
         b = msg in self.config_data.keys()
         if b == True:
-            print("get_storage_key_data2:{}".format(self.config_data[msg]))
+            # print("get_storage_key_data2:{}".format(self.config_data[msg]))
             return self.config_data[msg]
         else :
             return None
@@ -3139,9 +3292,15 @@ class getSosFlagManager(Abstract):#设置sos
        
         if self.sos_flag == 1:
             number = EventMesh.publish("get_dial_sos_number")
-           
+
             if number != None:
                 if len(number) > 0:
+                    sos_state =  EventMesh.publish("get_dev_state")
+                    tmp = 1 << 16
+                    sos_state = sos_state|tmp #第16位=1
+                    EventMesh.publish("set_dev_state",sos_state)
+
+                    EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
                     EventMesh.publish("save_phonename",number[0])
                     EventMesh.publish("save_phonenum",number[0])
                     EventMesh.publish("set_sos_num",0)
@@ -3149,14 +3308,22 @@ class getSosFlagManager(Abstract):#设置sos
                     #voiceCall.callStart(str(number[0]))
 
     def set_callnumer_cb(self, event, msg):
+
         self.callnumer = msg
-        self.call_timer.start(10000, 0, self.call_timer_cb)#延迟10S 继续拨打
+        self.call_timer.start(8000, 0, self.call_timer_cb)#延迟8S 继续拨打
 
     def call_timer_cb(self, *args, **kwargs):
-        # print("call_timer_cb:{}".format(self.callnumer))
-        EventMesh.publish("save_phonename",str(self.callnumer))
-        EventMesh.publish("save_phonenum",str(self.callnumer))
-        EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})  
+        if self.sos_flag == 1:
+            sos_state =  EventMesh.publish("get_dev_state")
+            tmp = 1 << 16
+            sos_state = sos_state|tmp #第16位=1
+            EventMesh.publish("set_dev_state",sos_state)
+
+            EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
+            # print("call_timer_cb:{}".format(self.callnumer))
+            EventMesh.publish("save_phonename",str(self.callnumer))
+            EventMesh.publish("save_phonenum",str(self.callnumer))
+            EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})  
 
     def get_sos_flag(self, event, msg): 
         return self.sos_flag
@@ -3332,13 +3499,13 @@ class schoolclassManager(Abstract):#
         
 
     def post_processor_after_instantiation(self):
-        EventMesh.subscribe("set_schoolname", self.set_school_name)#设置关机时间
+        EventMesh.subscribe("set_schoolname", self.set_school_name)#
         EventMesh.subscribe("get_schoolname", self.get_school_name)
 
-        EventMesh.subscribe("set_classname", self.set_classname)#设置关机时间
+        EventMesh.subscribe("set_classname", self.set_classname)#
         EventMesh.subscribe("get_classname", self.get_classname)
 
-        EventMesh.subscribe("set_fullname", self.set_full_name)#设置关机时间
+        EventMesh.subscribe("set_fullname", self.set_full_name)#
         EventMesh.subscribe("get_fullname", self.get_full_name)
 
     def set_school_name(self, event, msg): 
index 7586d85..259ddf5 100644 (file)
@@ -479,7 +479,7 @@ class PING_ProtoCol(ProtoCol):
 class KA_ProtoCol(ProtoCol):
     """心跳"""
     TYPE = "KA"
-
+    roll_count = 0
     def send(self, event, msg):
         #"{:04d}-{:02d}-{:02d}".format(*utime.localtime()[0:3])
         #[XT*YYYYYYYYYYYYYYY*LEN*KA,日期,步数,翻滚次数,电量百分数,车载里程数(km)] 实例:[XT*334588000000156*0014*KA,120414,50,100,100,100.12]
@@ -505,8 +505,33 @@ class KA_ProtoCol(ProtoCol):
         # step = EventMesh.publish(constants.EVENT.GET_STEP)[0]
         # 电池电量百分比 
         bat_tmp = EventMesh.publish("screen_get_battery")
+        sleep_time = EventMesh.publish("get_storage_config","sleep_time")
+        if sleep_time != None:
+            if len(sleep_time) != 0:
+                hour = utime.localtime()[3]
+                min = utime.localtime()[4]
+                cur_time = hour*60+min
+                start_hour = int(sleep_time["start_hour"])
+                start_min = int(sleep_time["start_min"])
+                start_total = start_hour*60+start_min
+
+                end_hour = int(sleep_time["end_hour"])
+                end_min = int(sleep_time["end_min"])
+                end_total = end_hour*60+end_min
+                # EventMesh.debug_log("ka roll_:",hour,min,cur_time,start_total,end_total)
+                if cur_time >= start_total and cur_time <= end_total:
+                    self.roll_count = int(hour)
+                    if self.roll_count == 0:
+                        self.roll_count+=1
+                else:
+                    self.roll_count = 0
+            else:
+                self.roll_count = 0
+        else:
+            self.roll_count = 0
+
         battery_caption =  bat_tmp[1]
-        send_data = "KA,%s,%d,%d,%d"%(date,step,0,battery_caption)
+        send_data = "KA,%s,%d,%d,%d"%(date,step,self.roll_count,battery_caption)
         send_len = len(send_data)
 
         send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
@@ -753,101 +778,79 @@ class WT_ProtoCol(ProtoCol):
         EventMesh.publish("set_weather_data",[msg_date,msg_time,msg_weather_content,msg_type,msg_temp,msg_min_temp,msg_max_temp,msg_city,1])
         EventMesh.publish("updata_weather_show")
 
-class REMIND_ProtoCol(ProtoCol):
-    """闹钟数据"""
+class REMIND_ProtoCol(ProtoCol):#普通闹钟
+    """
+    
+    平台发送:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND,,时间1-开关,时间2-开关,周几]
+    实例:[XT*334588000000156*0008*REMIND,,时间1-开关,时间2-开关,周几]
+    终端回复:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND]
+    """
     TYPE = "REMIND"
-
-
+    
     def send(self, event, msg):
-        # [SZKW*867387060319491*0008*REMIND]
         send_data = self.PID+"*%s*0006*REMIND"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-        # print("REMIND_ProtoCol:send:%s"%(data))
+        #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
         # 通过socket发送到服务器端
         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
 
     def recv(self, event, msg):
-        """
-        @param event: 闹钟数据下发
-        @param msg: 接收到的下行数据
-        """
-        # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
-        # print("REMIND_ProtoCol RECV msg:%s"%(msg))
-        alarm_new = []
-
+        # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_tmp = msg_tmp.split('REMIND,')
-        msg_tmp = msg_tmp[1]
-
-        alarm_new  = EventMesh.publish("read_alarminjson")
-        # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
-        k=1
+        msg_tmp_new = msg_tmp.split('REMIND,')[1]
+        msg_tmp_data = msg_tmp.split('REMIND')[1]
         count = 0
+        for i in str(msg_tmp_data):
+            # print("i",i)
+            if i == ",":
+                count+=1
         
-        for i in range(len(str(msg_tmp))):#寻找有多少个,号
-            if msg_tmp[i] == ',':#, , ,
-                k+=1
-        if len(alarm_new) > 2:
-            for i in range(0,len(alarm_new)-2):
-                del alarm_new[2]
-        # print("alarm_new:{}",alarm_new)
-        for j in range(2,2+k):#0 1是开关机,234是闹钟
+        normal_alarm_save = []
+        alarm_day = []
+        alarm_switch = 0
+
+        print("count",count,msg_tmp_new)
+        if count >= 3:
+            count = 3
+        for i in range(0,count):#默认是三个时间多了也不保存
             alarm_day = []
-            alarm_week = []
-            alarm_total_data = []
-            if k == 1:
-                if len(msg_tmp) != 0:
-                    alarm_data = msg_tmp.split('-')#-作为分隔符
-                    alarm_switch = int(alarm_data[1])#开关
-                    alarm_day_num = int(alarm_data[2])#天
-                    alarm_time = alarm_data[0]#时间
-                    alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-                    alarm_time_hour = int(alarm_time_tmp[0])
-                    alarm_time_min = int(alarm_time_tmp[1])
-                    if alarm_day_num == 3:
-                        alarm_week = alarm_data[3]#星期
-
-                    if alarm_day_num == 2:#每一天
-                        alarm_day = [1,2,3,4,5,6,0]
-                    elif alarm_day_num == 3:#自定义
-                        for i in range(0,7):
-                            if alarm_week[i] != '0':
-                                alarm_day.append(i)
-                    alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-            else:
-                if len(msg_tmp) != 0:
-                    alarm_total_data = msg_tmp.split(',')[count]
-                    count+=1
-                    b = alarm_total_data.find('-')
-                    if b != -1:
-                        alarm_data = alarm_total_data.split('-')#-作为分隔符
-                        alarm_switch = int(alarm_data[1])#开关
-                        alarm_day_num = int(alarm_data[2])#天
-                        alarm_time = alarm_data[0]#时间
-                        alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-                        alarm_time_hour = int(alarm_time_tmp[0])
-                        alarm_time_min = int(alarm_time_tmp[1])
-                        if alarm_day_num == 3:
-                            alarm_week = alarm_data[3]#星期
-
-                        if alarm_day_num == 2:#每一天
-                            alarm_day = [1,2,3,4,5,6,0]
-                        elif alarm_day_num == 3:#自定义
+            alarm_data = str(msg_tmp_new.split(',')[i])
+            # print("i",i,sleep_data)
+            if len(alarm_data) != 0:
+                b = alarm_data.find('-')
+                if b != -1:
+                    alarm_time = alarm_data.split('-')[0]#-作为分隔符
+                    alarm_switch = int(alarm_data.split('-')[1])#开关
+                    alarm_repeat = int(alarm_data.split('-')[2])#是单次还是每天 还是自定义
+
+                    alarm_hour = int(alarm_time.split(":")[0])#时间
+                    alarm_min = int(alarm_time.split(":")[1])#冒号分隔时间 时 分
+                    
+                    
+                    if alarm_repeat == 2:#每一天
+                        alarm_day = [0,1,2,3,4,5,6]
+                    elif alarm_repeat == 3:#自定义
+                        alarm_day_tmp = alarm_data.split('-')[3]#-作为分隔符
+                        if len(str(alarm_day_tmp)) != 0:
                             for i in range(0,7):
-                                if alarm_week[i] != '0':
+                                if alarm_day_tmp[i] != '0':
                                     alarm_day.append(i)
-                        alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-                        
-        # print("alarm_new end:{}",alarm_new)
+                    else:#单次 1
+                       alarm_day=[] 
+                    # if alarm_switch = 0:
+                    normal_alarm_save.append({"hour":alarm_hour,"min":alarm_min,"day":alarm_day,"enable":alarm_switch})
         
-        with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
-            ujson.dump(alarm_new,fd)
+        EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm_save])
+        normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+
+        print("recv REMIND_SEND:{} normal_alarm ;{}".format(msg,normal_alarm))
+       
+        EventMesh.publish(constants.PROTOCOL.REMIND_SEND)   
         EventMesh.publish("push_update_alarm_show")
-        
-        # EventMesh.publish("add_alarm",[0,msg_tmp])
-        EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
 
 
 class HRSTART_ProtoCol(ProtoCol):
@@ -1494,28 +1497,35 @@ class Time_ProtoCol(ProtoCol):
         #EventMesh.publish(constants.PROTOCOL.TIME_SEND)  
 
 
-#拒接模式来电
-class WLKEY_ProtoCol(ProtoCol):
-    """"""
+class WLKEY_ProtoCol(ProtoCol):#白名单开关
+    """
+    白名单开关
+    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY,ONOFF]  ONOFF: 1:开启,0:关闭,2:30秒后自动接听。
+    实例:[XT*334588000000156*0008*WLKEY,1]
+    终端回复
+    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY]
+    实例:[XT*334588000000156*0006*WLKEY]
+    """
     TYPE = "WLKEY"
+    
     def send(self, event, msg):
-        # [XT*334588000000156*0005*WLKEY]
-        send_data = self.PID+"*%s*0005*WLKEY"%(self.imei)
+        send_data = self.PID+"*%s*00006*WLKEY"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-        # print("WLKEY:data:%s"%(data))
-        # print("WLKEY!!!!!!!!!!!!!")
+        #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
         # 通过socket发送到服务器端
-        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
 
     def recv(self, event, msg):
-        """
-        @param event:
-        @param msg: 接收到的下行数据
-        """
-        # b'[SZKW*867387060319166*000A*KEYBRD]'
-        # print("WLKEY!!!!!!!!!!!!!",msg)
-        EventMesh.publish(constants.PROTOCOL.WLKEY_SEND)  
+
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_data = msg_tmp.split(',')
+        print("WLKEY_ProtoCol".format(msg_data[1]))
+        EventMesh.publish("set_storage_config",["WLKEY",str(msg_data[1])])
+        
+
+        EventMesh.publish(constants.PROTOCOL.WLKEY_SEND) 
 
 #免打扰
 class SILENCETIMEFS_ProtoCol(ProtoCol):#云米
@@ -1776,6 +1786,240 @@ class SCREEN_SHOWProtoCol(ProtoCol):
 
         EventMesh.publish(constants.PROTOCOL.SCREEN_SHOW_SEND)  
 
+class FALLDOWN_ProtoCol(ProtoCol):
+    """
+    跌倒提醒开关
+    服务器下发跌倒报警设置命令
+    [XT*334588000000156*LEN*FALLDOWN,ONOFF]
+    ONOFF: 1:开启,0:关闭。
+    终端回复
+    [XT*334588000000156*LEN*FALLDOWN]
+    """
+    TYPE = "FALLDOWN"
+    
+    def send(self, event, msg):
+       
+        #[XT*334588000000156*LEN*FALLDOWN]
+        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))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+        """
+        [SZKW*860132060341484*000A*FALLDOWN,1]
+        """
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_data = msg_tmp.split(',')
+        
+        Falldowm = str(msg_data[1])
+        # EventMesh.debug_log("FALLDOWN:{}".format(Falldowm))
+        EventMesh.publish("set_storage_config",["fall_sw",Falldowm])
+
+        EventMesh.publish(constants.PROTOCOL.FALLDOWN_SEND)
+class REMOVE_ProtoCol(ProtoCol):
+    """
+    取下手环报警开关
+    平台发送:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMOVE,0或者1]
+    实例:[XT*334588000000156*0008*REMOVE,1]
+    终端回复:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMOVE]
+    """
+    TYPE = "REMOVE"
+    
+    def send(self, event, msg):
+        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))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_data = msg_tmp.split(',')
+        remove_sw = str(msg_data[1])
+        # EventMesh.debug_log("REMOVE:{}".format(remove_sw))
+        EventMesh.publish("set_storage_config",["remove_sw",remove_sw])
+        EventMesh.publish(constants.PROTOCOL.REMOVE_SEND)   
+
+class HELP_ProtoCol(ProtoCol):
+    """
+一键报警
+    [XT*YYYYYYYYYYYYYYY*LEN*HELP,状态]
+    状态值为整数:60或不带默认是普通报警,61光电式感烟火灾报警,62检测环境温度(高温报警,温度变化报警),
+    63人体活动检测报警,64电池欠压提醒功能,65设备脱落提醒功能,66离线报警,67测试报警,123气感报警,
+    124烟感报警,125水浸报警
+    实例:
+    [XT*334588000000156*0004*HELP,60]
+    """
+    TYPE = "HELP"
+    
+    def send(self, event, msg):
+        #[XT*334588000000156*LEN*FALLDOWN]
+        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))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+        """
+        [XT*334588000000156*0004*HELP,60]
+        """
+
+        pass   
+
+class AL_ProtoCol(ProtoCol):
+    """报警数据上报"""
+    TYPE = "AL"
+    timer_repetition_send = None
+    repetition_queue = None
+
+    def send(self, event, msg):
+        if self.timer_repetition_send == None:
+            self.timer_repetition_send = osTimer()
+        if self.repetition_queue == None:
+            self.repetition_queue = Queue(100)
+        
+
+        send_data ="AL,"+msg
+        send_len = len(send_data)
+        #wt_data = "%s"%(send_data)
+        send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
+        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,"AL")
+        
+        MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        #EventMesh.debug_log("AL_ProtoCol:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+        self.repetition_queue.put(data)#发送入队
+        self.timer_repetition_send.start(10000, 1, self.repetition_timer_cb)
+        EventMesh.publish("set_dev_state",0)
+    def recv(self, event, msg):
+        """
+
+        @param event: PING
+        @param msg: 接收到的下行数据
+        """
+        #EventMesh.publish(constants.PROTOCOL.CR_SEND)
+        #EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始ud定位
+        print("报警数据上报:recv:%s"%(msg))   
+        #        
+        if self.repetition_queue.empty() == False:
+            self.repetition_queue.get()#出队
+        else:
+            self.timer_repetition_send.stop()
+
+    def repetition_timer_cb(self, *args, **kwargs):#每隔10秒发送一次
+        if self.repetition_queue.empty() == False:
+            data = self.repetition_queue.get()#出队
+            self.repetition_queue.put(data)#发送入队
+            EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+        else:
+            self.timer_repetition_send.stop()
+
+
+# 平台发送:
+# [XT*YYYYYYYYYY*LEN*SLEEPTIME,时间段]
+# 实例:[XT*5678901234*0014*SLEEPTIME,23:30-7:30]
+# 终端回复:
+# [XT*YYYYYYYYYY*LEN*SLEEPTIME]
+# 实例:[XT*5678901234*0009*SLEEPTIME]
+# 说明: 设置翻滚检测的时间段范围.如果时间段为空,即[XT*5678901234*0014*SLEEPTIME,],表示睡眠翻滚监测功能关。
+# 在此时间段内,开启翻滚检查,默认开启时翻滚次数为0,在此时间段内累计翻滚次数,并通过心跳接口上传。翻滚时间段结束,则停止翻滚检查,心跳接口的翻滚次数可置0。
+class SLEEPTIME_ProtoCol(ProtoCol):#睡眠时间
+    """
+    
+    平台发送:
+    [XT*YYYYYYYYYY*LEN*SLEEPTIME,时间段]
+    实例:[XT*5678901234*0014*SLEEPTIME,23:30-7:30]
+    终端回复:
+    [XT*YYYYYYYYYY*LEN*SLEEPTIME]
+    实例:[XT*5678901234*0009*SLEEPTIME]
+    说明: 设置翻滚检测的时间段范围.如果时间段为空,即[XT*5678901234*0014*SLEEPTIME,],表示睡眠翻滚监测功能关。
+    在此时间段内,开启翻滚检查,默认开启时翻滚次数为0,在此时间段内累计翻滚次数,并通过心跳接口上传。翻滚时间段结束,则停止翻滚检查,心跳接口的翻滚次数可置0。
+    """
+    TYPE = "SLEEPTIME"
+    
+    def send(self, event, msg):
+        send_data = self.PID+"*%s*00009*SLEEPTIME"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        # EventMesh.debug_log("SLEEPTIME:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+        # 实例:[XT*5678901234*0014*SLEEPTIME,23:30-7:30]
+        # EventMesh.debug_log("SLEEPTIME!!!!!!!!!")
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_data = msg_tmp.split(',')[1]
+        data = {}
+        if len(msg_data) == 0:
+            EventMesh.publish("set_storage_config",["sleep_time",data])
+            pass
+        else:
+            sleep_start = msg_data.split("-")[0]
+            sleep_end = msg_data.split("-")[1]
+            start_hour = int(sleep_start.split(":")[0])
+            start_min = int(sleep_start.split(":")[1])
+
+            end_hour = int(sleep_end.split(":")[0])
+            end_min = int(sleep_end.split(":")[1])
+
+            data = {"start_hour":start_hour,"start_min":start_min,"end_hour":end_hour,"end_min":end_min}
+            # EventMesh.debug_log("SLEEPTIME".format(data))
+            EventMesh.publish("set_storage_config",["sleep_time",data])
+            # sleep_time = EventMesh.publish("get_storage_config","sleep_time")
+            # EventMesh.debug_log("sleep_time:{}".format(sleep_time))
+
+        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]"%(str(MD5_SIGN),send_data)
+        # 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("app_factory_cb")
+        EventMesh.publish(constants.PROTOCOL.FACTORY_SEND) 
+        # EventMesh.publish("app_factory",None)#app恢复出厂
+
 
 
 
index 927e183..4fc9ad7 100644 (file)
@@ -281,7 +281,7 @@ class Screen(Abstract):
     def publish_message_event(self,data):
         EventMesh.publish("publish_message_event_ui", data)
 
-PHONE_CALL_MAX_DATA = 22
+PHONE_CALL_MAX_DATA = 18
 
 phone_line_points = [{"x":0,"y":0},{"x":0,"y":40}]
 phone_screen = None
@@ -305,7 +305,7 @@ phone_contact = None
 phone_contact_btn = None
 phone_delete = None
 phone_delete_btn = None
-
+phone_label_maxnum = None
 class PhoneScreen(Screen):
     NAME = "Phone"
 
@@ -321,12 +321,14 @@ class PhoneScreen(Screen):
         self.count = 0
         self.zero_button = 0
         self.is_sliding = 0
+
+        self.max_time = osTimer()
     
 
     def initialization(self):
         self.phone_num=''
         self.phone_list = []
-        global phone_screen ,phone_line,phone_label,phone_one,phone_two,phone_three,phone_four,phone_five,phone_six,phone_seven,phone_eight,phone_nine,phone_start,\
+        global phone_screen ,phone_label_maxnum,phone_line,phone_label,phone_one,phone_two,phone_three,phone_four,phone_five,phone_six,phone_seven,phone_eight,phone_nine,phone_start,\
         phone_zero,phone_hash,phone_call,phone_call_btn,phone_contact,phone_contact_btn,phone_delete,phone_delete_btn
         self.is_sliding = 0
 
@@ -342,6 +344,7 @@ class PhoneScreen(Screen):
             phone_line.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
             phone_line.add_style(style_line,0)
 
+
             phone_label = lv.label(phone_screen)
             phone_label.set_pos(0, 24)
             phone_label.set_size(0, 48)
@@ -350,6 +353,8 @@ class PhoneScreen(Screen):
             phone_label.set_long_mode(lv.label.LONG.CLIP)
             phone_label.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
 
+            
+
             phone_one = lv.img(phone_screen)#1
             phone_one.set_src("E:/static/IMAGE_NUMBER_KEY1_ICON.png")
             phone_one.add_flag(lv.obj.FLAG.CLICKABLE)
@@ -470,6 +475,16 @@ class PhoneScreen(Screen):
             phone_delete_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             phone_delete_btn.set_pos(161, 234)
 
+
+            phone_label_maxnum = lv.label(phone_screen)
+            phone_label_maxnum.set_pos(0, 120)
+            phone_label_maxnum.set_size(240, 48)
+            phone_label_maxnum.set_text("位数超过最大18个")
+            phone_label_maxnum.add_style(style_font_youyuan_20_red, lv.PART.MAIN | lv.STATE.DEFAULT)
+            phone_label_maxnum.set_long_mode(lv.label.LONG.CLIP)
+            phone_label_maxnum.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
+            phone_label_maxnum.add_flag(lv.obj.FLAG.HIDDEN)
+
             self.meta = phone_screen
 
             phone_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)),
@@ -557,7 +572,7 @@ class PhoneScreen(Screen):
             # phone_hash.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hash(e)),
             #                             lv.EVENT.CLICKED, None)
             
-
+        phone_label_maxnum.add_flag(lv.obj.FLAG.HIDDEN)
         self.phone_num=''
         self.phone_list = []
         self.count = 0
@@ -582,13 +597,16 @@ class PhoneScreen(Screen):
         self.count+=1
     
     def one(self,e):
+        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
+            self.show_maxnum_warin()
+            return
         self.phone_list.append("1")                
         self.phone_num = ''.join(self.phone_list)
         self.show_num()
     
     def two(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
+            self.show_maxnum_warin()
             return
         self.phone_list.append("2")                
         self.phone_num = ''.join(self.phone_list)
@@ -596,7 +614,7 @@ class PhoneScreen(Screen):
 
     def three(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
+            self.show_maxnum_warin()
             return
         self.phone_list.append("3")                
         self.phone_num = ''.join(self.phone_list)
@@ -604,7 +622,7 @@ class PhoneScreen(Screen):
 
     def four(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
+            self.show_maxnum_warin()
             return
         self.phone_list.append("4")                
         self.phone_num = ''.join(self.phone_list)
@@ -612,7 +630,7 @@ class PhoneScreen(Screen):
 
     def five(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
+            self.show_maxnum_warin()
             return
         self.phone_list.append("5")                
         self.phone_num = ''.join(self.phone_list)
@@ -620,7 +638,7 @@ class PhoneScreen(Screen):
 
     def six(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
+            self.show_maxnum_warin()
             return
         self.phone_list.append("6")                
         self.phone_num = ''.join(self.phone_list)
@@ -636,6 +654,7 @@ class PhoneScreen(Screen):
     def seven_release(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
             self.zero_button = 0
+            self.show_maxnum_warin()
             return
         if self.zero_button == 1:
             self.phone_list.append("*")   
@@ -647,7 +666,7 @@ class PhoneScreen(Screen):
 
     def eight(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
+            self.show_maxnum_warin()
             return
         self.phone_list.append("8")                
         self.phone_num = ''.join(self.phone_list)
@@ -662,6 +681,7 @@ class PhoneScreen(Screen):
     def nine_release(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
             self.zero_button = 0
+            self.show_maxnum_warin()
             return
         if self.zero_button == 1:
             self.phone_list.append("#")   
@@ -681,6 +701,7 @@ class PhoneScreen(Screen):
     def zero_release(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
             self.zero_button = 0
+            self.show_maxnum_warin()
             return
         if self.zero_button == 1:
             self.phone_list.append("+")   
@@ -689,7 +710,16 @@ class PhoneScreen(Screen):
         self.zero_button = 0
         self.phone_num = ''.join(self.phone_list)
         self.show_num()
-        
+    
+    def show_maxnum_warin(self):
+        phone_label_maxnum.clear_flag(lv.obj.FLAG.HIDDEN)
+        self.max_time.start(1*1000,0,self.show_maxnum_warin_cb)
+
+        pass
+
+    def show_maxnum_warin_cb(self,*argc):
+        phone_label_maxnum.add_flag(lv.obj.FLAG.HIDDEN)
+        pass
 
     def pressed_start(self,e):
         self.button = 1
@@ -701,7 +731,8 @@ class PhoneScreen(Screen):
 
     def endpressed_start(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            #self.phone_list.pop(0)
+            self.button = 0
+            self.show_maxnum_warin()
             return
   
         if self.button == 1:#长按
@@ -714,7 +745,8 @@ class PhoneScreen(Screen):
     
     def hash(self,e):
         if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            #self.phone_list.pop(0)
+
+            self.show_maxnum_warin()
             return
         self.phone_list.append("#")                
         self.phone_num = ''.join(self.phone_list)
@@ -1391,7 +1423,7 @@ class NoSimPowerScreen(Screen):#
             no_sim_power_screen_label = lv.label(no_sim_power_screen)
             no_sim_power_screen_label.set_pos(0, 135)
             no_sim_power_screen_label.set_size(LCD_SIZE_W, 40)
-            no_sim_power_screen_label.set_text("是否关机?")
+            no_sim_power_screen_label.set_text("是否关机?")
             no_sim_power_screen_label.set_long_mode(lv.label.LONG.WRAP)
             no_sim_power_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             no_sim_power_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -1514,7 +1546,7 @@ class NoSimAutoScreen(Screen):#无sim卡是否关机
             no_sim_auto_screen_label = lv.label(no_sim_auto_screen)
             no_sim_auto_screen_label.set_pos(0, 150)
             no_sim_auto_screen_label.set_size(LCD_SIZE_W, 40)
-            no_sim_auto_screen_label.set_text("是否关机?")
+            no_sim_auto_screen_label.set_text("是否关机?")
             no_sim_auto_screen_label.set_long_mode(lv.label.LONG.WRAP)
             no_sim_auto_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             no_sim_auto_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -2050,7 +2082,7 @@ class MessageFullScreen(Screen):
             message_full_label = lv.label(message_full_screen)
             message_full_label.set_pos(0, 100)
             message_full_label.set_size(LCD_SIZE_W, 50)
-            message_full_label.set_text("信息已满,是否清除所有?")
+            message_full_label.set_text("信息已满,是否清除所有?")
             message_full_label.set_long_mode(lv.label.LONG.WRAP)
             message_full_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             message_full_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -2637,7 +2669,7 @@ class MsgDetailScreen(Screen):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "popup"})
+        EventMesh.publish("return_prev_screen")
         
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "popup"})
@@ -2874,6 +2906,7 @@ class IncomingCallScreen(Screen):
         self.number_tmp = {}
         self.meta_type = "popup"
         self.time_count = 0
+        EventMesh.subscribe("answer_auto_event",self.answer_auto_event)
         
     def initialization(self):
         self.is_sliding =0
@@ -3050,6 +3083,14 @@ class IncomingCallScreen(Screen):
             voiceCall.callAnswer()
             name = EventMesh.publish("get_phonename")
             EventMesh.publish("load_screen", {"screen": "on_call","meta":str(name)})
+
+    def answer_auto_event(self,event,msg):
+        self.call_timer.stop()
+        self.aud.stop() 
+        EventMesh.publish("set_UI_high_priority", 0)
+        voiceCall.callAnswer()
+        name = EventMesh.publish("get_phonename")
+        EventMesh.publish("load_screen", {"screen": "on_call","meta":str(name)})
                 
 
     def Close(self):
@@ -3833,21 +3874,21 @@ class WeatherScreen(Screen):
             no_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
             weather_tem_label = lv.label(weather_screen)
-            weather_tem_label.set_pos(155, 44)
-            weather_tem_label.set_size(60, 50)
-            weather_tem_label.set_text("_ _")
+            weather_tem_label.set_pos(145, 44)
+            weather_tem_label.set_size(240-145, 50)
+            weather_tem_label.set_text("_ _℃")
             weather_tem_label.set_long_mode(lv.label.LONG.WRAP)
             weather_tem_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             weather_tem_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
             no_weather_degree = lv.img(weather_screen)
-            no_weather_degree.set_pos(200, 40)
+            no_weather_degree.set_pos(205, 40)
             no_weather_degree.set_size(22, 22)
-            no_weather_degree.set_src("U:/static/degree.png")
+            # no_weather_degree.set_src("U:/static/degree.png")
             no_weather_degree.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
             weather_detail_label = lv.label(weather_screen)
-            weather_detail_label.set_pos(155, 80)
+            weather_detail_label.set_pos(145, 80)
             weather_detail_label.set_size(85, 50)
             weather_detail_label.set_text("-/-")
             weather_detail_label.set_long_mode(lv.label.LONG.WRAP)
@@ -3907,17 +3948,12 @@ class WeatherScreen(Screen):
 
                     temp = self.weather_data[4]
                     if temp == None:
-                        no_weather_degree.set_pos(200, 40)
-                        weather_tem_label.set_text("_ _")
+                        weather_tem_label.set_text("_ _℃")
                     else:
-                        if len(temp) > 2:
-                            no_weather_degree.set_pos(218, 40)
-                        else:
-                            no_weather_degree.set_pos(200, 40)
-                        weather_tem_label.set_text("{}".format(temp))
+                        weather_tem_label.set_text("{}℃".format(temp))
 
                     date = self.weather_data[0]
-                    if date != '{}':
+                    if date != {}:
                         date_month = date.split('-')[1]
                         date_day = date.split('-')[2]
                         weather_detail_label.set_text("{}/{}".format(date_month,date_day))#天气更新时间
@@ -3925,24 +3961,22 @@ class WeatherScreen(Screen):
                         weather_detail_label.set_text("-/-")
 
                     city = self.weather_data[7]
-                    if city != '{}':
+                    if city != {}:
                         weather_location_label.set_text("{}".format(city))#城市
                     else:
                         weather_location_label.set_text("--")
                 else:#已联网未获取到天气数据
-                    no_weather_degree.set_pos(200, 40)
                     weather_location_label.set_text(" ")
                     weather_detail_label.set_text("-/-")
-                    weather_tem_label.set_text("_ _")
+                    weather_tem_label.set_text("_ _℃")
 
                     no_connect_label.set_text("未获取网络数据")
                     no_connect_label1.set_text("请稍候重试")
 
             else:
-                no_weather_degree.set_pos(200, 40)
                 weather_location_label.set_text(" ")
                 weather_detail_label.set_text("-/-")
-                weather_tem_label.set_text("_ _")
+                weather_tem_label.set_text("_ _℃")
                 
                 no_weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
                 weather_img.add_flag(lv.obj.FLAG.HIDDEN)
@@ -5421,7 +5455,7 @@ class sosScreen(Screen):
 
 
             sos_screen_label = lv.label(sos_screen)
-            sos_screen_label.set_text("是否拨打求助电话?")
+            sos_screen_label.set_text("是否拨打求助电话?")
             sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             sos_screen_label.set_size(LCD_SIZE_W, 50)
             sos_screen_label.set_pos(0,65)
@@ -5850,6 +5884,9 @@ class restore_confirmScreen(Screen):
         self.count = 0
         self.timer1 = osTimer()
         self.timer2 = osTimer()
+        self.timer3 = osTimer()
+
+        EventMesh.subscribe("app_factory_cb",self.app_factory_cb)
 
     def initialization(self):
         global rrestor_confirm_n_screen ,rrestor_confirm_n_screen_label  
@@ -5883,6 +5920,17 @@ class restore_confirmScreen(Screen):
             EventMesh.publish(constants.PROTOCOL.DLT_SEND)
         self.timer2.start(4000,0,self.timer_cb_threescond)
 
+    def app_factory_cb(self,event,msg):
+        ret = 0
+        ret = ql_fs.path_exists("/ext/static/storage_file")#电话本
+        if ret == True:
+            ql_fs.rmdirs("/ext/static/storage_file")
+            ql_fs.mkdirs("/ext/static/storage_file")
+        EventMesh.publish("alipay_unbind")
+        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂
+            EventMesh.publish(constants.PROTOCOL.DLT_SEND)
+        self.timer3.start(4000,0,self.timer_cb_threescond)
+        pass
 
     def Close(self):
         self.timer1.stop()
@@ -5992,8 +6040,6 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
             EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
         else:
             EventMesh.publish(constants.EVENT.SYSTEM_UP)
-    def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn8_press(self):
         state = EventMesh.publish("get_cur_class_time_state")
@@ -6124,7 +6170,7 @@ class UI(object):
                 self.page_id = ["main_menu"]
             last_screen = self.page_id[int(self.page_count)]
             print("self.page_id",last_screen,msg,self.page_id,self.page_count)
-            if last_screen != msg:
+            if last_screen != msg and (msg in last_screen) == False:
                 self.page_count+=1
                 page_pre = "{}".format(msg)
                 self.page_id.append(page_pre) 
@@ -6436,27 +6482,12 @@ class UI(object):
                     self.lv.img.cache_invalidate_src(None) #清img cache
                     self.lv.img.cache_set_size(16) #开img cache
                     if self.screen.meta_type != "popup": #只要当前界面不是弹窗界面都要保存当前界面
-                        # print('self.screen_prev.NAME6:{} self.screen_old:{}'.format(self.screen_old.NAME,self.screen.NAME))#第一种
-                        # if self.screen_prev_new != self.screen:#screen_prev = setiing  self.screen = imei self.screen_prev = setiing self.screen_prev_new = imei 
-                        #     self.screen_prev = self.screen_prev_new
-                        #     self.screen_last = self.screen_prev_new
-                        #     self.screen_prev_new = self.screen
-                        #     print('self.screen_prev.NAME5:{} self.screen_prev_new:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen_prev_new.NAME,self.screen_old.NAME))
-                        # else:
-                        #     if self.screen_last != None:
-                        #         self.screen_prev = self.screen_last
-                            
-                        #     print('self.screen_prev.NAME4:{} self.screen:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME,self.screen_old.NAME))
-                        # print('self.screen_prev.NAME2:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME))
-
-                        self.screen_prev = self.screen_old #第二种方式
-                        screen_new = msg["screen"]
-                        # print('self.screen_prev.NAME:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME))
-                        if self.screen_prev.NAME != self.screen.NAME:
-                            EventMesh.publish("add_new_screen",screen_new)#保存新的界面用作返回上一级 
-                    # else:
-                    #     if self.screen_prev_new != None:#self.screen_prev = imei self.screen_prev = imei
-                    #         self.screen_prev = self.screen_prev_new
+                        if self.screen_old.meta_type != "popup":#上个界面也不为弹窗界面
+                            self.screen_prev = self.screen_old #第二种方式
+                            screen_new = msg["screen"]
+                            # print('self.screen_prev.NAME:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME))
+                            if self.screen_prev.NAME != self.screen.NAME:
+                                EventMesh.publish("add_new_screen",screen_new)#保存新的界面用作返回上一级 
                 
                 if msg.get("meta"):
                     self.screen.meta_info = msg.get("meta")
index ab4bfd7..fef5c92 100644 (file)
@@ -195,7 +195,6 @@ class HealthScreen(Screen):#健康测量
 temperature_screen = None
 temperature_bg_img = None
 temperature_body_label = None
-temperature_degree_img = None
 temperature_value_label = None
 temperature_wrist_label = None
 temperature_wrist_degree_img = None
@@ -238,7 +237,7 @@ class TemperatureScreen(Screen):
     def initialization(self):
         self.is_sliding =0
         global temperature_screen,temperature_keep_label,temperature_label,temp_reset_btn_img,temp_line1,temp_line2,temp_line3,temp_line4,temp_line5,\
-            temp_line6,temp_line7,temperature_degree_img,temperature_line_bg_img,temperature_done_img ,temperature_start_label,temperature_bpm_label ,temperature_done_label 
+            temp_line6,temp_line7,temperature_line_bg_img,temperature_done_img ,temperature_start_label,temperature_bpm_label ,temperature_done_label 
         if temperature_screen == None:
             temperature_screen = lv.obj()
             print("temp_screen")
@@ -327,9 +326,9 @@ class TemperatureScreen(Screen):
             temp_line7.add_style(style_line_blue,0)
 
             temperature_bpm_label = lv.label(temperature_screen)
-            temperature_bpm_label.set_size(120, 40)
-            temperature_bpm_label.set_pos(100, 238)
-            temperature_bpm_label.set_text("- -")
+            temperature_bpm_label.set_size(240-100, 35)
+            temperature_bpm_label.set_pos(100, 245)
+            temperature_bpm_label.set_text("- -℃")
             temperature_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
             temperature_bpm_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
 
@@ -342,11 +341,6 @@ class TemperatureScreen(Screen):
             temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
 
 
-            temperature_degree_img = lv.img(temperature_screen)
-            temperature_degree_img.set_pos(156, 237)
-            temperature_degree_img.set_size(22, 22)
-            temperature_degree_img.set_src("U:/static/degree.png")
-            temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 
             self.meta = temperature_screen
@@ -354,9 +348,7 @@ class TemperatureScreen(Screen):
                 lv.EVENT.SHORT_CLICKED, None)
             temp_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
                 lv.EVENT.PRESSING, None)
-        size_x = len(str("- -"))*14
-        temperature_degree_img.set_pos(100+size_x, 237)
-        temperature_bpm_label.set_text("- -")
+        temperature_bpm_label.set_text("- -℃")
         temperature_start_label.set_text("正在测量中.")
         
 
@@ -366,7 +358,7 @@ class TemperatureScreen(Screen):
 
     def restart_up(self,e):
 
-        global temperature_done_label,temperature_keep_label,temperature_bpm_label,temperature_start_label,temp_reset_btn_img,temperature_degree_img
+        global temperature_done_label,temperature_keep_label,temperature_bpm_label,temperature_start_label,temp_reset_btn_img
         code = e.get_code()
 
         if code == lv.EVENT.PRESSING:
@@ -378,15 +370,12 @@ class TemperatureScreen(Screen):
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
                 self.is_sliding =0
-                temperature_bpm_label.set_text("- -")
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
+                temperature_bpm_label.set_text("- -℃")
+                
                 temperature_keep_label.set_text("未出值")
                 temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
                 self.point = 0
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("- -")
+                temperature_bpm_label.set_text("- -℃")
                 temperature_start_label.set_text("正在测量中.")
                 EventMesh.publish("set_temp_state",1)
                 EventMesh.publish(constants.EVENT.START_TEMP)
@@ -396,15 +385,11 @@ class TemperatureScreen(Screen):
             self.is_sliding =0
         
     def start_init(self):
-        temperature_bpm_label.set_text("- -")
-        size_x = len(str("- -"))*14
-        temperature_degree_img.set_pos(100+size_x, 237)
+        temperature_bpm_label.set_text("- -℃")
         temperature_keep_label.set_text("未出值")
         temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
         self.point = 0
-        size_x = len(str("- -"))*14
-        temperature_degree_img.set_pos(100+size_x, 237)
-        temperature_bpm_label.set_text("- -")
+        temperature_bpm_label.set_text("- -℃")
         temperature_start_label.set_text("正在测量中.")
         EventMesh.publish("set_temp_state",1)
         EventMesh.publish(constants.EVENT.START_TEMP)
@@ -574,13 +559,9 @@ class TemperatureScreen(Screen):
         # print("self.temp:{}".format(temp))
         if self.point >= 10 :
             if temp != 0 :
-                size_x = len(str(tmp))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("{}".format(tmp))
+                temperature_bpm_label.set_text("{}℃".format(tmp))
             else:
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("- -")
+                temperature_bpm_label.set_text("- -℃")
         
         if self.point%4 == 0 :
             temperature_start_label.set_text("正在测量中..")
@@ -623,9 +604,8 @@ class TemperatureScreen(Screen):
             if WEAR == 0:
                 temp = 0
                 temperature_start_label.set_text("佩戴异常,点击重测")
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("- -")
+
+                temperature_bpm_label.set_text("- -℃")
                 temperature_keep_label.set_text(" ")
                 temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
             else :
index 3e7fe7d..ec35a68 100644 (file)
@@ -784,7 +784,7 @@ restore_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 restore_label = lv.label(restore_screen)
 restore_label.set_pos(0, 90)
 restore_label.set_size(240, 70)
-restore_label.set_text("设备所有的数据将会被清除,确定继续吗?")
+restore_label.set_text("设备所有的数据将会被清除,确定继续吗?")
 restore_label.set_long_mode(lv.label.LONG.WRAP)
 restore_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 restore_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -987,7 +987,7 @@ class RestoreScreen(Screen):
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
                 self.is_sliding =0
-                EventMesh.publish("load_screen", {"screen": "setting"})
+                EventMesh.publish("return_prev_screen")
             self.is_sliding =0
     
     def done_left_to_right(self):
@@ -1074,7 +1074,7 @@ poweroff_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 poweroff_img.set_src("E:/static/poweroff_icon.png")
 
 poweroff_label = lv.label(poweroff_screen)
-poweroff_label.set_text("是否关机?")
+poweroff_label.set_text("是否关机?")
 poweroff_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 poweroff_label.set_size(240, 20)
 poweroff_label.set_pos(0,120)
@@ -1693,15 +1693,18 @@ brightness_flip_label.set_text("翻腕亮屏")
 #brightness_flip_label.set_long_mode(lv.label.LONG.WRAP)
 brightness_flip_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 brightness_flip_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+brightness_flip_label.add_flag(lv.obj.FLAG.HIDDEN)
 brightness_flip_sw = lv.switch(brightness_screen)
 brightness_flip_sw.set_pos(140, 240)
 brightness_flip_sw.set_size(80, 39)
+brightness_flip_sw.add_flag(lv.obj.FLAG.HIDDEN)
 
 brightness_flip_label_btn = lv.label(brightness_screen)
 brightness_flip_label_btn.set_pos(135, 235)
 brightness_flip_label_btn.set_size(105, 44)
 brightness_flip_label_btn.set_text(" ")
 brightness_flip_label_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+brightness_flip_label_btn.add_flag(lv.obj.FLAG.HIDDEN)
 
 
 
diff --git a/2.sdk/project/C06S/usr/static/alipay_.png b/2.sdk/project/C06S/usr/static/alipay_.png
deleted file mode 100644 (file)
index d4f435d..0000000
Binary files a/2.sdk/project/C06S/usr/static/alipay_.png and /dev/null differ
diff --git a/2.sdk/project/C06S/usr/static/degree.png b/2.sdk/project/C06S/usr/static/degree.png
deleted file mode 100644 (file)
index 62b467f..0000000
Binary files a/2.sdk/project/C06S/usr/static/degree.png and /dev/null differ
index e3aa0cf..7747eb9 100644 (file)
Binary files a/2.sdk/project/D10/audio.bin and b/2.sdk/project/D10/audio.bin differ
index 0388fc0..41bb477 100644 (file)
@@ -1 +1 @@
-['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
+['R_CALL_mp3']
\ No newline at end of file
index 0a3b2ab..75efd4b 100644 (file)
@@ -45,6 +45,8 @@ class intervManager(Abstract):
         self.sos_timer2 = osTimer()
         self.sos_timer1 = osTimer()
 
+        self.sos_sendtime = osTimer()
+
         self.fall_timer1 = osTimer()
         self.fall_timer2 = osTimer()
 
@@ -777,6 +779,14 @@ class intervManager(Abstract):
                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
                 # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
             else:
+                sos_state =  EventMesh.publish("get_dev_state")
+
+                tmp = 1 << 16
+                sos_state = sos_state|tmp #第21位=1
+                EventMesh.publish("set_dev_state",sos_state)
+
+                EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
+                EventMesh.publish("close_timer_all")#
                 self.sos_phone_num = msg
                 self.sos_timer1.start(2000, 0, self.sos_call_out_phone)
                 self.sos_timer2.start(30000, 0, self.sos_time_out_phone)
@@ -1161,7 +1171,7 @@ class intervManager(Abstract):
     def app_factory(self,event,msg):
         if msg != None:
             number = str(msg)
-            sms.sendPduMsg(number, 'fact# send ok', 'UCS2')
+            sms.sendPduMsg(number, 'factory# send ok', 'UCS2')
         ret = 0
         ret = ql_fs.path_exists("/usr/static/storage_file")#
         if ret == True:
@@ -1179,7 +1189,7 @@ class intervManager(Abstract):
     def app_restart(self,event,msg):#远程发短信重启
         if msg != None:
             number = str(msg)
-            sms.sendPduMsg(number, 'rest# send ok', 'UCS2')
+            sms.sendPduMsg(number, 'reset# send ok', 'UCS2')
         self.restart_timer.start(3*1000,0,self.app_restart_cb)
         pass
     def app_restart_cb(self,*argc):
@@ -1662,14 +1672,9 @@ class intervManager(Abstract):
                         sos_number = EventMesh.publish("get_dial_sos_number")
                         if sos_number != None:
                             if len(sos_number) != 0:
-                                    EventMesh.publish("close_timer_all")#
-                                    # EventMesh.publish("save_phonename",sos_number[0])
-                                    # EventMesh.publish("save_phonenum",sos_number[0])
-                                    # EventMesh.publish("set_sos_num",0)
-                                    EventMesh.publish("set_sos_flag",1)
-                                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
-                                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-                                    # voiceCall.callStart(sos_number[0])
+                                EventMesh.publish("close_timer_all")#
+                                EventMesh.publish("set_sos_flag",1)
+                                    
                             else:#未设置sos紧急求助号码
                                 EventMesh.publish("close_timer_all")#
                                 str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
@@ -1684,7 +1689,6 @@ class intervManager(Abstract):
                     str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
                     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
     
-
     def play_cur_time_event(self, event, msg): #播放当前时间
         flag = EventMesh.publish("get_call_state") 
         if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
@@ -2395,8 +2399,6 @@ class BtnDevice(Abstract):
                 EventMesh.publish("close_falldown_alarm_event")#sos短按事件
                 if self.sosKey_press == 0 :
                     self.led_state = 0
-                    # self.wechatKey_timeout_cb(0)
-                    # self.pwKey_timeout_cb(0)
                     self.wechatKey_timer.stop()
                     self.pwkey_timer.stop()
                     self.sosKey_timer.stop()
index a65f0ae..e2356d7 100644 (file)
@@ -633,8 +633,10 @@ class sosInfoCallManager(Abstract):
                                 EventMesh.debug_log("phone 6")
                                 EventMesh.publish("set_callnumer_cb",number[0])   
 WL_timer = osTimer()   
-def WL_timer_cb(*args):    
-    voiceCall.callAnswer()
+def WL_timer_cb(*args):   
+    get_call = EventMesh.publish("get_call_state") 
+    if get_call == 2:#只有拨进来才给接听
+        EventMesh.publish("answer_call_event")#接听电话
 def voice_callback(args):
    EventMesh.debug_log('voicecall iinfo:{}'.format(args))
    if args[0] == 10:
@@ -2814,8 +2816,12 @@ class LocationManager(Abstract):
         if read_data != None:
             self.isOpenGNSS = read_data
         else:#默认关闭GNSS
-            self.isOpenGNSS = "0"
+            self.isOpenGNSS = "1"
             EventMesh.publish("set_storage_config",["isOpenGNSS",self.isOpenGNSS])
+
+        self.isOpenGNSS = EventMesh.publish("get_storage_config","isOpenGNSS")
+        if self.isOpenGNSS == None:
+            self.isOpenGNSS = "1"
         if self.isOpenGNSS == "1":
             quecgnss.init()
             quecgnss.gnssEnable(0)
@@ -4309,13 +4315,24 @@ class setSmsIndexManager(Abstract):#
     def get_sms_index(self, event, msg):
         
         return self.index
-
+import protocol 
 class testSmsSetIPManager(Abstract):#
     def __init__(self):
         self.timer = osTimer()
-        self.newip = "api.xcloudtech.com"#默认防走丢协议
-        self.newcom = 9000
-        self.newmd5 = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+        #大锤
+        severdata = protocol.server_init()
+
+        self.newip = severdata[0]
+        self.newcom = severdata[1]
+        self.new_key = severdata[2]
+        self.new_pid = severdata[3]
+        
+        EventMesh.debug_log("testSmsSetIPManager:{}\n".format(severdata))
+
+        self.server_sate = 0
+
+
+
         tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr")
         if tmp_data != None:
             self.newip = tmp_data
@@ -4326,22 +4343,76 @@ class testSmsSetIPManager(Abstract):#
         if tmp_data != None:
             self.newmd5 = tmp_data    
 
+        tmp_data = EventMesh.publish("get_storage_config","set_new_key")
+        if tmp_data != None:
+            self.new_key = tmp_data 
+
+        tmp_data = EventMesh.publish("get_storage_config","set_new_pid")
+        if tmp_data != None:
+            self.new_pid = tmp_data 
+
+        tmp_data = EventMesh.publish("get_storage_config","get_server_sate")
+        if tmp_data != None:
+            self.server_sate = tmp_data 
+        
+        
+
 
 
     def post_processor_after_instantiation(self):
-        EventMesh.subscribe("set_new_ip", self.set_new_ip)#设置关机时间
-        EventMesh.subscribe("get_new_ip", self.get_new_ip)
+        EventMesh.subscribe("set_new_ip_com", self.set_new_ip_com)#设置关机时间
+        EventMesh.subscribe("get_new_ip_com", self.get_new_ip_com)
+
+        EventMesh.subscribe("set_ip", self.set_ip)#设置关机时间
+        EventMesh.subscribe("get_ip", self.get_ip)
+
+        EventMesh.subscribe("set_com", self.set_com)#设置关机时间
+        EventMesh.subscribe("get_com", self.get_com)
+
+        EventMesh.subscribe("get_new_key", self.get_new_key_cb)#获取key
+        EventMesh.subscribe("set_new_key", self.set_new_key_cb)#获取key
+
+        EventMesh.subscribe("set_new_pid", self.set_new_pid_cb)#获取pid
+        EventMesh.subscribe("get_new_pid", self.get_new_pid_cb)#获取pid
+
+        EventMesh.subscribe("set_server_state", self.set_server_state)#
+        EventMesh.subscribe("get_server_state", self.get_server_state)#
 
-    def set_new_ip(self, event, msg): 
+        EventMesh.subscribe("get_new_key_pid", self.get_new_key_pid)#
+
+
+
+    def set_new_key_cb(self, event, msg): 
+        self.new_key = msg
+        # print("set_new_key_cb",msg,self.new_key)
+        EventMesh.publish("set_storage_config",["set_new_key",self.new_key])
+
+    def get_new_key_cb(self, event, msg):
+        # print("get_new_key_cb",self.new_key)
+        return self.new_key
+    
+    def set_new_pid_cb(self, event, msg): 
+        self.new_pid = msg
+        # print("set_new_pid_cb",msg,self.new_pid)
+        EventMesh.publish("set_storage_config",["set_new_pid",self.new_pid])
+
+    def get_new_pid_cb(self, event, msg):
+        # print("get_new_pid_cb",self.new_pid)
+        return self.new_pid
+
+    def set_new_ip_com(self, event, msg): 
         self.newip = str(msg[0])
         self.newcom = int(msg[1])
         # self.newmd5 = str(msg[2])
         #短信格式:SETIP:api.xcloudtech.com:9000:bZld0ALsZTt15tKEZhOlLPgbsO75BLTP 以冒号分隔 SETIP:ip地址:ip端口号:ip密钥key
 
         # self.read_data["set_new_md5"] = self.newmd5  #通过短信设置ip的key密钥
+       
+
         EventMesh.publish("set_storage_config",["set_new_ip_addr",self.newip])
         EventMesh.publish("set_storage_config",["set_new_com",self.newcom])
 
+
         number = str(msg[2])
         sms.sendPduMsg(number, 'set ok', 'UCS2')
         self.timer.start(10*1000,0,self.fun)
@@ -4349,11 +4420,40 @@ class testSmsSetIPManager(Abstract):#
     def fun(self,*argc):
         Power.powerRestart()
 
-    def get_new_ip(self, event, msg):
-        tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr")
-        # return [self.newip,self.newcom,self.newmd5]
-        if(tmp_data != None):
-            return [self.newip,self.newcom]
+    def get_new_ip_com(self, event, msg):
+        tmp_addr = EventMesh.publish("get_storage_config","set_new_ip_addr")
+        tmp_com = EventMesh.publish("get_storage_config","set_new_com")
+        if tmp_addr != None:
+            self.newip = tmp_addr
+        if tmp_com != None:
+            self.newcom = tmp_com
+        return [self.newip,self.newcom]
+    
+    def set_ip(self, event, msg): 
+        self.newip = msg
+        EventMesh.publish("set_storage_config",["set_new_ip_addr",self.newip])
+
+    def get_ip(self, event, msg):
+        # print("get_ip",self.newip)
+        return self.newip
+    
+    def set_com(self, event, msg): 
+        self.newcom = msg
+        EventMesh.publish("set_storage_config",["set_new_com",self.newcom])
+
+    def get_com(self, event, msg):
+        # print("get_com",self.newcom)
+        return self.newcom
+
+    def get_new_key_pid(self, event, msg):
+        return [self.new_key,self.new_pid]
+    
+    def set_server_state(self, event, msg):
+        EventMesh.publish("set_storage_config",["get_server_sate",msg])
+        self.server_sate = msg
+
+    def get_server_state(self, event, msg):
+        return self.server_sate
         
 
 # MMI Version:UIX8910_C55_DS_D12G_PRO18_FZD_V1.0_Release
index 4c07fa3..42d9fac 100644 (file)
@@ -17,10 +17,10 @@ import usocket
 import osTimer
 
 import machine
-
+import urandom
 import _thread
 import usys
-
+import request
 
 def server_init(server_type = None):
     #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 8:ds未知 dey.hinwatch. com:9968  9:183.62.239.121:31869 10:183.62.239.121:33461
@@ -36,9 +36,9 @@ def server_init(server_type = None):
         pass
         
     elif server_type == 2:
-        
-        d_server_addr = "8.134.110.49"
-        d_server_port = 30346
+        # test.iot.socket.thisiot.com:9999
+        d_server_addr = "test.iot.socket.thisiot.com"
+        d_server_port = 9999
         d_md5_key = "3JyCjsw4ryXKzjzudayY"
         d_PID = "qAELPTKmFanR4RHe"
     elif server_type == 3:
@@ -145,16 +145,22 @@ class SockManager(Abstract):
         self.reconnect_flag = 0
         self.connect_tmp = 0
         server_data = server_init()
-        EventMesh.debug_log("SockManager:server_data:{}".format(server_data))
-        self.server_addr = server_data[0]
-        self.server_port = server_data[1]
+        # EventMesh.debug_log("SockManager:server_data:{}".format(server_data))
+        # self.server_addr = server_data[0]
+        # self.server_port = server_data[1]
+        self.server_addr = ""
+        self.server_port = ""
         ip_infor = {}
-        ip_infor = EventMesh.publish("get_new_ip")
+        ip_infor = EventMesh.publish("get_new_ip_com")
         EventMesh.debug_log("ip_infor1:{} \n\n\n".format(ip_infor))
         
         if ip_infor != None: #已经改过服务器
             self.server_addr = ip_infor[0]
             self.server_port = ip_infor[1]
+        else:
+            self.server_addr = server_data[0]
+            self.server_port = server_data[1]
+
         EventMesh.debug_log("server_addr:{} server_port:{}".format(self.server_addr,self.server_port))
         _thread.stack_size((9+3)*1024)
         _thread.start_new_thread(self.connect, ())
@@ -203,6 +209,91 @@ class SockManager(Abstract):
         self.reconnect_flag = 0
     def publish_timer_cb(self, *args):
         EventMesh.publish(constants.PROTOCOL.LK_SEND)
+        self.authen_set()
+
+    def authen_set(self):
+        sever_state = EventMesh.publish("get_server_state")#获取修改服务器状态
+        if sever_state != None:
+            if sever_state == 0:
+                imei = EventMesh.publish(constants.EVENT.GET_IMEI)
+                server_data = EventMesh.publish("get_new_key_pid")#获取pid和key
+                key_data = ""
+                pid_data = ""
+                if server_data != None:
+                    key_data = server_data[0]
+                    pid_data = server_data[1]
+                else:
+                    server_data = server_init()
+                    key_data = server_data[2]
+                    pid_data = server_data[3]
+
+                # server_data = server_init()
+                # key_data = server_data[2]
+                # pid_data = server_data[3]
+               
+                sonce_data = str(urandom.getrandbits(32))#随机生成32位的随机数
+                md5_data = "{}*{}*{}*{}".format(imei,pid_data,sonce_data,key_data)#md5签名
+                sign_data = ""
+                hash_obj = uhashlib.md5(md5_data)
+                res = hash_obj.digest()
+
+                # 转成十六进制表示
+                sign_data = ubinascii.hexlify(res)
+                sign_data = sign_data.decode('ascii')
+                print("sign_data:{} sonce_data:{}".format(md5_data,sign_data))
+                # sign_data = MD5_head
+                # http://8.134.110.49:31379/dev/device/check?imei=&bid=sonce=sign=
+                ip_addr = "test.iot.api.thisiot.com"
+                url = "http://{}/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(ip_addr,imei,pid_data,sonce_data,sign_data)
+
+                response = request.get(url)
+                data_tmp ={}
+                # d_server_addr = "device.miwitracker.com"
+                # d_server_port = 8505
+                # d_md5_key = ""
+                # d_PID = "3G"
+                # response.content = {'protocolType': '', 'host': 'device.miwitracker.com', 'secretKey': '', 'port': 8505, 'bid': '3G', 'extJsonStr': ''}
+                # response.status_code=200
+                print("test-{}".format(response.status_code))
+                if response.status_code == 200:
+                    content = response.content
+                    c = next(content)
+                    # "api.xcloudtech.com"
+                    # d_server_port = 9000
+                    jsload_data =  ujson.loads(c)
+                    print("jsload_data-{}".format(jsload_data))
+                    # jsload_data = {'data':'111','protocolType':'', 'host':'device.miwitracker.com', 'secretKey': 'bZld0ALsZTt15tKEZhOlLPgbsO75BLTP', 'port':8505, 'bid': '3G', 'extJsonStr': ''}
+                    # ujson.loads(c)
+                    
+                    if "success" in jsload_data:
+                        success = jsload_data["success"]
+                        if success == True:#合法设备
+                            if "data" in jsload_data:
+                                data_tmp = jsload_data["data"]#返回的数据 
+                                print("data_tmp:{}".format(data_tmp))
+                                code = jsload_data["code"]
+                                if code == 20000:#合法的设备
+                                    protocloType = data_tmp["protocolType"]#协议类型
+                                    host = data_tmp["host"]#服务骑地址
+                                    secretKey = data_tmp["secretKey"]#
+                                    pid = data_tmp["bid"]#产品型号
+                                    port = data_tmp["port"]#端口号
+
+                                   
+
+                                    if host != '' and (port != '' and port != -1):
+                                        if host != '':
+                                            self.server_addr = host
+                                            EventMesh.publish("set_ip",str(self.server_addr))
+                                        
+                                        if port != '' and port != -1:
+                                            self.server_port = port
+                                            EventMesh.publish("set_com",self.server_port)
+                                        EventMesh.publish("set_new_key", str(secretKey))#获取pid和key
+                                        EventMesh.publish("set_new_pid",str(pid))#获取pid和key
+                                        self.reconnect_timer_cb()#重连设备
+                EventMesh.publish("set_server_state",1)#获取修改服务器状态
+        
         
     def check(self, *args):
         if (not self.run_flag) or (self.connect_tmp == 0) : #7分钟无数据读取,则认为是掉线了
@@ -216,7 +307,7 @@ class SockManager(Abstract):
             return
         self.reconnect_flag = 1
         self.reconnect_timer.start(self.reconnect_time, 0, self.reconnect_timer_cb)
-        if self.reconnect_time < 60*1000:
+        if self.reconnect_time < 600*1000:
             self.reconnect_time += 30*1000
 
     def reconnect_timer_cb(self, *args): 
@@ -225,7 +316,7 @@ class SockManager(Abstract):
         _thread.stack_size(8*1024)
         
     def socket_send_queue_thread(self):
-         while True:
+        while True:
             data = self.socket_send_queue.get()
             EventMesh.debug_log("TCP:send data1 len:{}".format(len(data)))
 
@@ -364,6 +455,8 @@ class ProtoCol(Abstract):
     END = ";" + chr(0x01)
     #PID = "SZKW"
     #PID = "qAELPTKmFanR4RHe"
+    md5_key = ''
+    PID = ''
 
     def __init__(self):
         self.content = None
@@ -374,13 +467,21 @@ class ProtoCol(Abstract):
         self.imsi = EventMesh.publish(constants.EVENT.GET_IMSI)
         self.key = EventMesh.publish(constants.EVENT.GET_KEY)
         self.HEADER = self.HEADER.format(self.TYPE)
-        server_data = server_init()
-        self.md5_key = server_data[2]
-        self.PID = server_data[3]
-        
+
+        self.md5_key = ''
+        self.PID = ''
+        server_data = EventMesh.publish("get_new_key_pid")#获取pid和key
+        if server_data == None:
+            server_data = server_init()#如果获取的数据是None,就用默认的大锤key和pid
+            self.md5_key = server_data[2]
+            self.PID = server_data[3]
+        else:
+            self.md5_key = server_data[0]
+            self.PID = server_data[1]
         
+        # EventMesh.debug_log("md5_key:--",self.md5_key,self.PID)
         # ip_infor = {}
-        # ip_infor = EventMesh.publish("get_new_ip")
+        # ip_infor = EventMesh.publish("get_new_ip_com")
         # if ip_infor != None:
         #     self.md5_key = ip_infor[2]
         # EventMesh.debug_log("md5_key",self.md5_key)
@@ -431,6 +532,10 @@ class ProtoCol(Abstract):
     
     def pack_MD5_head(self,data):                                                                                                                 
         #key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+        self.md5_key=EventMesh.publish("get_new_key")
+        if self.md5_key == None:
+            self.md5_key = server_init[2]
+
         if(self.md5_key == ""):
             return ""
         MD5_head = ""
@@ -452,7 +557,7 @@ class LK_ProtoCol(ProtoCol):
     def send(self, event, msg):
         #[SZKW*334588000000156*0002*LK]
         #EventMesh.debug_log('self.imei:%s'%(self.imei))
-        send_data = self.PID+"*%s*0002*LK"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0002*LK"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # EventMesh.debug_log("LK_ProtoCol:send:%s"%(data))
@@ -480,7 +585,7 @@ class PING_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         #[SZKWT*YYYYYYYYYYYYYYY*LEN*PING]
-        send_data = self.PID+"*%s*0004*PING"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0004*PING"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #EventMesh.debug_log("PING_ProtoCol:send:%s"%(data))
@@ -562,8 +667,8 @@ class KA_ProtoCol(ProtoCol):
         send_data = "KA,%s,%d,%d,%d"%(date,step,self.roll_count,battery_caption)
         send_len = len(send_data)
 
-        send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,"KA")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,send_data)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,"KA")
 
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
@@ -601,8 +706,8 @@ class UD_ProtoCol(ProtoCol):
         send_data ="UD,"+msg
         send_len = len(send_data)
         #wt_data = "%s"%(send_data)
-        send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,"UD")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,send_data)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,"UD")
         
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
@@ -624,7 +729,7 @@ class CR_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         #[SZKWT*YYYYYYYYYYYYYYY*LEN*PING]
-        send_data = self.PID+"*%s*0002*CR"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0002*CR"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #EventMesh.debug_log("CR_ProtoCol:send:%s"%(data))
@@ -657,8 +762,8 @@ class AL_ProtoCol(ProtoCol):
         send_data ="AL,"+msg
         send_len = len(send_data)
         #wt_data = "%s"%(send_data)
-        send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,"AL")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,send_data)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,send_len,"AL")
         
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
@@ -697,7 +802,7 @@ class FIND_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         #[SZKWT*YYYYYYYYYYYYYYY*LEN*PING]
-        send_data = self.PID+"*%s*0004*FIND"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0004*FIND"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #EventMesh.debug_log("FIND_ProtoCol:send:%s"%(data))
@@ -726,7 +831,7 @@ class POWEROFF_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         # [SZKW*867387060319491*0008*POWEROFF]
-        send_data = self.PID+"*%s*0008*POWEROFF"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0008*POWEROFF"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #EventMesh.debug_log("POWEROFF_ProtoCol:send:%s"%(data))
@@ -753,7 +858,7 @@ class PHL_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         # [SZKW*867387060319491*0008*PHL]
-        send_data = self.PID+"*%s*0003*PHL"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0003*PHL"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         #EventMesh.debug_log("POWEROFF_ProtoCol:send:%s"%(data))
@@ -814,9 +919,9 @@ class WT_ProtoCol(ProtoCol):
         if(msg != ""):
             msg_tmp = "WT," + msg
             data_len = len(msg_tmp)
-            MD5_head_data = self.PID+"*%s*%04X*WT"%(self.imei,data_len)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*WT"%(self.imei,data_len)
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
-            send_data = self.PID+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,data_len,msg_tmp)
             data = "[%s%s]"%(str(MD5_SIGN),send_data)
             EventMesh.debug_log("WT_ProtoCol:send:%s"%(data))
             # 通过socket发送到服务器端
@@ -834,7 +939,7 @@ class WT_ProtoCol(ProtoCol):
         msg_tmp = msg.decode('ascii')
         msg_tmp = msg_tmp.split('WT,')
         # EventMesh.debug_log("phonebook:len:{}\r\n data:{}".format(len(msg_tmp),msg_tmp))
-        msg_tmp = msg_tmp[1]
+        msg_tmp = str(msg_tmp[1])
 
         # EventMesh.debug_log("msg_tmp :%s"%(msg_tmp))
 
@@ -868,7 +973,7 @@ class REMIND_ProtoCol(ProtoCol):#普通闹钟
     TYPE = "REMIND"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0006*REMIND"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*REMIND"%(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))
@@ -879,15 +984,14 @@ class REMIND_ProtoCol(ProtoCol):#普通闹钟
         # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_tmp_new = msg_tmp.split('REMIND,')[1]
+        msg_tmp_new = str(msg_tmp.split('REMIND,')[1])
+        msg_tmp_data = str(msg_tmp.split('REMIND')[1])
         count = 0
-        for i in str(msg_tmp_new):
+        for i in str(msg_tmp_data):
             # print("i",i)
             if i == ",":
                 count+=1
         
-        if count != 0:
-            count+=1
         normal_alarm_save = []
         # # ("handler -> b'[SZKW*860132060346475*001C*REMIND,08:00-1-1,,]'",)
         # b'[SZKW*860132060346475*001B*REMIND,08:00-1-1,,]'",)
@@ -928,143 +1032,15 @@ class REMIND_ProtoCol(ProtoCol):#普通闹钟
                         normal_alarm_save.append({"hour":alarm_hour,"min":alarm_min,"day":alarm_day,"enable":alarm_switch})
         
         EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm_save])
-        normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+        # normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
 
-        EventMesh.debug_log("recv REMIND_SEND:{} normal_alarm ;{}".format(msg,normal_alarm))
+        # EventMesh.debug_log("recv REMIND_SEND:{} normal_alarm ;{}".format(msg,normal_alarm))
        
         EventMesh.publish(constants.PROTOCOL.REMIND_SEND)   
         EventMesh.publish("clear_normal_alarm")
 
 
-# class REMIND_ProtoCol(ProtoCol):
-#     """闹钟数据"""
-#     TYPE = "REMIND"
-
-
-#     def send(self, event, msg):
-#         # [SZKW*867387060319491*0008*REMIND]
-#         send_data = self.PID+"*%s*0006*REMIND"%(self.imei)
-#         MD5_SIGN = self.pack_MD5_head(send_data)
-#         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-#         # EventMesh.debug_log("REMIND_ProtoCol:send:%s"%(data))
-#         # 通过socket发送到服务器端
-#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
-
-#     def recv(self, event, msg):
-#         """
-#         @param event: 闹钟数据下发
-#         @param msg: 接收到的下行数据
-#         """
-#         # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
-#         # EventMesh.debug_log("REMIND_ProtoCol RECV msg:%s"%(msg))
-#         alarm_new = []
-
-#         msg = msg[1:-1]
-#         msg_tmp = msg.decode('ascii')
-#         msg_tmp = msg_tmp.split('REMIND,')
-#         msg_tmp = msg_tmp[1]
-
-#         alarm_new  = EventMesh.publish("read_alarminjson")
-#         EventMesh.debug_log("alarm_new start:{}",alarm_new)
-#         k=1
-#         count = 0
-#         if len(msg_tmp) == 0:
-#             for j in range(2,5):#0 1是开关机,234是闹钟#5-1 0 1 2 3 4 5-1 = 4 3 4 k = 1 1+2+j = 
-#                 alarm_new[j+2]["idx"] = 2+j
-#                 alarm_new[j+2]["hour"] = 16
-#                 alarm_new[j+2]["minute"] = 16
-#                 alarm_new[j+2]["days"] = []
-#                 alarm_new[j+2]["enabled"] = 0
-#                 alarm_new[j+2]["repeart"] = 10
-#         else:
-#             for i in range(len(str(msg_tmp))):#寻找有多少个,号
-#                 if msg_tmp[i] == ',':#, , ,
-#                     k+=1
-#             # if len(alarm_new) > 2:
-#             #     for i in range(0,len(alarm_new)-2):
-#             #         # EventMesh.debug_log("alarm_new_tmp",alarm_new)
-#             #         del alarm_new[2]
-#             # EventMesh.debug_log("alarm_new:{}",alarm_new)
-#             for j in range(2,2+k):#0 1是开关机,234是闹钟
-#                 EventMesh.debug_log("j",j,j+2,2+k,k)
-#                 if j > 4:
-#                     break
-#                 alarm_day = []
-#                 alarm_week = []
-#                 alarm_total_data = []
-#                 # EventMesh.debug_log("j!!!!!!!!!!",j)
-#                 if k == 1:
-#                     if len(msg_tmp) != 0:
-#                         alarm_data = msg_tmp.split('-')#-作为分隔符
-#                         alarm_switch = int(alarm_data[1])#开关
-#                         alarm_day_num = int(alarm_data[2])#天
-#                         alarm_time = alarm_data[0]#时间
-#                         alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-#                         alarm_time_hour = int(alarm_time_tmp[0])
-#                         alarm_time_min = int(alarm_time_tmp[1])
-#                         if alarm_day_num == 3:
-#                             alarm_week = alarm_data[3]#星期
-
-#                         if alarm_day_num == 2:#每一天
-#                             alarm_day = [1,2,3,4,5,6,0]
-#                         elif alarm_day_num == 3:#自定义
-#                             for i in range(0,7):
-#                                 if alarm_week[i] != '0':
-#                                     alarm_day.append(i)
-#                         alarm_new[j]["idx"] = j
-#                         alarm_new[j]["hour"] = alarm_time_hour
-#                         alarm_new[j]["minute"] = alarm_time_min
-#                         alarm_new[j]["days"] = alarm_day
-#                         alarm_new[j]["enabled"] = alarm_switch
-#                         alarm_new[j]["repeart"] = alarm_day_num
-#                         # alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-#                 else:
-#                     if len(msg_tmp) != 0:
-#                         alarm_total_data = msg_tmp.split(',')[count]
-#                         count+=1
-#                         if len(alarm_total_data) > 0:
-#                             b = alarm_total_data.find('-')
-#                             if b != -1:
-#                                 alarm_data = alarm_total_data.split('-')#-作为分隔符
-#                                 alarm_switch = int(alarm_data[1])#开关
-#                                 alarm_day_num = int(alarm_data[2])#天
-#                                 alarm_time = alarm_data[0]#时间
-#                                 alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-#                                 alarm_time_hour = int(alarm_time_tmp[0])
-#                                 alarm_time_min = int(alarm_time_tmp[1])
-#                                 if alarm_day_num == 3:
-#                                     alarm_week = alarm_data[3]#星期
-
-#                                 if alarm_day_num == 2:#每一天
-#                                     alarm_day = [1,2,3,4,5,6,0]
-#                                 elif alarm_day_num == 3:#自定义
-#                                     for i in range(0,7):
-#                                         if alarm_week[i] != '0':
-#                                             alarm_day.append(i)
-#                                 EventMesh.debug_log("j+2",j+2)
-#                                 alarm_new[j]["idx"] = j
-#                                 alarm_new[j]["hour"] = alarm_time_hour
-#                                 alarm_new[j]["minute"] = alarm_time_min
-#                                 alarm_new[j]["days"] = alarm_day
-#                                 alarm_new[j]["enabled"] = alarm_switch
-#                                 alarm_new[j]["repeart"] = alarm_day_num
-#                                 # alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-                            
-#             EventMesh.debug_log("alarm_new end:{}",alarm_new)
-#             for j in range(2,5-k):#0 1是开关机,234是闹钟#5-1 0 1 2 3 4 5-1 = 4 3 4 k = 1 1+2+j = 
-#                 alarm_new[j+k]["idx"] = k+j
-#                 alarm_new[j+k]["hour"] = 16
-#                 alarm_new[j+k]["minute"] = 16
-#                 alarm_new[j+k]["days"] = []
-#                 alarm_new[j+k]["enabled"] = 0
-#                 alarm_new[j+k]["repeart"] = 10
-
-#         with open("/usr/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
-#             ujson.dump(alarm_new,fd)
-#         EventMesh.publish("push_update_alarm_show")
-        
-#         # EventMesh.publish("add_alarm",[0,msg_tmp])
-#         EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
+
 
 
 
@@ -1076,7 +1052,7 @@ class HRSTART_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         # [SZKW*867387060319491*0008*hrtstart]
-        send_data = self.PID+"*%s*0008*hrtstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0008*hrtstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # EventMesh.debug_log("HRSTART_ProtoCol:send:%s"%(data))
@@ -1133,8 +1109,8 @@ class HEART_ProtoCol(ProtoCol):
         # [SZKW*334588000000156*len*heart,x]
         # EventMesh.debug_log("HEART:send:{}".format(msg))
         len_size = len(str(msg))+len("heart,")
-        send_data = self.PID+"*%s*%04X*heart"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"heart")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*heart"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"heart")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
         # EventMesh.debug_log("HEART_ProtoCol:data:%s"%(data))
@@ -1155,8 +1131,8 @@ class OXYGEN_ProtoCol(ProtoCol):
         # [SZKW*334588000000156*len*heart,x]
         # EventMesh.debug_log("oxstart:send:{}".format(msg))
         len_size = len(str(msg))+len("oxygen,")
-        send_data = self.PID+"*%s*%04X*oxygen"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"oxygen")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*oxygen"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"oxygen")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
         # EventMesh.debug_log("HEART_ProtoCol:data:%s"%(data))
@@ -1183,7 +1159,7 @@ class OXYGEN_One_ProtoCol(ProtoCol):#单次测量
     def send(self, event, msg):
         # [SZKW*334588000000156*len*heart,x]
         EventMesh.debug_log("oxstart:")
-        send_data = self.PID+"*%s*0007*oxstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*oxstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # EventMesh.debug_log("HEART_ProtoCol:data:%s"%(data))
@@ -1244,8 +1220,8 @@ class TEMP_ProtoCol(ProtoCol):
         # 代表终端的温度为:36.2
         # 平台回复:
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*%04X*temp"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"temp")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*temp"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"temp")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%d.%d]"%(str(MD5_SIGN),send_data,msg[0],msg[1])
         # EventMesh.debug_log("temp:data:%s"%(data))
@@ -1265,7 +1241,7 @@ class WDSTART_ProtoCol(ProtoCol):
     TYPE = "wdstart"
     def send(self, event, msg):
         #[XT*334588000000156*len*wdstart,300]
-        send_data = self.PID+"*%s*0007*wdstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*wdstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # EventMesh.debug_log("temp:data:%s"%(data))
@@ -1319,7 +1295,7 @@ class bldstart_ProtoCol(ProtoCol):
     TYPE = "bldstart"
     def send(self, event, msg):
         #[XT*334588000000156*len*wdstart,300]
-        send_data = self.PID+"*%s*0008*bldstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0008*bldstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("temp:data:%s"%(data))
@@ -1385,8 +1361,8 @@ class blood_ProtoCol(ProtoCol):
         # 代表终端的
         # 平台回复:
         # [XT*334588000000156*0004*blood]
-        send_data = self.PID+"*%s*%04X*blood"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"blood")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*blood"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"blood")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%d,%d]"%(str(MD5_SIGN),send_data,msg[0],msg[1])
         print("blood:data:%s"%(data))
@@ -1414,7 +1390,7 @@ class bgstart_ProtoCol(ProtoCol):
     TYPE = "bgstart"
     def send(self, event, msg):
         #[XT*334588000000156*len*wdstart,300]
-        send_data = self.PID+"*%s*0007*bgstart"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*bgstart"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # print("temp:data:%s"%(data))
@@ -1479,8 +1455,8 @@ class bloodglucose_ProtoCol(ProtoCol):
         # 代表终端的
         # 平台回复:
         # [XT*334588000000156*0004*blood]
-        send_data = self.PID+"*%s*%04X*bloodglucose"%(self.imei,len_size)
-        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"bloodglucose")
+        send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*bloodglucose"%(self.imei,len_size)
+        MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"bloodglucose")
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg)
         print("bloodglucose:data:%s"%(data))
@@ -1504,7 +1480,7 @@ class DLT_ProtoCol(ProtoCol):
     TYPE = "DLT"
     def send(self, event, msg):
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*0003*DLT"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0003*DLT"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("temp:data:%s"%(data))
@@ -1525,7 +1501,7 @@ class UPLOAD_ProtoCol(ProtoCol):
     TYPE = "UPLOAD"
     def send(self, event, msg):
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*0006*UPLOAD"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*UPLOAD"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         
@@ -1555,7 +1531,7 @@ class CENTER_ProtoCol(ProtoCol):
     TYPE = "CENTER"
     def send(self, event, msg):
         # [XT*334588000000156*0004*temp]
-        send_data = self.PID+"*%s*0006*CENTER"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*CENTER"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("UPLOAD:data:%s"%(data))
@@ -1585,7 +1561,7 @@ class MONITOR_ProtoCol(ProtoCol):
     TYPE = "MONITOR"
     def send(self, event, msg):
         # [XT*334588000000156*0004*MONITOR]
-        send_data = self.PID+"*%s*0007*MONITOR"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*MONITOR"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("MONITOR:data:%s"%(data))
@@ -1625,7 +1601,7 @@ class bootoff_ProtoCol(ProtoCol):
     TYPE = "BOOTOFF"
     def send(self, event, msg):
         # [XT*334588000000156*0004*MONITOR]
-        send_data = self.PID+"*%s*0007*BOOTOFF"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*BOOTOFF"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("BOOTOFF:data:%s"%(data))
@@ -1662,7 +1638,7 @@ class sosHome_dial_ProtoCol(ProtoCol):
     TYPE = "SOS"
     def send(self, event, msg):
         # [XT*334588000000156*0004*MONITOR]
-        send_data = self.PID+"*%s*0003*SOS"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0003*SOS"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("sosHome_dial_ProtoCol:data:%s"%(data))
@@ -1705,7 +1681,7 @@ class LOWBAT_ProtoCol(ProtoCol):
     TYPE = "LOWBAT"
     def send(self, event, msg):
         # [XT*334588000000156*0006*LOWBAT]
-        send_data = self.PID+"*%s*0006*LOWBAT"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*LOWBAT"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("LOWBAT:data:%s"%(data))
@@ -1735,7 +1711,7 @@ class Time_ProtoCol(ProtoCol):
     TYPE = "Time"
     def send(self, event, msg):
         # 
-        send_data = self.PID+"*%s*0004*Time"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0004*Time"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("Time:data:%s"%(data))
@@ -1774,7 +1750,7 @@ class SILENCETIME2_ProtoCol(ProtoCol):
     TYPE = "SILENCETIME2"
     def send(self, event, msg):
         # [XT*334588000000156*0006*SILENCETIME2]
-        send_data = self.PID+"*%s*000C*SILENCETIME2"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000C*SILENCETIME2"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # EventMesh.debug_log("KEYBRD:data:%s"%(data))
@@ -1797,7 +1773,7 @@ class KEYBRD_ProtoCol(ProtoCol):
     TYPE = "KEYBRD"
     def send(self, event, msg):
         # [XT*334588000000156*0006*SILENCETIME2]
-        send_data = self.PID+"*%s*0006*KEYBRD"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*KEYBRD"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         # EventMesh.debug_log("KEYBRD:data:%s"%(data))
@@ -1825,8 +1801,8 @@ class TK_ProtoCol(ProtoCol):
 
             len_size = len(str(msg))+len("TK,")
             #  实例:[XT*334588000000156*0009*TK,1]
-            send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size)
-            MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK")
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*TK"%(self.imei,len_size)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"TK")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
             EventMesh.debug_log("TK:data:%s"%(data))
@@ -1856,9 +1832,9 @@ 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(self.PID+"*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec))
+            send_data = bytearray(EventMesh.publish("get_new_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_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"TK")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = bytearray('[')
             data.extend(MD5_SIGN)
@@ -1952,8 +1928,8 @@ class TKS_ProtoCol(ProtoCol):
         if len(str(msg)) == 1:
             len_size = len(str(msg))+len("TKS,")
             #  实例:[XT*334588000000156*0009*TK,1]
-            send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size)
-            MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
+            send_data = EventMesh.publish("get_new_pid")+"*%s*%04X*TKS"%(self.imei,len_size)
+            MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
             EventMesh.debug_log("TKS:data:%s"%(data))
@@ -1983,9 +1959,9 @@ 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(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
+            send_data = bytearray(EventMesh.publish("get_new_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_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = bytearray('[')
             data.extend(MD5_SIGN)
@@ -2079,7 +2055,7 @@ class MESSAGE_ProtoCol(ProtoCol):
 
     def send(self, event, msg):
         #[XT*334588000000156*0007*MESSAGE]
-        send_data = self.PID+"*%s*0007*MESSAGE"%(self.imei)
+        send_data = EventMesh.publish("get_new_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))
@@ -2146,7 +2122,7 @@ class FALLDOWN_ProtoCol(ProtoCol):
     def send(self, event, msg):
        
         #[XT*334588000000156*LEN*FALLDOWN]
-        send_data = self.PID+"*%s*0008*FALLDOWN"%(self.imei)
+        send_data = EventMesh.publish("get_new_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))
@@ -2179,7 +2155,7 @@ class REMOVE_ProtoCol(ProtoCol):
     TYPE = "REMOVE"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0006*REMOVE"%(self.imei)
+        send_data = EventMesh.publish("get_new_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))
@@ -2209,7 +2185,7 @@ class HELP_ProtoCol(ProtoCol):
     
     def send(self, event, msg):
         #[XT*334588000000156*LEN*FALLDOWN]
-        send_data = self.PID+"*%s*0008*HELP,%d"%(self.imei,msg)
+        send_data = EventMesh.publish("get_new_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))
@@ -2245,7 +2221,7 @@ class REMIND_CHDRINK_ProtoCol(ProtoCol):
     TYPE = "REMIND_CH_DRINK"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*000F*REMIND_CH_DRINK"%(self.imei)
+        send_data = EventMesh.publish("get_new_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))
@@ -2289,7 +2265,7 @@ class REMIND_CHMEDICINE2_ProtoCol(ProtoCol):#吃药提醒
     TYPE = "REMIND_CH_MEDICINE2"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0013*REMIND_CH_MEDICINE2"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0013*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))
@@ -2300,15 +2276,18 @@ class REMIND_CHMEDICINE2_ProtoCol(ProtoCol):#吃药提醒
         # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_data = msg_tmp.split('REMIND_CH_MEDICINE2,')[1]
+
+        msg_data = str(msg_tmp.split('REMIND_CH_MEDICINE2,')[1])
+        msg_data_tmp = str(msg_tmp.split('REMIND_CH_MEDICINE2')[1])
 
         medicin_data = []
         alarmday=[]
         count = 0
-        for i in str(msg_data):
+        for i in str(msg_data_tmp):
             # print("i",i)
             if i == ",":
                 count+=1
+
         if count >= 3:
             count = 3
         medicine_alarmday = []
@@ -2358,7 +2337,7 @@ class REMIND_CH_HOME_ProtoCol(ProtoCol):#回家提醒
     TYPE = "REMIND_CH_HOME"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*000E*REMIND_CH_HOME"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000E*REMIND_CH_HOME"%(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))
@@ -2405,7 +2384,7 @@ class REMIND_CH_WAKEUP_ProtoCol(ProtoCol):#该起床了
     TYPE = "REMIND_CH_WAKEUP"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0011*REMIND_CH_WAKEUP"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0011*REMIND_CH_WAKEUP"%(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))
@@ -2416,9 +2395,10 @@ class REMIND_CH_WAKEUP_ProtoCol(ProtoCol):#该起床了
         # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_tmp_new = msg_tmp.split('REMIND_CH_WAKEUP,')[1]
+        msg_tmp_new = str(msg_tmp.split('REMIND_CH_WAKEUP,')[1])
+        msg_tmp_data = str(msg_tmp.split('REMIND_CH_WAKEUP')[1])
         count = 0
-        for i in str(msg_tmp_new):
+        for i in str(msg_tmp_data):
             # print("i",i)
             if i == ",":
                 count+=1
@@ -2428,8 +2408,6 @@ class REMIND_CH_WAKEUP_ProtoCol(ProtoCol):#该起床了
         # alarmday=[]
         wakeup_day = []
         wakeup_switch = 0
-        if count != 0:
-            count += 1
 
         print("count",count)
         if count >= 3:
@@ -2498,7 +2476,7 @@ class REMIND_CH_SLEEP_ProtoCol(ProtoCol):#该睡觉了
     TYPE = "REMIND_CH_SLEEP"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0011*REMIND_CH_SLEEP"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0011*REMIND_CH_SLEEP"%(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))
@@ -2509,15 +2487,14 @@ class REMIND_CH_SLEEP_ProtoCol(ProtoCol):#该睡觉了
         # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_tmp_new = msg_tmp.split('REMIND_CH_SLEEP,')[1]
+        msg_tmp_new = str(msg_tmp.split('REMIND_CH_SLEEP,')[1])
+        msg_tmp_data = str(msg_tmp.split('REMIND_CH_SLEEP')[1])
         count = 0
-        for i in str(msg_tmp_new):
+        for i in str(msg_tmp_data):
             # print("i",i)
             if i == ",":
                 count+=1
-        
-        if count != 0:
-            count+=1
+
         sleep_data_save = []
         # # ("handler -> b'[SZKW*860132060346475*001C*REMIND_CH_SLEEP,08:00-1-1,,]'",)
         # b'[SZKW*860132060346475*001B*REMIND_CH_SLEEP,08:00-1-1,,]'",)
@@ -2557,9 +2534,9 @@ class REMIND_CH_SLEEP_ProtoCol(ProtoCol):#该睡觉了
                         sleep_data_save.append({"hour":sleep_hour,"min":sleep_min,"day":sleep_day,"enable":sleep_switch})
         
         EventMesh.publish("set_storage_config",["sleep_alarm",sleep_data_save])
-        sleep = EventMesh.publish("get_storage_config","sleep_alarm")
+        # sleep = EventMesh.publish("get_storage_config","sleep_alarm")
 
-        EventMesh.debug_log("recv REMIND_CH_SLEEP_SEND:{} sleep ;{}".format(msg,sleep))
+        # EventMesh.debug_log("recv REMIND_CH_SLEEP_SEND:{} sleep ;{}".format(msg,sleep))
        
         EventMesh.publish(constants.PROTOCOL.REMIND_CH_SLEEP_SEND)   
         EventMesh.publish("clear_sleep_alarm")
@@ -2587,7 +2564,7 @@ class REMIND_CH_REST_ProtoCol(ProtoCol):#该休息了
     TYPE = "REMIND_CH_REST"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*000E*REMIND_CH_REST"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000E*REMIND_CH_REST"%(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))
@@ -2598,17 +2575,16 @@ class REMIND_CH_REST_ProtoCol(ProtoCol):#该休息了
         # SZKW*860132060346475*0013*REMIND_CH_REST,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_data = msg_tmp.split('REMIND_CH_REST,')[1]
+        msg_data = str(msg_tmp.split('REMIND_CH_REST,')[1])
+        msg_data_new = str(msg_tmp.split('REMIND_CH_REST')[1])
         print("REMIND_CH_REST",len(msg_data),msg_data)
 
         reset_data_save = []
         count = 0
-        for i in str(msg_data):
+        for i in str(msg_data_new):
             # print("i",i)
             if i == ",":
                 count+=1
-        if count != 0:
-            count += 1
         
         if count >= 2:
             count = 2
@@ -2631,9 +2607,9 @@ class REMIND_CH_REST_ProtoCol(ProtoCol):#该休息了
                     reset_data_save.append({"start_hour":start_hour,"start_min":start_min,"end_hour":end_hour,"end_min":end_min})
         
         EventMesh.publish("set_storage_config",["reset_alarm",reset_data_save])
-        reset = EventMesh.publish("get_storage_config","reset_alarm")
+        # reset = EventMesh.publish("get_storage_config","reset_alarm")
 
-        EventMesh.debug_log("recv REMIND_CH_REST:{} reset ;{}".format(msg,reset))
+        # EventMesh.debug_log("recv REMIND_CH_REST:{} reset ;{}".format(msg,reset))
        
         EventMesh.publish(constants.PROTOCOL.REMIND_CH_REST_SEND)   
         EventMesh.publish("clear_reset_alarm")
@@ -2652,7 +2628,7 @@ class WLKEY_ProtoCol(ProtoCol):#白名单开关
     TYPE = "WLKEY"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*00006*WLKEY"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*00006*WLKEY"%(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))
@@ -2686,7 +2662,7 @@ class SLEEP_DATA_ProtoCol(ProtoCol):#睡眠时间
     TYPE = "SleepReport"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0000b*SleepReport"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0000b*SleepReport"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg)
         EventMesh.debug_log("SLEEP_DATA:send:%s"%(data))
@@ -2707,17 +2683,11 @@ class SLEEP_DATA_ProtoCol(ProtoCol):#睡眠时间
 
 class SLEEPTIME_ProtoCol(ProtoCol):#睡眠时间
     """
-    白名单开关
-    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY,ONOFF]  ONOFF: 1:开启,0:关闭,2:30秒后自动接听。
-    实例:[XT*334588000000156*0008*WLKEY,1]
-    终端回复
-    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY]
-    实例:[XT*334588000000156*0006*WLKEY]
     """
     TYPE = "SLEEPTIME"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*00009*SLEEPTIME"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*00009*SLEEPTIME"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("SLEEPTIME:send:%s"%(data))
@@ -2729,7 +2699,7 @@ class SLEEPTIME_ProtoCol(ProtoCol):#睡眠时间
         EventMesh.debug_log("SLEEPTIME!!!!!!!!!")
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_data = msg_tmp.split(',')[1]
+        msg_data = str(msg_tmp.split(',')[1])
         data = {}
         if len(msg_data) == 0:
             EventMesh.publish("set_storage_config",["sleep_time",data])
@@ -2768,9 +2738,9 @@ class FACTORY_ProtoCol(ProtoCol):#睡眠时间
     TYPE = "FACTORY"
     
     def send(self, event, msg):
-        send_data = self.PID+"*%s*0007*FACTORY"%(self.imei)
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0007*FACTORY"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
-        data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
         EventMesh.debug_log("FACTORY:send:%s"%(data))
         # 通过socket发送到服务器端
         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
@@ -2787,6 +2757,8 @@ class FACTORY_ProtoCol(ProtoCol):#睡眠时间
         EventMesh.publish(constants.PROTOCOL.FACTORY_SEND) 
         EventMesh.publish("app_factory",None)#app恢复出厂
 
+
+
 class ProtoColResolver(object):
     def __init__(self):
         self.protocol_list = []
index 349edc4..ef3f614 100644 (file)
@@ -50,15 +50,15 @@ 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,new_md5])#设置关机时间
+                    EventMesh.publish("set_new_ip_com", [new_ip,new_com,tmp[0]])#
+                    # EventMesh.publish("set_new_ip_com", [new_ip,new_com,new_md5])#设置关机时间
         if detail.find("ts#") != -1:
             EventMesh.publish("send_devinfo_event", tmp[0])#删除短信
             pass
-        if detail.find("fact#") != -1:#恢复出厂设置
+        if detail.find("factory#") != -1:#恢复出厂设置
             EventMesh.publish("app_factory",tmp[0])#app恢复出厂
         
-        if detail.find("rest#") != -1:#重启
+        if detail.find("reset#") != -1:#重启
             EventMesh.publish("app_restart",tmp[0])#
         
     if index >= sms_max-1:#删除短信
index 086d71f..cf51027 100644 (file)
@@ -31,7 +31,7 @@ LCD_X = 128
 LCD_Y = 128
 Testlog = log.getLogger("WechatLog")
 log.set_output(usys.stdout)
-is_appwechat_log = 0
+is_appwechat_log = 1
 def Wechat_log(str):
     if(is_appwechat_log == 1) :
         Testlog.info(str)
@@ -423,7 +423,7 @@ class WechatScreen(Screen):
         Wechat_log("talking_cb1")
         EventMesh.publish("publish_message_event_ui",{"func":self.talking,"data":e})
         Wechat_log("talking_cb2")
-    #按下录音
+    #按下录音.amwav
     def talking(self,e):
         if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机
             print("talking1")
@@ -615,7 +615,7 @@ class WechatScreen(Screen):
         if self.play_text == "R:" or self.play_text == "S:":#过滤掉文字显示 不需要播放音频文件
             self.aud = audio.Audio(0)
             self.aud.stop()#
-            self.aud.play(1, 1, '/usr/static/storage_file/{}.wav'.format(i))  #文件名前面要加上路径
+            self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(i))  #文件名前面要加上路径
         self.paay_btn_old_count = self.paay_btn_count
         Wechat_log("play_label2")
 
index bf54d12..8b8a029 100644 (file)
@@ -820,13 +820,15 @@ class DeviceInfoManager(Abstract):
         old_Timesec = EventMesh.publish("get_old_time_data")
         if old_Timesec != None:
             data = RTC().datetime()
-            hour = data[4]
-            min = data[5]
-            next_alarm_time = utime.localtime(old_Timesec)
+            hour = int(data[4])
+            min = int(data[5])
+
+            next_alarm_time = utime.localtime(int(old_Timesec))
             # print("data[5]:{} {} next_alarm_time:{} old_Timesec:{}".format(data[1],data[2],next_alarm_time,old_Timesec))
             month = next_alarm_time[1]
             day = next_alarm_time[2]
-            if month != data[1] or day != data[2]:
+            year = next_alarm_time[0]
+            if month != data[1] or day != data[2] or year != data[0]:
                 step = EventMesh.publish("get_old_step_value")
                 EventMesh.publish("set_old_time_data",time_tmp)
                 self.gsensor.reset_step()
@@ -842,20 +844,18 @@ class DeviceInfoManager(Abstract):
                 
 
         if hour == 23:#清步数
-            if min <= 59 and  min >= 58:
-                if self.clear_step == 0:
-                    self.clear_step = 1
-                    step = EventMesh.publish("get_old_step_value")
-                    EventMesh.publish("set_old_time_data",time_tmp)
-                    EventMesh.publish("set_old_step_value",0)
-                    self.gsensor.reset_step()
-                    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)
+            if min == 59 :
+                step = EventMesh.publish("get_old_step_value")
+                EventMesh.publish("set_old_time_data",time_tmp)
+                EventMesh.publish("set_old_step_value",0)
+                self.gsensor.reset_step()
+                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)
                     
             else:
                 self.clear_step = 0
@@ -1413,23 +1413,23 @@ class DeviceInfoManager(Abstract):
             if self.normal_flag == 1:
                 self.normal_flag = 0
                 self.normal_count = 0
-        normal_alarm = []
-        normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+        normal_alarm_data = []
+        normal_alarm_data = EventMesh.publish("get_storage_config","normal_alarm")
         # EventMesh.debug_log("sleep info2",sleep,cur_total_min)
         if self.normal_flag == 1:#表示闹钟响过清除标志
             self.normal_count+=1
             if self.normal_count > 6:
                 self.normal_count = 0
                 self.normal_flag = 0
-        if normal_alarm != None:
-            if len(normal_alarm) != 0 and normal_alarm != []:
+        if normal_alarm_data != None:
+            if len(normal_alarm_data) != 0 and normal_alarm_data != []:
                 j = 0
-                for i in range(len(normal_alarm)):
-                    # EventMesh.debug_log("normal_alarm normal_alarm 33",normal_alarm,j)
-                    normalalarm_hour = normal_alarm[j]["hour"]
-                    normalalarm_min = normal_alarm[j]["min"]
-                    normalalarm_day = normal_alarm[j]["day"]
-                    normalalarm_enale = normal_alarm[j]["enable"]
+                for i in range(len(normal_alarm_data)):
+                    # EventMesh.debug_log("normal_alarm_data normal_alarm_data 33",normal_alarm,j)
+                    normalalarm_hour = normal_alarm_data[j]["hour"]
+                    normalalarm_min = normal_alarm_data[j]["min"]
+                    normalalarm_day = normal_alarm_data[j]["day"]
+                    normalalarm_enale = normal_alarm_data[j]["enable"]
                     normalalarm_totalmin = int(normalalarm_hour)*60+int(normalalarm_min)
                     # EventMesh.debug_log("wake alarm",normalalarm_hour,sleep_min,sleep_day,sleep_enale,sleep_totalmin,week)
                     if normalalarm_day == []:#单次闹钟只响一次
@@ -1437,10 +1437,10 @@ class DeviceInfoManager(Abstract):
                             if normalalarm_totalmin == cur_total_min:#14:00
                                 self.normal_count = 0
                                 self.normal_flag  = 0    
-                                normal_alarm[j]["enable"] = 0
+                                normal_alarm_data[j]["enable"] = 0
                                 
                                 # EventMesh.debug_log("wakeup wakeup1",sleep,j)
-                                EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm])#删除之后重新保存
+                                EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm_data])#删除之后重新保存
                                 EventMesh.publish("push_update_alarm_show")
                                 # new_data=EventMesh.publish("get_storage_config","normal_alarm")
                                 # print("normal wakeup1",new_data,j)
@@ -1903,8 +1903,7 @@ class LocationManager(Abstract):
         # print("SockManager:server_data:{}".format(server_data))
         server_addr = server_data[0]
         server_port = server_data[1]
-        ip_infor = {}
-        ip_infor = EventMesh.publish("get_new_ip")
+        ip_infor = EventMesh.publish("get_new_ip_com")
         print("ip_infor1:{} \n\n\n".format(ip_infor))
         
         if ip_infor != None: #已经改过服务器
@@ -2599,6 +2598,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): 
@@ -2841,7 +2841,7 @@ class getStorageDataManager(Abstract):#获取内存数据
         # print("get_storage_data:{}".format(self.config_data))
         return self.config_data 
     def get_storage_config(self,event,msg):
-        # print("get_storage_key_data1:{}".format(msg))
+        print("get_storage_key_data1:{}".format(msg))
         b = msg in self.config_data.keys()
         if b == True:
             # print("get_storage_key_data2:{}".format(self.config_data[msg]))
@@ -3045,9 +3045,9 @@ class getBootOffManager(Abstract):#开关机时间
         EventMesh.subscribe("get_boot_off_time", self.get_boot_off_time)
 
     def set_boot_off_time(self, event, msg): 
-        EventMesh.publish("get_storage_config",["off_on",msg[0]])
-        EventMesh.publish("get_storage_config",["off_start",msg[1]])
-        EventMesh.publish("get_storage_config",["off_end",msg[2]])
+        EventMesh.publish("set_storage_config",["off_on",msg[0]])
+        EventMesh.publish("set_storage_config",["off_start",msg[1]])
+        EventMesh.publish("set_storage_config",["off_end",msg[2]])
         self.off_msg = msg
 
 
@@ -3065,36 +3065,20 @@ class getBootOffManager(Abstract):#开关机时间
                 flag = 1
             
         return [self.off_msg,flag]
-
+import protocol
 class testSmsSetIPManager(Abstract):#
     def __init__(self):
         self.timer = osTimer()
-        self.newip = "test.iot.socket.thisiot.com"
-        self.newcom = 9999
-        # self.newip = "device.miwitracker.com"
-        # self.newcom = 8505
-        # self.newip = "api.xcloudtech.com"
-        # self.newcom = 9000
-
-        # "8.134.110.49"#默认大锤服务器 在大锤服务器更改要连接新的服务器地址
-        
-        
-        
-        self.new_key = "3JyCjsw4ryXKzjzudayY"
-        self.new_pid = "qAELPTKmFanR4RHe"
+        #大锤
+        severdata = protocol.server_init()
 
-        # self.new_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
-        # self.new_pid = "SZKW"
-
-        # self.new_key = ""
-        # self.new_pid = "3G"
+        self.newip = severdata[0]
+        self.newcom = severdata[1]
+        self.new_key = severdata[2]
+        self.new_pid = severdata[3]
 
         self.server_sate = 0
 
-        #  d_server_addr = "api.xcloudtech.com"
-        # d_server_port = 9000
-        # d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
-        # d_PID = "SZKW"
 
         tmp_data = EventMesh.publish("get_storage_config","set_new_ip_addr")
         if tmp_data != None:
@@ -3123,8 +3107,8 @@ class testSmsSetIPManager(Abstract):#
 
 
     def post_processor_after_instantiation(self):
-        EventMesh.subscribe("set_new_ip", self.set_new_ip)#设置关机时间
-        EventMesh.subscribe("get_new_ip", self.get_new_ip)
+        EventMesh.subscribe("get_new_ip_com", self.set_new_ip_com)#设置关机时间
+        EventMesh.subscribe("get_new_ip_com", self.get_new_ip_com)
 
         EventMesh.subscribe("set_ip", self.set_ip)#设置关机时间
         EventMesh.subscribe("get_ip", self.get_ip)
@@ -3141,6 +3125,8 @@ class testSmsSetIPManager(Abstract):#
         EventMesh.subscribe("set_server_state", self.set_server_state)#
         EventMesh.subscribe("get_server_state", self.get_server_state)#
 
+        EventMesh.subscribe("get_new_key_pid", self.get_new_key_pid)#
+
 
 
     def set_new_key_cb(self, event, msg): 
@@ -3161,7 +3147,7 @@ class testSmsSetIPManager(Abstract):#
         # print("get_new_pid_cb",self.new_pid)
         return self.new_pid
 
-    def set_new_ip(self, event, msg): 
+    def set_new_ip_com(self, event, msg): 
         self.newip = str(msg[0])
         self.newcom = int(msg[1])
         # self.newmd5 = str(msg[2])
@@ -3181,7 +3167,7 @@ class testSmsSetIPManager(Abstract):#
     def fun(self,*argc):
         Power.powerRestart()
 
-    def get_new_ip(self, event, msg):
+    def get_new_ip_com(self, event, msg):
         tmp_addr = EventMesh.publish("get_storage_config","set_new_ip_addr")
         tmp_com = EventMesh.publish("get_storage_config","set_new_com")
         if tmp_addr != None:
index b5192ec..7878235 100644 (file)
@@ -124,17 +124,23 @@ class SockManager(Abstract):
         self.reconnect_time = 1000
         self.reconnect_flag = 0
         self.connect_tmp = 0
+       
         server_data = server_init()
-        # print("SockManager:server_data:{}".format(server_data))
-        self.server_addr = server_data[0]
-        self.server_port = server_data[1]
+        # EventMesh.debug_log("SockManager:server_data:{}".format(server_data))
+        # self.server_addr = server_data[0]
+        # self.server_port = server_data[1]
+        self.server_addr = ""
+        self.server_port = ""
         ip_infor = {}
-        ip_infor = EventMesh.publish("get_new_ip")
+        ip_infor = EventMesh.publish("get_new_ip_com")
         print("ip_infor1:{} \n\n\n".format(ip_infor))
         
         if ip_infor != None: #已经改过服务器
             self.server_addr = ip_infor[0]
             self.server_port = ip_infor[1]
+        else:
+            self.server_addr = server_data[0]
+            self.server_port = server_data[1]
         print("server_addr:{} server_port:{}".format(self.server_addr,self.server_port))
         
         _thread.start_new_thread(self.connect, ())
@@ -182,14 +188,27 @@ class SockManager(Abstract):
     def publish_timer_cb(self, *args):
         EventMesh.publish(constants.PROTOCOL.LK_SEND)
         self.authen_set()
+
     def authen_set(self):
         sever_state = EventMesh.publish("get_server_state")#获取修改服务器状态
         if sever_state != None:
             if sever_state == 0:
                 imei = EventMesh.publish(constants.EVENT.GET_IMEI)
-                server_data = server_init()
-                key_data = server_data[2]
-                pid_data = server_data[3]
+                server_data = EventMesh.publish("get_new_key_pid")#获取pid和key
+                key_data = ""
+                pid_data = ""
+                if server_data != None:
+                    key_data = server_data[0]
+                    pid_data = server_data[1]
+                else:
+                    server_data = server_init()
+                    key_data = server_data[2]
+                    pid_data = server_data[3]
+
+                # server_data = server_init()
+                # key_data = server_data[2]
+                # pid_data = server_data[3]
+               
                 sonce_data = str(urandom.getrandbits(32))#随机生成32位的随机数
                 md5_data = "{}*{}*{}*{}".format(imei,pid_data,sonce_data,key_data)#md5签名
                 sign_data = ""
@@ -202,7 +221,8 @@ class SockManager(Abstract):
                 print("sign_data:{} sonce_data:{}".format(md5_data,sign_data))
                 # sign_data = MD5_head
                 # http://8.134.110.49:31379/dev/device/check?imei=&bid=sonce=sign=
-                url = "http://test.iot.api.thisiot.com/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(imei,pid_data,sonce_data,sign_data)
+                ip_addr = "test.iot.api.thisiot.com"
+                url = "http://{}/dev/device/check?imei={}&bid={}&sonce={}&sign={}".format(ip_addr,imei,pid_data,sonce_data,sign_data)
 
                 response = request.get(url)
                 data_tmp ={}
@@ -219,7 +239,7 @@ class SockManager(Abstract):
                     # "api.xcloudtech.com"
                     # d_server_port = 9000
                     jsload_data =  ujson.loads(c)
-                    # print("jsload_data-{}".format(jsload_data))
+                    print("jsload_data-{}".format(jsload_data))
                     # jsload_data = {'data':'111','protocolType':'', 'host':'device.miwitracker.com', 'secretKey': 'bZld0ALsZTt15tKEZhOlLPgbsO75BLTP', 'port':8505, 'bid': '3G', 'extJsonStr': ''}
                     # ujson.loads(c)
                     
@@ -235,14 +255,8 @@ class SockManager(Abstract):
                                     host = data_tmp["host"]#服务骑地址
                                     secretKey = data_tmp["secretKey"]#
                                     pid = data_tmp["bid"]#产品型号
-                                    port = data_tmp["port"]#端口号
-
-                                    if secretKey != '':
-                                        EventMesh.publish("set_new_key", str(secretKey))#获取pid和key
-                                    if pid != '':
-                                        EventMesh.publish("set_new_pid",str(pid))#获取pid和key
-
-                                    if host != '' or (port != '' and port != -1):
+                                    port = data_tmp["port"]#端口
+                                    if host != '' and port != '' and port != -1:
                                         if host != '':
                                             self.server_addr = host
                                             EventMesh.publish("set_ip",str(self.server_addr))
@@ -250,11 +264,16 @@ class SockManager(Abstract):
                                         if port != '' and port != -1:
                                             self.server_port = port
                                             EventMesh.publish("set_com",self.server_port)
-                                        self.reconnect_timer_cb()#重连设备
-                                    EventMesh.publish("set_server_state",1)#获取修改服务器状态
-                                    
+                                        
+                                        EventMesh.publish("set_new_key", str(secretKey))#获取pid和key
+                                        EventMesh.publish("set_new_pid",str(pid))#获取pid和key
 
+                                        self.reconnect_timer_cb()#重连设备
+                EventMesh.publish("set_server_state",1)#获取修改服务器状态
         
+        
+
+
     def check(self, *args):
         if (not self.run_flag) or (self.connect_tmp == 0) : #7分钟无数据读取,则认为是掉线了
             print("tcp reconnect!!!!!!!!!!!!!!!!!!")
@@ -267,7 +286,7 @@ class SockManager(Abstract):
             return
         self.reconnect_flag = 1
         self.reconnect_timer.start(self.reconnect_time, 0, self.reconnect_timer_cb)
-        if self.reconnect_time < 60*1000:
+        if self.reconnect_time < 600*1000:
             self.reconnect_time += 30*1000
 
     def reconnect_timer_cb(self, *args): 
@@ -435,7 +454,7 @@ class ProtoCol(Abstract):
         else:
             self.md5_key = server_data[0]
             self.PID = server_data[1]
-        # print("init md5PID2",self.md5_key,self.PID)
+        print("init md5PID2",self.md5_key,self.PID)
 
     def initialization(self, *args, **kwargs):
         EventMesh.subscribe(self.TYPE + "_SEND", self.handler)
@@ -484,6 +503,8 @@ class ProtoCol(Abstract):
     def pack_MD5_head(self,data):                                                                                                                 
         #key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
         self.md5_key=EventMesh.publish("get_new_key")
+        if self.md5_key == None:
+            self.md5_key = server_init[2]
         if(self.md5_key == ""):
             return ""
         MD5_head = ""
@@ -859,30 +880,25 @@ class REMIND_ProtoCol(ProtoCol):#普通闹钟
         # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_tmp_new = msg_tmp.split('REMIND,')[1]
+        msg_tmp_new = str(msg_tmp.split('REMIND,')[1])
+        msg_tmp_data = str(msg_tmp.split('REMIND')[1]) #,10:20-1-1-00100,,
         count = 0
-        for i in str(msg_tmp_new):
+        for i in str(msg_tmp_data):
             # print("i",i)
             if i == ",":
                 count+=1
         
-        if count != 0:
-            count+=1
         normal_alarm_save = []
-        # # ("handler -> b'[SZKW*860132060346475*001C*REMIND,08:00-1-1,,]'",)
-        # b'[SZKW*860132060346475*001B*REMIND,08:00-1-1,,]'",)
-        # medicine_alarmday = str(msg_data[4])
-        # alarmday=[]
         alarm_day = []
         alarm_switch = 0
 
-        print("count",count,msg_tmp_new)
+        print("count:{} msg_tmp_new:{} type:{} msg_tmp_data:{}",count,msg_tmp_new,type(msg_tmp_new),msg_tmp_data)
         if count >= 3:
             count = 3
         for i in range(0,count):#默认是三个时间多了也不保存
             alarm_day = []
             alarm_data = str(msg_tmp_new.split(',')[i])
-            # print("i",i,sleep_data)
+            print("i",i,alarm_data)
             if len(alarm_data) != 0:
                 b = alarm_data.find('-')
                 if b != -1:
@@ -903,132 +919,17 @@ class REMIND_ProtoCol(ProtoCol):#普通闹钟
                                 if alarm_day_tmp[i] != '0':
                                     alarm_day.append(i)
                     else:#单次 1
-                       alarm_day=[] 
-                    # if alarm_switch = 0:
+                        alarm_day=[] 
                     normal_alarm_save.append({"hour":alarm_hour,"min":alarm_min,"day":alarm_day,"enable":alarm_switch})
         
         EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm_save])
-        normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+        # normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
 
-        print("recv REMIND_SEND:{} normal_alarm ;{}".format(msg,normal_alarm))
+        print("recv REMIND_SEND ;{}".format(msg))
        
         EventMesh.publish(constants.PROTOCOL.REMIND_SEND)   
-        EventMesh.publish("clear_normal_alarm")
-        EventMesh.publish("push_update_alarm_show")
-
-
-
-# class REMIND_ProtoCol(ProtoCol):
-#     """闹钟数据"""
-#     TYPE = "REMIND"
-
-
-#     def send(self, event, msg):
-        
-#         # [SZKW*867387060319491*0008*REMIND]
-#         send_data = EventMesh.publish("get_new_pid")+"*%s*0006*REMIND"%(self.imei)
-#         MD5_SIGN = self.pack_MD5_head(send_data)
-#         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-#         # print("REMIND_ProtoCol:send:%s"%(data))
-#         # 通过socket发送到服务器端
-#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
-
-#     def recv(self, event, msg):
-#         """
-#         @param event: 闹钟数据下发
-#         @param msg: 接收到的下行数据
-#         """
-        
-#         # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
-#         # print("REMIND_ProtoCol RECV msg:%s"%(msg))
-#         alarm_new = []
-
-#         msg = msg[1:-1]
-#         msg_tmp = msg.decode('ascii')
-#         msg_tmp = msg_tmp.split('REMIND,')
-#         msg_tmp = msg_tmp[1]
-
-#         alarm_new  = EventMesh.publish("read_alarminjson")
-#         # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
-#         k=1
-#         count = 0
-        
-#         for i in range(len(str(msg_tmp))):#寻找有多少个,号
-#             if msg_tmp[i] == ',':#, , ,
-#                 k+=1
-#         # if len(alarm_new) < 5 :
-#         #     alarm_new = []
-#         #     for i in range(5):
-#         #         alarm_new.append({'hour': 8, 'repeart': 10, 'idx': i, 'enabled': 0, 'days': [], 'minute': 39}) 
-#         # print("msg_tmp",len(msg_tmp),msg_tmp)
-#         if len(msg_tmp) > 0:
-#             if len(alarm_new) > 2:
-#                 for i in range(0,len(alarm_new)-2):
-#                     # print("alarm_new_tmp",alarm_new)
-#                     del alarm_new[2]
-#             # print("alarm_new:{}",alarm_new)
-#             if k > 3:
-#                 k = 3
-
-#             for j in range(2,2+k):#0 1是开关机,234是闹钟
-#                 alarm_day = []
-#                 alarm_week = []
-#                 alarm_total_data = []
-#                 alarm_day_num = 1
-#                 # print("j!!!!!!!!!!",j)
-#                 if k == 1:
-#                     if len(msg_tmp) != 0:
-#                         alarm_data = msg_tmp.split('-')#-作为分隔符
-#                         alarm_switch = int(alarm_data[1])#开关
-#                         alarm_day_num = int(alarm_data[2])#天
-#                         alarm_time = alarm_data[0]#时间
-#                         alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-#                         alarm_time_hour = int(alarm_time_tmp[0])
-#                         alarm_time_min = int(alarm_time_tmp[1])
-#                         if alarm_day_num == 2:#每一天
-#                             alarm_day = [1,2,3,4,5,6,0]
-#                         elif alarm_day_num == 3:#自定义
-#                             for i in range(0,7):
-#                                 if alarm_week[i] != '0':
-#                                     alarm_day.append(i)
-#                         if alarm_day_num == 0:
-#                             alarm_day_num = 1
-#                         alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-#                 else:
-#                     if len(msg_tmp) != 0:
-#                         alarm_total_data = msg_tmp.split(',')[count]
-#                         count+=1
-#                         b = alarm_total_data.find('-')
-#                         if b != -1:
-#                             alarm_data = alarm_total_data.split('-')#-作为分隔符
-#                             alarm_switch = int(alarm_data[1])#开关
-#                             alarm_day_num = int(alarm_data[2])#天
-#                             alarm_time = alarm_data[0]#时间
-#                             alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-#                             alarm_time_hour = int(alarm_time_tmp[0])
-#                             alarm_time_min = int(alarm_time_tmp[1])
-#                             if alarm_day_num == 2:#每一天
-#                                 alarm_day = [1,2,3,4,5,6,0]
-#                             elif alarm_day_num == 3:#自定义
-#                                 for i in range(0,7):
-#                                     if alarm_week[i] != '0':
-#                                         alarm_day.append(i)
-#                             if alarm_day_num == 0:
-#                                 alarm_day_num = 1
-#                             alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-                            
-#             # print("alarm_new end:{}",alarm_new)
-            
-#             with open("/usr/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
-#                 ujson.dump(alarm_new,fd)
-#             EventMesh.publish("push_update_alarm_show")
         
-#         # EventMesh.publish("add_alarm",[0,msg_tmp])
-#         EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
-
-
-
-
+        EventMesh.publish("push_update_alarm_show")
 
 
 
@@ -2042,7 +1943,7 @@ class factory_ProtoCol(ProtoCol):
         @param msg: 接收到的下行数据
         """
         EventMesh.publish(constants.PROTOCOL.FACTORY_SEND)
-        EventMesh.publish("load_screen", {"screen":"restore"})
+        EventMesh.publish("app_factory_cb")
 
 class restart_ProtoCol(ProtoCol):
     """重启"""
@@ -2164,7 +2065,7 @@ class TK_ProtoCol(ProtoCol):
             else:
                 EventMesh.publish("wechat_updata_list_show")
             # path = "/ext/static/storage_file/audio_amr/amr/{}.wav".format(wechat_num)
-            path = "/usr/static/storage_file/{}.wav".format(wechat_num)
+            path = "/usr/static/storage_file/{}.amr".format(wechat_num)
             with open(path,"w") as fd:
                 arm = bytearray()
                 j = 0
@@ -2210,7 +2111,7 @@ class TKS_ProtoCol(ProtoCol):
             MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
             data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
-            print("TK:data:%s"%(data))
+            print("TKS:data:%s"%(data))
             # 通过socket发送到服务器端
             EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
 
@@ -2293,7 +2194,7 @@ class TKS_ProtoCol(ProtoCol):
             else:
                 EventMesh.publish("wechat_updata_list_show")
             # path = "/ext/static/storage_file/audio_amr/amr/{}.wav".format(wechat_num)
-            path = "/usr/static/storage_file/{}.wav".format(wechat_num)
+            path = "/usr/static/storage_file/{}.amr".format(wechat_num)
             with open(path,"w") as fd:
                 arm = bytearray()
                 j = 0
@@ -2480,7 +2381,7 @@ class JPREG_ProtoCol(ProtoCol):#登入注册
         @param msg: 接收到的下行数据
         """
         # b'[SZKW*867387060319166*000A*KEYBRD]'
-        print("JPREG!!!!!!!!!!!!!",msg)
+        print("JPREG!!!!!!!!!!!!!",msg,EventMesh.publish("get_new_pid"))
         # EventMesh.publish(constants.PROTOCOL.JPREG_SEND)  
 
 # # (声网,佰锐的账号是整型)
@@ -2500,7 +2401,7 @@ class MEMBERS_ProtoCol(ProtoCol):#获取账号列表
         send_data = EventMesh.publish("get_new_pid")+"*%s*0007*MEMBERS"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-        # print("WLKEY:data:%s"%(data))
+        print("MEMBERS SEND:data:%s"%(data))
         # print("WLKEY!!!!!!!!!!!!!")
         # 通过socket发送到服务器端
         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
@@ -2511,7 +2412,7 @@ class MEMBERS_ProtoCol(ProtoCol):#获取账号列表
         @param msg: 接收到的下行数据
         """
         # b'[SZKW*876226002021444*0048*MEMBERS,0036003900350031003800330032002C563F563FD83CDF410020D83CDF42002C]'
-        print("MEMBERS!!!!!!!!!!!!!",msg)
+        print("MEMBERS!!!!!!!!!!!!!",msg,EventMesh.publish("get_new_pid"))
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
         msg_tmp = msg_tmp.split(',')
index 7dac7ec..fd64eee 100644 (file)
@@ -1952,8 +1952,8 @@ 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,new_md5])#设置关机时间
+                    EventMesh.publish("set_new_ip_com", [new_ip,new_com,tmp[0]])#设置关机时间
+                    # EventMesh.publish("set_new_ip_com", [new_ip,new_com,new_md5])#设置关机时间
         
     if index >= sms_max-1:
         EventMesh.publish("load_screen", {"screen": "message_full"})
@@ -4127,7 +4127,7 @@ class WeatherScreen(Screen):
                         no_weather_degree.set_pos(88, 15)
                         weather_tem_label.set_text("_ _")
                     else:
-                        if len(temp) > 2:
+                        if len(str(temp)) > 2:
                             no_weather_degree.set_pos(100, 15)
                         else:
                             no_weather_degree.set_pos(88, 15)
@@ -9314,6 +9314,9 @@ class restore_confirmScreen(Screen):
         self.count = 0
         self.timer1 = osTimer()
         self.timer2 = osTimer()
+        self.timer3 = osTimer()
+
+        EventMesh.subscribe("app_factory_cb",self.app_factory_cb)
 
     def initialization(self):
         global rrestor_confirm_n_screen ,rrestor_confirm_n_screen_label  
@@ -9347,6 +9350,17 @@ class restore_confirmScreen(Screen):
             EventMesh.publish(constants.PROTOCOL.DLT_SEND)
         self.timer2.start(4000,0,self.timer_cb_threescond)
 
+    def app_factory_cb(self,event,msg):
+        ret = 0
+        ret = ql_fs.path_exists("/ext/static/storage_file")#电话本
+        if ret == True:
+            ql_fs.rmdirs("/ext/static/storage_file")
+            ql_fs.mkdirs("/ext/static/storage_file")
+        EventMesh.publish("alipay_unbind")
+        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂
+            EventMesh.publish(constants.PROTOCOL.DLT_SEND)
+        self.timer3.start(4000,0,self.timer_cb_threescond)
+        pass
 
     def Close(self):
         self.timer1.stop()