From 9b323dcdce12a00a303e26a864ac562cc71e7377 Mon Sep 17 00:00:00 2001 From: dapgo Date: Sun, 7 May 2023 22:45:40 +0200 Subject: [PATCH] thermometer improved several improvements --- apps/tempmonitor/ChangeLog | 1 + apps/tempmonitor/README.md | 2 +- apps/tempmonitor/metadata.json | 4 +- apps/tempmonitor/old_ss_emul_bjs1.png | Bin 0 -> 3602 bytes apps/tempmonitor/old_ss_emul_bjs2.png | Bin 0 -> 2510 bytes apps/tempmonitor/ss_emul_bjs1.png | Bin 3602 -> 3939 bytes apps/tempmonitor/ss_emul_bjs1_help.png | Bin 0 -> 4869 bytes apps/tempmonitor/ss_emul_bjs2.png | Bin 2510 -> 2813 bytes apps/tempmonitor/tempmonitor.app.js | 472 +++++++++++++------------ apps/tempmonitor/tempmonitor.info | 2 +- apps/wohrm/app.js | 6 +- 11 files changed, 256 insertions(+), 231 deletions(-) create mode 100644 apps/tempmonitor/old_ss_emul_bjs1.png create mode 100644 apps/tempmonitor/old_ss_emul_bjs2.png create mode 100644 apps/tempmonitor/ss_emul_bjs1_help.png diff --git a/apps/tempmonitor/ChangeLog b/apps/tempmonitor/ChangeLog index af69e6e0a..c14b9b1bb 100644 --- a/apps/tempmonitor/ChangeLog +++ b/apps/tempmonitor/ChangeLog @@ -1,3 +1,4 @@ 0.01: 1st version: saves values to csv 0.02: added HTML interface 0.03: Added Stop/start recording, change BG color, filesize info +0.04: Support for negative degree, Min/Max, random for emulator, clean of code diff --git a/apps/tempmonitor/README.md b/apps/tempmonitor/README.md index e50ac07cb..59a0af58e 100644 --- a/apps/tempmonitor/README.md +++ b/apps/tempmonitor/README.md @@ -1,5 +1,5 @@ # Temperature Monitor (with logging) -Temperature monitor that shows temperature on real time but also allows to store in a file for a later process. +Temperature / Thermometer monitor that not only shows degrees on real time but also allows to store this info in a file for a later process. Compatible with BangleJS1,BangleJS2,and EMSCRIPTENx emulators diff --git a/apps/tempmonitor/metadata.json b/apps/tempmonitor/metadata.json index 45d4d2c35..2ab4e414c 100644 --- a/apps/tempmonitor/metadata.json +++ b/apps/tempmonitor/metadata.json @@ -1,8 +1,8 @@ { "id": "tempmonitor", "name": "Temperature monitor", - "version": "0.03", - "description": "Displays the current temperature and stores in a CSV file", + "version": "0.04", + "description": "Another thermometer, besides displaying current temperature, stores it in a CSV file", "icon": "app.png", "tags": "tool", "interface": "interface.html", diff --git a/apps/tempmonitor/old_ss_emul_bjs1.png b/apps/tempmonitor/old_ss_emul_bjs1.png new file mode 100644 index 0000000000000000000000000000000000000000..da7a53bd1a40e1548e1babffcb52dfdc209f896d GIT binary patch literal 3602 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 literal 0 HcmV?d00001 diff --git a/apps/tempmonitor/old_ss_emul_bjs2.png b/apps/tempmonitor/old_ss_emul_bjs2.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc2140f9e4280fdb778b4e25d0af082963742c4 GIT binary patch literal 2510 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 literal 3602 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 diff --git a/apps/tempmonitor/ss_emul_bjs1_help.png b/apps/tempmonitor/ss_emul_bjs1_help.png new file mode 100644 index 0000000000000000000000000000000000000000..4d85847b99f71db8e61992d694f64762adfb50a8 GIT binary patch literal 4869 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 literal 0 HcmV?d00001 diff --git a/apps/tempmonitor/ss_emul_bjs2.png b/apps/tempmonitor/ss_emul_bjs2.png index 1cc2140f9e4280fdb778b4e25d0af082963742c4..2cdc192f8b77685811a5d1e7c45ad2a3e8251926 100644 GIT binary patch literal 2813 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 K^GY*H{J#Lc6h`L& literal 2510 zcmd^>`#;l*AIE2gi8{?CDaU0Zw@u}eZ?2U~bmBz0Oooz6<7lQcms~!Th~bpWa?e4O zW?Pw&%RZ!{Y0IU#vyN%xw%k%HzWVX}4d;jV`}KIf-;c-h*Z2F*@2*ZeckJ5%fk1XT zpR#w~PTJ3cOK*27Q-IwL34*)R2}m7BZ59HNO>?$Cel7;PP_hs=swwYSBxcRb;}wZ$ zDQ(*7F>tsn!YrRZvv(@nG+Vgx_50J!SSu`Q|DW{R4}XQl!L3}SCQ>L4jx+nT8e|Y% za^cEH7nG1Pd3R_!&?KqFJR&!_b4d4q$d_NcjHJ_|D@WkpRfbMu54PK^fbCN#Pj-7>}S2$r#I@%)nHi4KRKD?LH&br-OYT00Q9#n)4z4UvE95n0#i?FAq58wvwLt4P%Izbv&DG-x{q$Jqs>Z%d(YGJ6*j#2lntWt*h#+WtCFd+ z-G%I%plsefIInDJfitqC&)rp1_}A<@Mr^5*(US>AKCkM>4{(|F)X7h4o0Kn0iSzD* zx9s^Uv?`cu$c<>}o(N`7%j^DFH}M$hLJ?zk%yA(5*{F@=;@`RG<+xit6iPNeYHrZ; z4k9KHV7Xa$J6xFUcx>8S`lIE*)#u?BXsz`mUt^>G@3RsXjDFpFF*fYFp=KCzO^s~HMK!Iw^hRfk(BMF!zsa#f5^lrLh1x}JY zsd(R!KbA1oTlWs^kEyGz~*rx4V?(R{f%6WIQXta_DUX z1go2ZMJb_rv3IG$NA;2WJ$oyAk3fCZk%BAvHi@oe9bRLV#cY4mlp>>VN?2OVJ9zzO zjJW^pWht9)ws)uJ*Ia?7oV*=-J#I7PXBYws+Vi7?kmx0Q;0) z%pvr7yDo)%?enmO3b{MkZ^0_Y0-Cg@l(-%|I{bWPUZ=SD-K;`|d9#Mtb|mUSHH!_u zt~7uQ3zPnB5X^533v|H^6>l^(@KkPNu=1bo3KiE2-1%_Y*gxqH;;eO{`&E%NL~f%h zGy}-tkRed<@`1wpkpBjON>Fl}Bu6n1nHrL$eaZSBpW79bH}pcTSP{4Xnega2gQ&3? zJC9H2CK80r2h=_J_s-ecl?~oCh%y}}5T@?65M8V)K{L8laDYQrQ9`&YOSa{VoOseV zxnf|jn)DH!uv3TT@VM55hIEQASe%^FTc96>hd()!;oZ7DOT{;84E7*JM~QfDY5~AS zSGFwf){9D;o6AQZy!yu(5-25L7>uwV0>w98+*KBt2kXL0wjRCH^VN|rdUjy41 zU~R3G0!+3!tj$v<lHF1BA9XP=(HT`;587R2n6?@{QGV4Xla?2=Im z)Y@$!zc5JNrYt*q@=29Ja4e;`q}^dlgQ!)-w8U53UHryk_O`wM8pe$t>97J#jWMP;t=O@m*Q@do(R*I^EF-gOO)#0GQrfRNKs7I zFWRD*&{_Ho2-Hw7N1FtJrk3l_{+k4@mt1>k>^;V+iQM}3s88if)o47+YhxZ)cO{{F zjn32vtakuTtKrs8Hw)JsGI^WctdH|UR9%26@$lv`-SGw=%c9!L8DN;dk<8h;Eo60N z7zX!lr0v=v-Ub#mPoGqy*J4RUL1%E?DJ~Bp$*Hl%Mu88bmA5rt z$u!n_0@VniucrNv16tqnmi~(!t2BBftF&!gD+tHg$9g1X({apKw-PF>L^*pJrd@uE zxzdkm!T1M{VK3!oHSyXST9qQVV&9su3$2=^(NY`={`9jyvO7`G>R4_-DGCTyVwgU} zeuyLQb_Xcc6UFjohZqZDJJfPKmIq~FL zWrH<_?=#rKDBu|c)rznRzO5E3Qz5dw1|n(&pPmvse$lc>3y1WP&c*c;JVgc_2Vc@f zwQoaFQ;()`;}avB@kd&xj=!Q;G$jc&7njM>KE9Y@zsd%sg`80yEVT7hZ6+h1dMzF& zjs(gWVRZ8y4N3AqpZkOQ+|Y>0ct}0^EM`Po^m>Nas!ci3(BQ0) var saveFreq=6000; //ms for testin 6sec else var saveFreq=60000; //ms 1min -var v_saveToFile= new Boolean(true); //true save //false +var v_saveToFile= new Boolean(true); //true save //false //with upload file º is not displayed properly //with upload RAM º is displayed var v_t_symbol="";//ºC @@ -23,6 +23,8 @@ var v_model=process.env.BOARD; var v_color_erase=g.getBgColor(); //original BG color overwritten on SetVariables var v_color=g.getColor();//original FG color var id_rec_intv; //var for the recording interval +var v_t_max=-50; //preset with an opposite and impossible record measure +var v_t_min=70; if (readFreq>saveFreq) console.log("Read refresh freq should be higher than saving"); if (v_mode_debug>0) console.log("original BG/FG color="+v_color_erase+" / "+v_color); @@ -32,281 +34,303 @@ if (v_mode_debug>0) console.log("original BG/FG color="+v_color_erase+" / "+v_co function SetVariables(){ //EMSCRIPTEN,EMSCRIPTEN2 if (v_model=='BANGLEJS'||v_model=='EMSCRIPTEN') { - v_font_size1=16; - v_font_size2=50; - }else{ - //Banglejs2 or others - v_font_size1=11; //too small? - v_font_size2=40; - } - //overwriting default BG, is better detect? - if (g.theme.dark==1) v_color_erase=0x0000; //dynamic; //bg black - else if (g.theme.dark==0) v_color_erase=0xFFFF; //dynamic; //bg white +v_font_size1=16; +v_font_size2=50; +}else{ +//Banglejs2 or others +v_font_size1=11; //too small? +v_font_size2=40; +} +//overwriting default BG, is better detect? +if (g.theme.dark==1) v_color_erase=0x0000; //dynamic; //bg black +else if (g.theme.dark==0) v_color_erase=0xFFFF; //dynamic; //bg white } //print result function printTemperature(v_temp) { - if (v_mode_debug>1) console.log("v_temp in "+v_temp+" entries "+v_saved_entries); - ClearBox(); - //g.setFont("6x8",2).setFontAlign(0,0); - g.setFontVector(v_font_size1).setFontAlign(0,0); - var x = (rect.x+(rect.x2-60))/2;//-60 space for graph and layout buttons - var y = (rect.y+rect.y2)/2 + 20; +if (v_mode_debug>1) console.log("v_temp in "+v_temp+" entries "+v_saved_entries); - if (v_saveToFile==true) { - // if (v_mode_debug>0) console.log("prev color="+v_color); - printInfo("Recording : "+v_saved_entries, '#CC3333',x,rect.y+30); - //g.setColor('#CC3333'); //red - // g.drawString("Recording : "+v_saved_entries, x, rect.y+35); - //g.setColor(v_color);//restore default color - } - else printInfo("Rec paused : "+v_saved_entries, v_color,x,rect.y+30); - //else g.drawString("Rec paused : "+v_saved_entries, x, rect.y+35); - //space for printing info - g.drawString("Temperature:", x, rect.y+45+(v_font_size1*2)); - //dynamic font (g.getWidth() > 200 ? 60 : 40) - g.setFontVector(v_font_size2).setFontAlign(0,0); - // Avg of temperature readings - while (history.length>4) history.shift(); - history.push(v_temp); - var avrTemp = E.sum(history) / history.length; - //var t = require('locale').temp(avrTemp); - //.replace("'","°"); - lastMeasure=avrTemp.toString(); - if (lastMeasure.length>4) lastMeasure=lastMeasure.substr(0,4); - //DRAW temperature in the center - //remove g.drawString(" ", x-20, y); - g.drawString(v_temp+v_t_symbol, x, y); - g.flip(); +// Avg of temperature readings +while (history.length>4) history.shift(); +history.push(v_temp); +var avrTemp = E.sum(history) / history.length; +//var t = require('locale').temp(avrTemp); +//.replace("'","°"); +lastMeasure=avrTemp.toString(); +if (lastMeasure.length>4) lastMeasure=lastMeasure.substr(0,4); + + +ClearBox(); +//g.setFont("6x8",2).setFontAlign(0,0); +g.setFontVector(v_font_size1).setFontAlign(0,0); +var x = (rect.x+(rect.x2-60))/2;//-60 space for graph and layout buttons +var y = (rect.y+rect.y2)/2 + 20; + +if (v_saveToFile==true) { +// if (v_mode_debug>0) console.log("prev color="+v_color); +printInfo("Recording : "+v_saved_entries, '#CC3333',x,rect.y+30); +//g.setColor('#CC3333'); //red +// g.drawString("Recording : "+v_saved_entries, x, rect.y+35); +//g.setColor(v_color);//restore default color +} +else printInfo("Rec paused : "+v_saved_entries, v_color,x,rect.y+30); +//else g.drawString("Rec paused : "+v_saved_entries, x, rect.y+35); +//space for printing info +g.drawString("Temperature:", x, rect.y+45+(v_font_size1*2)); + +if (v_temp>v_t_max) { +g.setColor(v_color_erase); +g.drawString(v_t_max.toString().substr(0,5), rect.x2-40,(rect.y2/2)-30); +v_t_max=v_temp; +g.setColor(v_color); +} +g.drawString(v_t_max.toString().substr(0,5), rect.x2-40,(rect.y2/2)-30); +if (v_temp 200 ? 60 : 40) +g.setFontVector(v_font_size2).setFontAlign(0,0); + +//DRAW temperature in the center +//5 char required for negative degrees +g.drawString((v_temp.toString().substr(0,5))+v_t_symbol, x, y); +g.flip(); } // from: BJS2 pressure sensor, BJS1 inbuilt thermistor function getTemperature() { - if(v_model.substr(0,10)!='EMSCRIPTEN'){ - if (Bangle.getPressure) { - Bangle.getPressure().then(p =>{if (p) printTemperature(p);}); - } else printTemperature(E.getTemperature()); - } - else printTemperature(11.25);//fake temperature medition for emulators +if(v_model.substr(0,10)!='EMSCRIPTEN'){ +if (Bangle.getPressure) { +Bangle.getPressure().then(p =>{if (p) printTemperature(p);}); +} else printTemperature(E.getTemperature()); +} +else printTemperature(-11.2+Math.random());//fake temperature medition for emulators } /* Note that it changes BG and also FG to an opposite*/ -function changeBGcolor(){ - //pend to refactor - if (v_mode_debug>1) console.log("before BG/FG "+v_color_erase+" /"+v_color); - v_color_erase=0xFFFF-v_color_erase; - v_color=0xFFFF-v_color; - if (v_mode_debug>1) console.log("after result BG/FG "+v_color_erase+" /"+v_color); - //g.setColor(color_result); - g.setBgColor(v_color_erase);// 0 white, 1 black - g.setColor(v_color); - //move to event? - ClearScreen(); - ClearBox(); - drawGraph(); - getTemperature(); - //setDrawLayout(); //uncomment if layout can work with setUI - //g.clear();//impact on widgets +function changeBGcolor(){ +//pend to refactor +if (v_mode_debug>1) console.log("before BG/FG "+v_color_erase+" /"+v_color); +v_color_erase=0xFFFF-v_color_erase; +v_color=0xFFFF-v_color; +if (v_mode_debug>1) console.log("after result BG/FG "+v_color_erase+" /"+v_color); +//g.setColor(color_result); +g.setBgColor(v_color_erase);// 0 white, 1 black +g.setColor(v_color); +//move to event? +ClearScreen(); +ClearBox();//? +getTemperature(); +drawGraph(); +//setDrawLayout(); //uncomment if layout can work with setUI +//g.clear();//impact on widgets } function saveToFile(){ - //input global vars: lastMeasure - var a=new Date(); - var strlastSaveTime=new String(); - strlastSaveTime=a.toISOString(); - //strlastSaveTime=strlastSaveTime.concat(a.getFullYear(),a.getMonth()+1,a.getDate(),a.getHours(),a.getMinutes());; - if (v_mode_debug>1) console.log("saving="+strlastSaveTime+";"+a.getHours()+":"+a.getMinutes()+";"+lastMeasure); - if (v_saveToFile==true){ - //write(strlastSaveTime+";"+ - //var f = require("Storage").open(v_filename,"r"); - // f=require("Storage").read(v_filename+"\1");//suffix required load completely!! - //note that .read uses Storage Class .open uses StorageFile Class , difference in file chunks - // if (v_mode_debug>0) console.log("f "+f); - var f = require("Storage").open(v_filename,"r"); - if ((v_mode_debug>0) && (v_saved_entries==0)) console.log("file info:"+f); - if (f.len>0) { - if (!f) { - require("Storage").open(v_filename,"w").write("Month;Day;Time;Temp"+"\n"); - if (v_mode_debug>0) console.log("not exist but created "+f); - } - else{ - require("Storage").open(v_filename,"a").write((a.getMonth()+1)+";"+a.getDate()+";"+a.getHours()+":"+a.getMinutes()+";"+lastMeasure+"\n"); - //(getTime()+","); - v_saved_entries=v_saved_entries+1; - if (v_mode_debug>1) console.log("append to already exist "+f.name+" , "+v_saved_entries); - } - } - } - else if (v_mode_debug>0) console.log("recording mode stopped"); +//input global vars: lastMeasure +var a=new Date(); +var strlastSaveTime=new String(); +strlastSaveTime=a.toISOString(); +//strlastSaveTime=strlastSaveTime.concat(a.getFullYear(),a.getMonth()+1,a.getDate(),a.getHours(),a.getMinutes());; +if (v_mode_debug>1) console.log("saving="+strlastSaveTime+";"+a.getHours()+":"+a.getMinutes()+";"+lastMeasure); +if (v_saveToFile==true){ +//write(strlastSaveTime+";"+ +//var f = require("Storage").open(v_filename,"r"); +// f=require("Storage").read(v_filename+"\1");//suffix required load completely!! +//note that .read uses Storage Class .open uses StorageFile Class , difference in file chunks +// if (v_mode_debug>0) console.log("f "+f); +var f = require("Storage").open(v_filename,"r"); +if ((v_mode_debug>0) && (v_saved_entries==0)) console.log("file info:"+f); +if (f.len>0) { +if (!f) { +require("Storage").open(v_filename,"w").write("Month;Day;Time;Temp"+"\n"); +if (v_mode_debug>0) console.log("not exist but created "+f); +} +else{ +require("Storage").open(v_filename,"a").write((a.getMonth()+1)+";"+a.getDate()+";"+a.getHours()+":"+a.getMinutes()+";"+lastMeasure+"\n"); +//(getTime()+","); +v_saved_entries=v_saved_entries+1; +if (v_mode_debug>1) console.log("append to already exist "+f.name+" , "+v_saved_entries); +} +} +} +else if (v_mode_debug>0) console.log("recording mode stopped"); } function drawGraph(){ - var img_obj_thermo = { - width : 36, height : 36, bpp : 3, - transparent : 0, - buffer : require("heatshrink").decompress(atob("AEFt2AMKm3bsAMJjdt23ABhEB+/7tgaJ///DRUP//7tuADRP923YDRXbDRfymwaJhu/koaK7eyiwaK3cLDRlWDRY1NKBY1Ztu5kjmJg3cyVI7YMHgdu5Mkyu2fxHkyVJjdgDRFJkmRDRPsDQNbDQ5QBGoONKBJrBoxQIQwO2eRcbtu24AMIFIQLJAH4AMA==")) - }; - g.drawImage(img_obj_thermo,rect.x2-60,rect.y2/2); - g.flip(); +if (v_mode_debug>1) console.log("drawGraph"); +var img_obj_thermo = { +width : 36, height : 36, bpp : 3, +transparent : 0, +buffer : require("heatshrink").decompress(atob("AEFt2AMKm3bsAMJjdt23ABhEB+/7tgaJ///DRUP//7tuADRP923YDRXbDRfymwaJhu/koaK7eyiwaK3cLDRlWDRY1NKBY1Ztu5kjmJg3cyVI7YMHgdu5Mkyu2fxHkyVJjdgDRFJkmRDRPsDQNbDQ5QBGoONKBJrBoxQIQwO2eRcbtu24AMIFIQLJAH4AMA==")) +}; +g.drawImage(img_obj_thermo,rect.x2-60,rect.y2/2); +g.flip(); } function ClearScreen(){ - //avoid widget areas - g.setBgColor(v_color_erase); - g.clearRect(rect.x, rect.y+24, rect.x2, rect.y2-24); - g.flip(); +//avoid widget areas +g.setBgColor(v_color_erase); +g.clearRect(rect.x, rect.y+24, rect.x2, rect.y2-24); +g.flip(); } function ClearBox(){ - //custom boxarea , left space for static graph at right - g.setBgColor(v_color_erase); - g.clearRect(rect.x, rect.y+24, rect.x2-60, rect.y2-24); - g.flip(); +//custom boxarea , left space for static graph at right +g.setBgColor(v_color_erase); +g.clearRect(rect.x, rect.y+24, rect.x2-60, rect.y2-24); +g.flip(); } function introPage(){ - //g.setFont("6x8",2).setFontAlign(0,0); - g.setFontVector(v_font_size1).setFontAlign(-1,0); - //x alignment. -1=left (default), 0=center, 1=right - var x=3; - //dynamic positions as height for BJS1 is double than BJS2 - var y = (rect.y+rect.y2)/2 + 10; - g.drawString(" Default values ", x, y - ((v_font_size1*3)+2)); - g.drawString("--------------------", x, y - ((v_font_size1*2)+2)); - g.drawString("Mode debug: "+v_mode_debug, x, y - ((v_font_size1*1)+2)); - g.drawString("Read freq(ms): "+readFreq, x, y ); - g.drawString("Save to file: "+v_saveToFile, x, y+ ((v_font_size1*1)+2) ); - g.drawString("Save freq(ms):"+saveFreq, x, y+((v_font_size1*2)+2) ); - fr=require("Storage").read(v_filename+"\1");//suffix required - if (fr) g.drawString("Filesize:"+fr.length.toString()+"kb", x, y+((v_font_size1*3)+2) ); - else g.drawString("File not exist", x, y+((v_font_size1*3)+2)); +//g.setFont("6x8",2).setFontAlign(0,0); +g.setFontVector(v_font_size1).setFontAlign(-1,0); +//x alignment. -1=left (default), 0=center, 1=right +var x=3; +//dynamic positions as height for BJS1 is double than BJS2 +var y = (rect.y+rect.y2)/2 + 10; +g.drawString(" Default values ", x, y - ((v_font_size1*3)+2)); +g.drawString("--------------------", x, y - ((v_font_size1*2)+2)); +g.drawString("Mode debug: "+v_mode_debug, x, y - ((v_font_size1*1)+2)); +g.drawString("Read frq(ms): "+readFreq, x, y ); +g.drawString("Save file: "+v_saveToFile, x, y+ ((v_font_size1*1)+2) ); +g.drawString("Save frq(ms):"+saveFreq, x, y+((v_font_size1*2)+2) ); +fr=require("Storage").read(v_filename+"\1");//suffix required +if (fr) g.drawString("Filesize:"+fr.length.toString()+"kb", x, y+((v_font_size1*3)+2) ); +else g.drawString("File not exist", x, y+((v_font_size1*3)+2)); } function printInfo(pmsg, pcolor,px,py){ - g.setColor(pcolor); - g.setFontVector(v_font_size1).setFontAlign(0,0); - g.drawString(pmsg, px,py+v_font_size1); - g.setColor(v_color);//restore default color +g.setColor(pcolor); +g.setFontVector(v_font_size1).setFontAlign(0,0); +g.drawString(pmsg, px,py+v_font_size1); +g.setColor(v_color);//restore default color } function toggleRecMode(duration, exectime){ - //bydefault float, standard epoch requires *1000 - if (v_mode_debug>0) console.log("duration"+duration); - if (duration>2) { //delete file - var x = (rect.x+(rect.x2-60))/2; - printInfo("Deleting file",'#CC3333',x, rect.y+32+v_font_size1); - // g.setColor('#CC3333'); //red +//bydefault float, standard epoch requires *1000 +if (v_mode_debug>0) console.log("duration"+duration); +if (duration>2) { //delete file +var x = (rect.x+(rect.x2-60))/2; +printInfo("Deleting file",'#CC3333',x, rect.y+32+v_font_size1); +// g.setColor('#CC3333'); //red - //too long "Deleting file: "+v_filename, - // for StorageFiles created with require("Storage").open(filename, ...) - //require("Storage").erase(v_filename); - //TODO refactor in a new function - //var mifile = require("Storage").open(v_filename,"w"); - var mifile = require("Storage").open("temphistory.csv","w"); - var v_output=mifile.erase(); - //mifile.StorageFile.erase(); - if (v_mode_debug>0) console.log("output"+v_output); - setTimeout(function() { if (v_mode_debug>0) console.log("pause for 1 sec");},1000); - return; //leave this function - } - if (v_saveToFile) v_saveToFile=false; - else v_saveToFile=true; - if (v_mode_debug>0) console.log("recording? "+v_saveToFile); - setRecordingFreq(); +//too long "Deleting file: "+v_filename, +// for StorageFiles created with require("Storage").open(filename, ...) +//require("Storage").erase(v_filename); +//TODO refactor in a new function +//var mifile = require("Storage").open(v_filename,"w"); +var mifile = require("Storage").open("temphistory.csv","w"); +var v_output=mifile.erase(); +//mifile.StorageFile.erase(); +if (v_mode_debug>0) console.log("output"+v_output); +setTimeout(function() { if (v_mode_debug>0) console.log("pause for 1 sec");},1000); +return; //leave this function +} +if (v_saveToFile) v_saveToFile=false; +else v_saveToFile=true; +if (v_mode_debug>0) console.log("recording? "+v_saveToFile); +setRecordingFreq(); } function setRecordingFreq(){ - if (v_saveToFile==true) { //TODO now start on false btn will no enable - id_rec_intv=setInterval(function() { - saveToFile(); - }, saveFreq); //ms - if (v_mode_debug>0) console.log("interval id / frq"+id_rec_intv+" / "+saveFreq); - } - else if (id_rec_intv){ - clearInterval(id_rec_intv); - if (v_mode_debug>0) console.log("rec interval removed, id "+id_rec_intv); - id_rec_intv=0; // to reset var - } +if (v_saveToFile==true) { //TODO now start on false btn will no enable +id_rec_intv=setInterval(function() { +saveToFile(); +}, saveFreq); //ms +if (v_mode_debug>0) console.log("interval id / frq"+id_rec_intv+" / "+saveFreq); +} +else if (id_rec_intv){ +clearInterval(id_rec_intv); +if (v_mode_debug>0) console.log("rec interval removed, id "+id_rec_intv); +id_rec_intv=0; // to reset var +} } -function UserInput(){ - //theoretically incompatible with Layout - Bangle.setUI({ - mode : "custom", - //adds a back icon on top widget area - back : function() {load();}, - //touch : function(n,e) {}, // optional - handler for 'touch' events - // righ/Left 1/-1 , updown - swipe : function(dir_rl,dir_ud) { - if(dir_rl == 1) { - if (v_mode_debug>0) console.log("swipe right: "); - getFileInfo(v_filename); - } - else if (dir_rl == -1){ - if (v_mode_debug>0) console.log("swipe left: "); - changeBGcolor(); - } - }, - touch : function(tzone,tobj){ - if ((process.env.HWVERSION == 2)&&(v_mode_debug>0)){ - console.log("tobj x,y,type : "+tobj.x+" "+tobj.y+" "+tobj.type); - } - switch(tzone){ - //case 1: //left , back managed by setUI - case 2: // right disable/enable recording - toggleRecMode(0); //toggleRecMode(duration, exectime) - break; - // case 3: console.log("Touch 3 aka 1+2 not for BJS1 emul");//center 1+2 - // break; - } - }, - //inferior to - btn : function(btn) { - if(btn == 1) { - if (v_model=='BANGLEJS'||v_model=='EMSCRIPTEN') toggleRecMode(1); //console.log("btn1 BJS1"); - else mainBtnShortcut(); //console.log("btn1 BJS2"); - } - else if (btn == 2) mainBtnShortcut(); //console.log("btn2 BJS1"); - else if (btn == 3) changeBGcolor(); //console.log("btn3 BJS1"); - } - }); //endof setUI +function UserInput(){ +//theoretically incompatible with Layout +Bangle.setUI({ +mode : "custom", +//adds a back icon on top widget area +back : function() {load();}, +//touch : function(n,e) {}, // optional - handler for 'touch' events +// righ/Left 1/-1 , updown +swipe : function(dir_rl,dir_ud) { +if(dir_rl == 1) { +if (v_mode_debug>0) console.log("swipe right: "); +getFileInfo(v_filename); +} +else if (dir_rl == -1){ +if (v_mode_debug>0) console.log("swipe left: "); +changeBGcolor(); +} +}, +touch : function(tzone,tobj){ +if ((process.env.HWVERSION == 2)&&(v_mode_debug>0)){ +console.log("tobj x,y,type : "+tobj.x+" "+tobj.y+" "+tobj.type); +} +switch(tzone){ +//case 1: //left , back managed by setUI +case 2: // right disable/enable recording +toggleRecMode(0); //toggleRecMode(duration, exectime) +break; +// case 3: console.log("Touch 3 aka 1+2 not for BJS1 emul");//center 1+2 +// break; +} +}, +//inferior to +btn : function(btn) { +if(btn == 1) { +if (v_model=='BANGLEJS'||v_model=='EMSCRIPTEN') toggleRecMode(1); //console.log("btn1 BJS1"); +else mainBtnShortcut(); //console.log("btn1 BJS2"); +} +else if (btn == 2) mainBtnShortcut(); //console.log("btn2 BJS1"); +else if (btn == 3) changeBGcolor(); //console.log("btn3 BJS1"); +} +}); //endof setUI } -function mainBtnShortcut() { - //if messages app installed shortcut otherwise default access to launcher - if (require("Storage").read("messagegui.app.js")===undefined) - { - if (require("Storage").read("messagelist.app.js")===undefined) Bangle.showLauncher(); // implies btn2(js1) btn(js2)- launcher - else if (v_model=='BANGLEJS'||v_model=='EMSCRIPTEN') load("messagelist.app.js"); - else load("messagelist.app.js"); - } - else if (v_model=='BANGLEJS'||v_model=='EMSCRIPTEN') load("messagegui.app.js"); - else load("messagegui.app.js"); - } +function mainBtnShortcut() { +//if messages app installed shortcut otherwise default access to launcher +if (require("Storage").read("messagegui.app.js")===undefined) +{ +if (require("Storage").read("messagelist.app.js")===undefined) Bangle.showLauncher(); // implies btn2(js1) btn(js2)- launcher +else if (v_model=='BANGLEJS'||v_model=='EMSCRIPTEN') load("messagelist.app.js"); +else load("messagelist.app.js"); +} +else if (v_model=='BANGLEJS'||v_model=='EMSCRIPTEN') load("messagegui.app.js"); +else load("messagegui.app.js"); +} // Show file size -function getFileInfo(v_filename) { - var f = require("Storage").open(v_filename,"r"); - //todo refactor and reuse common code - g.setFontVector(v_font_size1).setFontAlign(0,0); - var x = (rect.x+(rect.x2-60))/2; - printInfo("file size:"+f.len,v_color,x, rect.y+32+v_font_size1); - // g.drawString("file size:"+f.len, x, rect.y+37+v_font_size1); - if (v_mode_debug>0) console.log("file "+v_filename+" size: "+f.len); +function getFileInfo(v_filename) { +var f = require("Storage").open(v_filename,"r"); +//todo refactor and reuse common code +g.setFontVector(v_font_size1).setFontAlign(0,0); +var x = (rect.x+(rect.x2-60))/2; +printInfo("file size:"+f.len,v_color,x, rect.y+32+v_font_size1); +// g.drawString("file size:"+f.len, x, rect.y+37+v_font_size1); +if (v_mode_debug>0) console.log("file "+v_filename+" size: "+f.len); }// not used //MAIN SetVariables(); Bangle.loadWidgets(); - ClearScreen(); introPage(); - //setDrawLayout(); //uncomment if layout can work with setUI UserInput(); //inc SetUI and back icon setInterval(function() { - getTemperature(); +getTemperature(); }, readFreq); //ms - +//??need +drawGraph(); setRecordingFreq(); } \ No newline at end of file diff --git a/apps/tempmonitor/tempmonitor.info b/apps/tempmonitor/tempmonitor.info index f31704b57..4d20912ac 100644 --- a/apps/tempmonitor/tempmonitor.info +++ b/apps/tempmonitor/tempmonitor.info @@ -1 +1 @@ -{"id":"tempmonitor","name":"tempmonitor","src":"tempmonitor.app.js","icon":"tempmonitor.img","version":"0.03","files":"tempmonitor.info,tempmonitor.app.js,tempmonitor.img"} \ No newline at end of file +{"id":"tempmonitor","name":"tempmonitor","src":"tempmonitor.app.js","icon":"tempmonitor.img","version":"0.04","files":"tempmonitor.info,tempmonitor.app.js,tempmonitor.img"} \ No newline at end of file diff --git a/apps/wohrm/app.js b/apps/wohrm/app.js index 4b7ab7fc6..e32ab36ba 100644 --- a/apps/wohrm/app.js +++ b/apps/wohrm/app.js @@ -58,7 +58,7 @@ const lowerLshape = { }; const centerBar = { - //1.5 =height*2 + //1.5 =height*2 minY: (upperLshape.bottom + upperLshape.top - (upperLshape.rectWidth*1.5))/2, maxY: (upperLshape.bottom + upperLshape.top + (upperLshape.rectWidth*1.5))/2, confidenceWidth: isB1 ? 10 : 8, @@ -182,8 +182,8 @@ function renderCurrentHeartRate() { g.setFontAlign(0, 0, 0);//center g.drawString(currentHeartRate, // Math.max(upperLshape.right+upperLshape.cornerRoundness, lowerLshape.right-lowerLshape.cornerRoundness), - // Math.max(upperLshape.right+upperLshape.cornerRoundness, lowerLshape.right-lowerLshape.cornerRoundness)-(g.stringWidth(currentHeartRate)/2), - centerBar.minX+((centerBar.maxX-centerBar.minX)/2), + // Math.max(upperLshape.right+upperLshape.cornerRoundness, lowerLshape.right-lowerLshape.cornerRoundness)-(g.stringWidth(currentHeartRate)/2), + centerBar.minX+((centerBar.maxX-centerBar.minX)/2), (centerBar.minY+centerBar.maxY)/2); //Reset alignment to defaults