From dfe753d306bf12f9b1ff58f8a8a2e57aa995de60 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Fri, 10 Dec 2021 23:33:47 +0900 Subject: [PATCH 01/12] Create awairmonitor/app.js --- apps/awairmonitor/app.js | 97 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 apps/awairmonitor/app.js diff --git a/apps/awairmonitor/app.js b/apps/awairmonitor/app.js new file mode 100644 index 000000000..19905de13 --- /dev/null +++ b/apps/awairmonitor/app.js @@ -0,0 +1,97 @@ +Graphics.prototype.setFontMichroma36 = function() { +g.setFontCustom(atob("AAAAAAAAAAAAAAAAeAAAAAeAAAAAeAAAAAeAAAAAAAAAAAAAAAAAAAAAAAGAAAAA+AAAAD+AAAAP+AAAA/8AAAD/wAAAf/AAAB/4AAAH/gAAAf+AAAB/4AAAH/gAAAf+AAAAfwAAAAfAAAAAcAAAAAAAAAAAAAAAAAAAAAAAA///AAD///wAH///4AP///8APwAD+APAAAeAeAAAeAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAeAPAAAeAPwAD+AP///8AH///4AD///wAA///AAAAAAAAAAAAAAAAAAAAAEAAAAAOAAAAAfAAAAA+AAAAB8AAAAD8AAAAH4AAAAPwAAAAPgAAAAfAAAAAf///+Af///+Af///+Af///+AAAAAAAAAAAAAAAAAAAAAAAAAA/Af+AD/A/+AH/B/+AP/D/+APwD4eAPADweAfADweAeADweAeADweAeADweAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAPgeAeAPAeAeAPAeAeAPAeAeAPAeAfAPAeAPw/AeAP/+AeAH/+AeAD/8AeAB/wAOAAAAAAAAAAAAAAAAAAAAAAAAAB8APgAD8AP4AH8AP8AP8AP8APgAB+AfAAAeAeAAAeAeAAAPAeAAAPAeAAAPAeAAAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAeAfAeAeAPx/h+AP///+AH///8AD///4AB/h/gAAAAAAAAAAAAAAAAAAAAAAeAAAAA/AAAAA/AAAAB/AAAAD/AAAAH/AAAAPvAAAAPPAAAAfPAAAA+PAAAB8PAAAD4PAAADwPAAAHwPAAAPgPAAAfAPAAA+APAAA8APAAB8APAAD4APAAHwAPAAPgAPAAPAAPAAfAAPAAf///+Af///+Af///+Af///+AAAAPAAAAAPAAAAAPAAAAAPAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAf/8PgAf/8P4Af/8P8Af/8P8AeB4A+AeB4AeAeDwAeAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAfAeDwAeAeD4A+AeD+D+AeB//8AeB//4AeA//4AAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAA///AAD///wAH///4AH///8AP4fB+APAeAeAfA8AeAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAfA8APAPA+AeAPgeAeAP8fh+AH8f/8AD8P/8AA8H/4AAAB/gAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAeAAAAAeAAAAAeAAAAAeAAAAAeAAACAeAAAGAeAAAOAeAAAeAeAAA+AeAAD+AeAAH8AeAAP4AeAAfwAeAA/gAeAB/AAeAD+AAeAP4AAeAfwAAeA/gAAeB/AAAeD+AAAeH8AAAefwAAAe/gAAAf/AAAAf+AAAAf8AAAAf4AAAAfgAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAMAAB+B/wAD/j/4AH/3/8AP///+AP//A+AfB+AeAeA+AeAeA+APAeA+APAeA+APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA+APAeA+APAeA+APAeA+AOAeA+AeAPh/A+AP///+AP/3/8AH/3/8AB/D/wAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAD/4HAAH/8HwAP/+H4AP5/H8AfAfA8AeAPAeAeAPAeAeAPAeAeAHgfAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHAPAeAPAOAeAPAeAPAPAeAPwfB+AP///8AH///4AD///wAA///AAAAAAAAAAAAAAAAAAAAAAAAAAAB8DwAAB8HwAAB8HwAAB8DwAAAAAAAAAAAAA"), 46, atob("CBIkESMjJCMjIyMjCA=="), 36+(1<<8)+(1<<16)); +}; + +var drawTimeout; + +function queueNextDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 1000 - (Date.now() % 1000)); +} + +var locale = require("locale"); + +var bt_current_co2 = 0; +var bt_current_voc = 0; +var bt_current_pm25 = 0; +var bt_current_humi = 0; +var bt_current_temp = 0; +var bt_last_update = 0; + +var last_update = 0; +var bt_co2_history = new Array(10).fill(0); +var bt_voc_history = new Array(10).fill(0); +var bt_pm25_history = new Array(10).fill(0); +var bt_humi_history = new Array(10).fill(0); +var bt_temp_history = new Array(10).fill(0); + +var internal_last_update = -1; + +function draw() { + g.reset().clearRect(0,24,g.getWidth(),g.getHeight()); + + var date = new Date(); + g.setFontAlign(0,0); + g.setFont("Michroma36").drawString(locale.time(date,1), g.getWidth()/2, 56); + + g.setFont("6x8"); + g.drawString(locale.date(new Date(),1), g.getWidth()/2, 80); + + g.setFont("6x8"); + g.drawString("CO2", 20, 100); + g.drawString("VOC", 55, 100); + g.drawString("PM25", 90, 100); + g.drawString("Humi", 125, 100); + g.drawString("Temp", 160, 100); + + g.setFont("HaxorNarrow7x17"); + g.drawString(""+bt_current_co2, 18, 110); + g.drawString(""+bt_current_voc, 53, 110); + g.drawString(""+bt_current_pm25, 88, 110); + g.drawString(""+bt_current_humi, 123, 110); + g.drawString(""+bt_current_temp, 158, 110); + + if (last_update != bt_last_update) { + last_update = bt_last_update; + internal_last_update = last_update; + if (last_update % 10 == 0) { + bt_co2_history.shift(); bt_co2_history.push(bt_current_co2); + bt_voc_history.shift(); bt_voc_history.push(bt_current_voc); + bt_pm25_history.shift(); bt_pm25_history.push(bt_current_pm25); + bt_humi_history.shift(); bt_humi_history.push(bt_current_humi); + bt_temp_history.shift(); bt_temp_history.push(bt_current_temp); + } + } + + if (internal_last_update == -1) { + g.drawString("Waiting for connection", 88, 164); + } else if (internal_last_update > last_update + 5) { + g.drawString("Trying to reconnect since " + (internal_last_update - last_update), 88, 164); + } + + + for (i = 0; i < 10; i++) { + // max height = 32 + g.drawLine(10+i*2, 150-(Math.min(Math.max(bt_co2_history[i],400), 1200)-400)/25, 10+i*2, 150); + g.drawLine(45+i*2, 150-(Math.min(Math.max(bt_voc_history[i],0), 1440)-0)/45, 45+i*2, 150); + g.drawLine(80+i*2, 150-(Math.min(Math.max(bt_pm25_history[i],0), 32)-0)/1, 80+i*2, 150); + g.drawLine(115+i*2, 150-(Math.min(Math.max(bt_humi_history[i],20), 60)-20)/1.25, 115+i*2, 150); + g.drawLine(150+i*2, 150-(Math.min(Math.max(bt_temp_history[i],16), 32)-16)*2, 150+i*2, 150); + + // target humidity level + g.setColor("#00F").drawLine(115, 150-(40-20)/1.25, 115+18, 150-(40-20)/1.25); + } + + if (internal_last_update != -1) { internal_last_update++; } + queueNextDraw(); +} + +// init +require("FontHaxorNarrow7x17").add(Graphics); +g.clear(); +Bangle.loadWidgets(); +Bangle.drawWidgets(); +draw(); From b88223ed0ddc9594698cb877ae25d248cd165afc Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 00:02:39 +0900 Subject: [PATCH 02/12] AwairMonitor: fixed graph color and temperature scale --- apps/awairmonitor/app.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/awairmonitor/app.js b/apps/awairmonitor/app.js index 19905de13..a5a1d1a72 100644 --- a/apps/awairmonitor/app.js +++ b/apps/awairmonitor/app.js @@ -79,10 +79,11 @@ function draw() { g.drawLine(45+i*2, 150-(Math.min(Math.max(bt_voc_history[i],0), 1440)-0)/45, 45+i*2, 150); g.drawLine(80+i*2, 150-(Math.min(Math.max(bt_pm25_history[i],0), 32)-0)/1, 80+i*2, 150); g.drawLine(115+i*2, 150-(Math.min(Math.max(bt_humi_history[i],20), 60)-20)/1.25, 115+i*2, 150); - g.drawLine(150+i*2, 150-(Math.min(Math.max(bt_temp_history[i],16), 32)-16)*2, 150+i*2, 150); + g.drawLine(150+i*2, 150-(Math.min(Math.max(bt_temp_history[i],19), 27)-19)*4, 150+i*2, 150); // target humidity level g.setColor("#00F").drawLine(115, 150-(40-20)/1.25, 115+18, 150-(40-20)/1.25); + g.reset(); } if (internal_last_update != -1) { internal_last_update++; } From 60eb8ef7ecf856e49331c514458ae188f9d9f8b5 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 00:10:37 +0900 Subject: [PATCH 03/12] AwairMonitor: screenshot --- apps/awairmonitor/screenshot.png | Bin 0 -> 3974 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/awairmonitor/screenshot.png diff --git a/apps/awairmonitor/screenshot.png b/apps/awairmonitor/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..51ca0aa44aa953c2748c61795b163b1e7851cb68 GIT binary patch literal 3974 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 literal 0 HcmV?d00001 From 13e68ec8b415ebe39c5cd65484bf6eaadc53601d Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 12:55:38 +0900 Subject: [PATCH 04/12] Awair Monitor: icon --- apps/awairmonitor/app.png | Bin 0 -> 3096 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/awairmonitor/app.png diff --git a/apps/awairmonitor/app.png b/apps/awairmonitor/app.png new file mode 100644 index 0000000000000000000000000000000000000000..26a5d0cff8c5401381ac47e33622a02930bb0d77 GIT binary patch literal 3096 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 literal 0 HcmV?d00001 From 7152cd6d1b5382cd3a806d077ede8842bddc0130 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 13:26:38 +0900 Subject: [PATCH 05/12] Awair Monitor: awair_to_bangle.html --- apps/awairmonitor/awair_to_bangle.html | 195 +++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 apps/awairmonitor/awair_to_bangle.html diff --git a/apps/awairmonitor/awair_to_bangle.html b/apps/awairmonitor/awair_to_bangle.html new file mode 100644 index 000000000..2926cca9e --- /dev/null +++ b/apps/awairmonitor/awair_to_bangle.html @@ -0,0 +1,195 @@ + + + + + + + + + + +

+How to use +

+Step 1: Enable the Local API on your Awair: https://support.getawair.com/hc/en-us/articles/360049221014-Awair-Local-API-Feature +

+Step 2: Modify this HTML file to input the IP address of your Awair on top (const awair_ip_1 = "192.168.xx.xx") +

+Step 3: Launch the Awair Monitor app on your BangleJS +

+Step 4: Click "Connect BangleJS" +

+Step 5: Optionally, open the web inspector's console (Right click > Inspector > Console) to read the bluetooth logs +

+ +
+ + +
+ +

+ +
+
+
+
+
+ + From ebf62e8328880e100764edecf1a1adeef73a47a4 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 13:28:42 +0900 Subject: [PATCH 06/12] Create ChangeLog --- apps/awairmonitor/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/awairmonitor/ChangeLog diff --git a/apps/awairmonitor/ChangeLog b/apps/awairmonitor/ChangeLog new file mode 100644 index 000000000..0cc9a42b0 --- /dev/null +++ b/apps/awairmonitor/ChangeLog @@ -0,0 +1 @@ +0.01: Beta version for Bangle 2 paired with Chrome (2021/12/11) From 2c77ea939af700526c16836ffd781bebb8f7c1bb Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 13:51:19 +0900 Subject: [PATCH 07/12] Create README.md --- apps/awairmonitor/README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 apps/awairmonitor/README.md diff --git a/apps/awairmonitor/README.md b/apps/awairmonitor/README.md new file mode 100644 index 000000000..09434bcde --- /dev/null +++ b/apps/awairmonitor/README.md @@ -0,0 +1,20 @@ +# Awair Monitor + +Display the level of CO2, VOC, PM 2.5, Humidity and Temperature, from your Awair device. + +* What you need: + * A BangleJS 2 + * An Awair device [with local API enabled](https://support.getawair.com/hc/en-us/articles/360049221014-Awair-Local-API-Feature) + * The web app [awair_to_bangle.html](awairmonitor/awair_to_bangle.html) that will retrive the data from your Awair device and sent it to your BangleJS 2 through Chrome's Bluetooth LE connection +* How to get started + * Open awair_to_bangle.html with a text/code editor and input the IP address of your Awair on top (const awair_ip_1 = "192.168.xx.xx") + * Launch the Awair Monitor app on your BangleJS + * Open awair_to_bangle.html on Chrome and click "Connect BangleJS" - it connects to your watch the same way as the Bangle app store + * Once connected to the watch with the app running, the watch app is updated once per second + +![](screenshot.png) + +## Creator +[@alainsaas](https://github.com/alainsaas) + +Contributions are welcome, send me your Pull Requests! From 0bfbf34e20c18f7f2206a32296d6e3e3f31103d5 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 13:52:14 +0900 Subject: [PATCH 08/12] Update README.md --- apps/awairmonitor/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/awairmonitor/README.md b/apps/awairmonitor/README.md index 09434bcde..98f5bee75 100644 --- a/apps/awairmonitor/README.md +++ b/apps/awairmonitor/README.md @@ -1,6 +1,6 @@ # Awair Monitor -Display the level of CO2, VOC, PM 2.5, Humidity and Temperature, from your Awair device. +Displays the level of CO2, VOC, PM 2.5, Humidity and Temperature, from your Awair device. * What you need: * A BangleJS 2 From 653156c0e684a6e6917d1b97d5ea7a13e9ae83b7 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 18:53:59 +0900 Subject: [PATCH 09/12] Create app-icon.js --- apps/awairmonitor/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/awairmonitor/app-icon.js diff --git a/apps/awairmonitor/app-icon.js b/apps/awairmonitor/app-icon.js new file mode 100644 index 000000000..9d4dcf4a3 --- /dev/null +++ b/apps/awairmonitor/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwgP/AD38g4FD8EAAoeAgE/AoUD/EfAgP+AYMPDgQPBw4FB/F///DAoPwAQPjAQPBAQPxDgJVCAoP4gYaCCwIcBAoM/8P8h0HjEP8f4h0Gp0H4/44lj5+H4/54lzj/jx/5/lyDgIFDh/xAoQRBAoXsuY8Bx4jCAoeEkYFB447CAoRxBOAPxM4RmC8IFD4ZZD/8H/DHDh/+AoaSBUAIABCoYATVwS2Ct4FE84REXQQLCk4RJAo0XGxY=")) From d55ef2cd018eb901459e8cf23cc238e96e8b70aa Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 19:01:34 +0900 Subject: [PATCH 10/12] Update apps.json --- apps.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps.json b/apps.json index fd2e14e60..1c43ffdad 100644 --- a/apps.json +++ b/apps.json @@ -4857,5 +4857,19 @@ {"name":"clicompleteclk.app.js","url":"app.js"}, {"name":"clicompleteclk.img","url":"app-icon.js","evaluate":true} ] -} +}, + { + "id":"awairmonitor", + "name":"Awair Monitor", + "icon": "app.png", + "version":"0.01", + "description": "Displays the level of CO2, VOC, PM 2.5, Humidity and Temperature, from your Awair device.", + "tags": "tool,health", + "readme":"README.md", + "supports":["BANGLEJS2"], + "storage": [ + {"name":"awairmonitor.app.js","url":"app.js"}, + {"name":"awairmonitor.img","url":"app-icon.js","evaluate":true} + ] + } ] From c7177a6aec18d8737d88fc4c353796be7ac85ba5 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 19:09:14 +0900 Subject: [PATCH 11/12] Update README.md --- apps/awairmonitor/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/awairmonitor/README.md b/apps/awairmonitor/README.md index 98f5bee75..8d6e25633 100644 --- a/apps/awairmonitor/README.md +++ b/apps/awairmonitor/README.md @@ -5,7 +5,7 @@ Displays the level of CO2, VOC, PM 2.5, Humidity and Temperature, from your Awai * What you need: * A BangleJS 2 * An Awair device [with local API enabled](https://support.getawair.com/hc/en-us/articles/360049221014-Awair-Local-API-Feature) - * The web app [awair_to_bangle.html](awairmonitor/awair_to_bangle.html) that will retrive the data from your Awair device and sent it to your BangleJS 2 through Chrome's Bluetooth LE connection + * The web app [awair_to_bangle.html](awair_to_bangle.html) that will retrive the data from your Awair device and sent it to your BangleJS 2 through Chrome's Bluetooth LE connection * How to get started * Open awair_to_bangle.html with a text/code editor and input the IP address of your Awair on top (const awair_ip_1 = "192.168.xx.xx") * Launch the Awair Monitor app on your BangleJS From 93f28915481cb167e58c462c69133f90d2eadd92 Mon Sep 17 00:00:00 2001 From: Alain Saas Date: Sat, 11 Dec 2021 19:10:02 +0900 Subject: [PATCH 12/12] Update apps.json --- apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps.json b/apps.json index 1c43ffdad..e70e95454 100644 --- a/apps.json +++ b/apps.json @@ -4862,6 +4862,7 @@ "id":"awairmonitor", "name":"Awair Monitor", "icon": "app.png", + "allow_emulator": true, "version":"0.01", "description": "Displays the level of CO2, VOC, PM 2.5, Humidity and Temperature, from your Awair device.", "tags": "tool,health",