From ba96c2a46bcbb6b83c106d1f88f5a8f96870da98 Mon Sep 17 00:00:00 2001 From: Will Murray Date: Thu, 30 Apr 2020 20:33:49 +0100 Subject: [PATCH 01/35] Set theme jekyll-theme-slate --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 000000000..c74188174 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-slate \ No newline at end of file From 885b328e3865719027c1f9a9a02fe79c3df5d643 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:31:17 +0100 Subject: [PATCH 02/35] Add image assets --- apps/smartswitch/light-off.js | 1 + apps/smartswitch/light-on.js | 1 + apps/smartswitch/smartswitch-icon.js | 1 + apps/smartswitch/smartswitch-off.js | 1 + 4 files changed, 4 insertions(+) create mode 100644 apps/smartswitch/light-off.js create mode 100644 apps/smartswitch/light-on.js create mode 100644 apps/smartswitch/smartswitch-icon.js create mode 100644 apps/smartswitch/smartswitch-off.js diff --git a/apps/smartswitch/light-off.js b/apps/smartswitch/light-off.js new file mode 100644 index 000000000..c6e6b7e77 --- /dev/null +++ b/apps/smartswitch/light-off.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AGeJAAwttGMotLGMQiD1uzAAWtGEgtE64ACF5IwbFwYtESUouGFpowaFywvXDIS7CFyIwXLwouSF6peF1ovrRqowWF4heEstlApIveDolfAAIEGF76OGFYQuMF6+zdo4uOF6+tF49lFwK9KF7AAJLxovUGBiOhF+IwLF5guWF+AwKF5YuYGBQvKFzQwJF5IucGBAvIFzwwHF44ugF+AwFF4wui/2CABQvrr1YAAIvjrwoDAAwvjFhFeR8onDX/4vcXxIvkYA73BR0gACYA4umMI4uoGAouqAH4AK")) \ No newline at end of file diff --git a/apps/smartswitch/light-on.js b/apps/smartswitch/light-on.js new file mode 100644 index 000000000..a3e7c322f --- /dev/null +++ b/apps/smartswitch/light-on.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AT5gAGFtoxlFpYxhFp4xeFyYwaFyowZF9wuXGC4vuFzIwVF9wdK53OApIwYDRHN6gAC5oFFF8QoC5wyIMRAvZ5wkERgJbCBQqPfEoKGGL4S/j5i3GFwS/jK5BnIF6owMW4S8KFygvKSIQDFF85bBF8QwKF54uUF+AwJF5wuWF+AwIF5ouYGBAvMFzQwHF5YucGAwvKFzwwFF5IugAAOCAA1erAABF0X+rwoDAAwvjFhFeMYIvkE4QAHF8a/vwS+JF8jAHe4KOkGAaQFroumAAUrAAQtpGAgusAH4A/AFI=")) \ No newline at end of file diff --git a/apps/smartswitch/smartswitch-icon.js b/apps/smartswitch/smartswitch-icon.js new file mode 100644 index 000000000..9153bd3ca --- /dev/null +++ b/apps/smartswitch/smartswitch-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/AH4A/AH4Ag1gAECyGFAB1bAAmAFooyQFp4uGEoWIwQAEGBgtQFwtcFpAACxAwJFyIvFEAItIMAowFF1IwFF6zqBRhIvIxBetMAYvWdgJeSAAOHFyQvEw5eRBAeIF6+IF5wIHF66+LTJIvlNBaPfRRAved4g0BAASNJd4f+F61cFQYAEFxQ/Bw4vXYAQAFLxms/wABGC2ALyaOBF7BgGLyAweFyIwTF4jyDLxKMBFw4xTGAhhEFpAuKGKQwFeg4ADFxgAZFlgA/AH4A/AH4A/AH4A/AH4AhA")) \ No newline at end of file diff --git a/apps/smartswitch/smartswitch-off.js b/apps/smartswitch/smartswitch-off.js new file mode 100644 index 000000000..58e6e94e6 --- /dev/null +++ b/apps/smartswitch/smartswitch-off.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/AH4A/AH4AI1gAEFlgAEz2WAAm6ABwuPxGCAAgJC0wwVGJQtIAAWIGIWXF6gxIEAItIMAgABMCowGFyKSGGCulRhQvHegovVLySRGF6QwBLyjyaF4IuQBAaQX3WmF5wIG0ovXXxaZJYDLuMF8SPHRRCPed4mIcwaNJd7YvBAA4uKH4OXF63+/wuHLxi+YF4JgHLxiOXFwJgHLxmmFwYvXGAqNQFzAwELxKMBdjQwJMAwtCRgovRFpDDIAAjqEFyItLGRQWQAH4A/AH4A/AH4A/AH4A/AH4AP")) \ No newline at end of file From ef7187dff12bf9e84222a0f6707020891818a2e4 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:31:27 +0100 Subject: [PATCH 03/35] Add app --- apps/smartswitch/smartswitch.app.js | 79 +++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 apps/smartswitch/smartswitch.app.js diff --git a/apps/smartswitch/smartswitch.app.js b/apps/smartswitch/smartswitch.app.js new file mode 100644 index 000000000..90e0a82a8 --- /dev/null +++ b/apps/smartswitch/smartswitch.app.js @@ -0,0 +1,79 @@ + +// Learn more! +// https://www.espruino.com/Reference#l_NRF_setAdvertising +// https://www.espruino.com/Bangle.js#buttons + +// Initial graphics setup +g.clear(); +g.setFontAlign(0, 0); // center font +// g.setFont("6x8", 8); // bitmap font, 8x magnified +g.setFont("Vector", 40); // vector font, 80px + +// Let the app begin! +const storage = require("Storage"); + +let currentPage = 0; +let pages = [ + { + name: "Downstairs", + icon: "light", + state: false + }, + { + name: "Upstairs", + icon: "smartswitch", + state: false + }]; + +function loadPage(page) { + const icon = page.state ? page.icon + "-on" : page.icon + "-off"; + Bangle.beep(); + g.clear(); + g.setFont("Vector", 10); + g.drawString("prev", g.getWidth() - 25, 20); + g.drawString("next", g.getWidth() - 25, 220); + g.setFont("Vector", 15); + g.drawString(page.name, g.getWidth() / 2, 200); + g.setFont("Vector", 40); + g.drawString(page.state ? "On" : "Off", g.getWidth() / 2, g.getHeight() / 2); + g.drawImage(storage.read(`${icon}.png`), g.getWidth() / 2 - 24, g.getHeight() / 2 - 24 - 50); +} + +function prevPage() { + if (currentPage > 0) { + currentPage--; + loadPage(pages[currentPage]); + } +} + +function nextPage() { + if (currentPage < pages.length - 1) { + currentPage++; + loadPage(pages[currentPage]); + } +} + +function swipe(dir) { + + const page = pages[currentPage]; + + page.state = dir == 1; + + NRF.setAdvertising({ + 0xFFFF: [currentPage, page.state] + }); + + loadPage(page); + + // optional - this keeps the watch LCD lit up + g.flip(); + + Bangle.buzz(); +} + +Bangle.on('swipe', swipe); + +setWatch(prevPage, BTN, {edge: "rising", debounce: 50, repeat: true}); +setWatch(nextPage, BTN3, {edge: "rising", debounce: 50, repeat: true}); + +loadPage(pages[currentPage]); \ No newline at end of file From a55788ed078bd98b50a06e200a1552754683ce75 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:31:38 +0100 Subject: [PATCH 04/35] Add docs --- apps/smartswitch/ChangeLog | 1 + apps/smartswitch/README.MD | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 apps/smartswitch/ChangeLog create mode 100644 apps/smartswitch/README.MD diff --git a/apps/smartswitch/ChangeLog b/apps/smartswitch/ChangeLog new file mode 100644 index 000000000..6d3bcf353 --- /dev/null +++ b/apps/smartswitch/ChangeLog @@ -0,0 +1 @@ +0.01: New App! See the README.MD for details on how to use it. \ No newline at end of file diff --git a/apps/smartswitch/README.MD b/apps/smartswitch/README.MD new file mode 100644 index 000000000..57ecbd65c --- /dev/null +++ b/apps/smartswitch/README.MD @@ -0,0 +1,12 @@ +# Smartswitch app for BangleJS + + +# EspruinoHub + +Install EspruinoHub following the directions at [https://github.com/espruino/EspruinoHub](https://github.com/espruino/EspruinoHub) + +# Example Node-RED flow + +``` +[{"id":"6d5e0685.62fed8","type":"switch","z":"37813ca5.3e4a04","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0,0","vt":"str"},{"t":"eq","v":"0,1","vt":"str"},{"t":"eq","v":"1,0","vt":"str"},{"t":"eq","v":"1,1","vt":"str"},{"t":"eq","v":"2,0","vt":"str"},{"t":"eq","v":"2,1","vt":"str"},{"t":"eq","v":"3,0","vt":"str"},{"t":"eq","v":"3,1","vt":"str"},{"t":"eq","v":"4,0","vt":"str"},{"t":"eq","v":"4,1","vt":"str"}],"checkall":"true","repair":false,"outputs":10,"x":130,"y":520,"wires":[["2dd25bad.402644"],["e39ef382.eea6c"],["bb5aca6b.24e888"],["ed2bb6.25745448"],["869f116a.18c0a"],["d7661912.3d1f78"],[],[],[],[]]},{"id":"e39ef382.eea6c","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":500,"wires":[["fc85fc8f.9622f8"]]},{"id":"2dd25bad.402644","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":460,"wires":[["fc85fc8f.9622f8"]]},{"id":"ed2bb6.25745448","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":600,"wires":[["dbcd73c6.cc0bf"]]},{"id":"bb5aca6b.24e888","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":560,"wires":[["dbcd73c6.cc0bf"]]},{"id":"d7661912.3d1f78","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":700,"wires":[["c8cb0b9b.1b7528"]]},{"id":"869f116a.18c0a","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":660,"wires":[["c8cb0b9b.1b7528"]]}] +``` \ No newline at end of file From 40d05f04e85e3a334673c981cc67457e3c6c1cd9 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:31:46 +0100 Subject: [PATCH 05/35] Add app entry to apps.json --- apps.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/apps.json b/apps.json index d85739aad..ce33fce57 100644 --- a/apps.json +++ b/apps.json @@ -1158,5 +1158,22 @@ {"name":"batchart.app.js","url":"app.js"}, {"name":"batchart.img","url":"app-icon.js","evaluate":true} ] + }, + { "id": "smartswitch", + "name": "BTLE Smartswitch", + "shortName":"Smartswitch", + "icon": "app.png", + "version":"0.01", + "description": "Using EspruinoHub, control your smart devices on and off via Bluetooth Low Energy!", + "tags": "bluetooth,btle,smart,switch", + "readme": "README.md", + "storage": [ + {"name":"smartswitch.app.js","url":"app.js"}, + {"name":"smartswitch-on.img","url":"app-icon.js","evaluate":true}, + {"name":"smartswitch-on.img","url":"smartswitch-icon.js","evaluate":true}, + {"name":"smartswitch-off.img","url":"switch-off.js","evaluate":true}, + {"name":"light-on.img","url":"light-on.js","evaluate":true}, + {"name":"light-off.img","url":"light-off.js","evaluate":true} + ] } ] From 79825291dafb07c73e1e16bdc8aa923dd45e89ec Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:37:28 +0100 Subject: [PATCH 06/35] Fix missing image --- apps.json | 4 ++-- apps/smartswitch/smartswitch-on.js | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 apps/smartswitch/smartswitch-on.js diff --git a/apps.json b/apps.json index ce33fce57..bf7f31ad9 100644 --- a/apps.json +++ b/apps.json @@ -1169,8 +1169,8 @@ "readme": "README.md", "storage": [ {"name":"smartswitch.app.js","url":"app.js"}, - {"name":"smartswitch-on.img","url":"app-icon.js","evaluate":true}, - {"name":"smartswitch-on.img","url":"smartswitch-icon.js","evaluate":true}, + {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, + {"name":"smartswitch-on.img","url":"switch-on.js","evaluate":true}, {"name":"smartswitch-off.img","url":"switch-off.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true} diff --git a/apps/smartswitch/smartswitch-on.js b/apps/smartswitch/smartswitch-on.js new file mode 100644 index 000000000..9153bd3ca --- /dev/null +++ b/apps/smartswitch/smartswitch-on.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/AH4A/AH4Ag1gAECyGFAB1bAAmAFooyQFp4uGEoWIwQAEGBgtQFwtcFpAACxAwJFyIvFEAItIMAowFF1IwFF6zqBRhIvIxBetMAYvWdgJeSAAOHFyQvEw5eRBAeIF6+IF5wIHF66+LTJIvlNBaPfRRAved4g0BAASNJd4f+F61cFQYAEFxQ/Bw4vXYAQAFLxms/wABGC2ALyaOBF7BgGLyAweFyIwTF4jyDLxKMBFw4xTGAhhEFpAuKGKQwFeg4ADFxgAZFlgA/AH4A/AH4A/AH4A/AH4AhA")) \ No newline at end of file From 9cd470355389322bfd667800e138639e5d9f7b8d Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:39:24 +0100 Subject: [PATCH 07/35] Add missing app icon --- apps/smartswitch/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/smartswitch/app-icon.js diff --git a/apps/smartswitch/app-icon.js b/apps/smartswitch/app-icon.js new file mode 100644 index 000000000..9153bd3ca --- /dev/null +++ b/apps/smartswitch/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/AH4A/AH4Ag1gAECyGFAB1bAAmAFooyQFp4uGEoWIwQAEGBgtQFwtcFpAACxAwJFyIvFEAItIMAowFF1IwFF6zqBRhIvIxBetMAYvWdgJeSAAOHFyQvEw5eRBAeIF6+IF5wIHF66+LTJIvlNBaPfRRAved4g0BAASNJd4f+F61cFQYAEFxQ/Bw4vXYAQAFLxms/wABGC2ALyaOBF7BgGLyAweFyIwTF4jyDLxKMBFw4xTGAhhEFpAuKGKQwFeg4ADFxgAZFlgA/AH4A/AH4A/AH4A/AH4AhA")) \ No newline at end of file From a71ffeeb55fd02e2939fbb1c4d857827c605250a Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:48:45 +0100 Subject: [PATCH 08/35] Add missing app icon --- apps.json | 2 +- apps/smartswitch/app-icon.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 apps/smartswitch/app-icon.js diff --git a/apps.json b/apps.json index bf7f31ad9..ff8f2bdc2 100644 --- a/apps.json +++ b/apps.json @@ -1169,7 +1169,7 @@ "readme": "README.md", "storage": [ {"name":"smartswitch.app.js","url":"app.js"}, - {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, + {"name":"smartswitch.img","url":"smartswitch-icon.js","evaluate":true}, {"name":"smartswitch-on.img","url":"switch-on.js","evaluate":true}, {"name":"smartswitch-off.img","url":"switch-off.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, diff --git a/apps/smartswitch/app-icon.js b/apps/smartswitch/app-icon.js deleted file mode 100644 index 9153bd3ca..000000000 --- a/apps/smartswitch/app-icon.js +++ /dev/null @@ -1 +0,0 @@ -require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/AH4A/AH4Ag1gAECyGFAB1bAAmAFooyQFp4uGEoWIwQAEGBgtQFwtcFpAACxAwJFyIvFEAItIMAowFF1IwFF6zqBRhIvIxBetMAYvWdgJeSAAOHFyQvEw5eRBAeIF6+IF5wIHF66+LTJIvlNBaPfRRAved4g0BAASNJd4f+F61cFQYAEFxQ/Bw4vXYAQAFLxms/wABGC2ALyaOBF7BgGLyAweFyIwTF4jyDLxKMBFw4xTGAhhEFpAuKGKQwFeg4ADFxgAZFlgA/AH4A/AH4A/AH4A/AH4AhA")) \ No newline at end of file From 6c3a7aa9ab3fdd84d87e69be3de2af8a592c51e6 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 21:55:40 +0100 Subject: [PATCH 09/35] Add missing app icon --- apps/smartswitch/app.png | Bin 0 -> 1344 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/smartswitch/app.png diff --git a/apps/smartswitch/app.png b/apps/smartswitch/app.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed00c6b68161cf99f3c00fbc2a568848fa865fd GIT binary patch literal 1344 zcmV-G1;6@DP6lEB|fA7pYJG(pEkKGnZX(6bHA_onD0tW#FG=U%- zi5^Uh2X6+{gm?kH7>LSWpa)NKFo5VmG?J*%8k^vWn3xbqOG!z)E#2Mj$GkI-hwTSr zciZhpf{FXPz3lv&UqizBht{-pr?aFbbFkz%WrX8MIbC74# zZ=#f5Foqx^D!8JJb#l+1?%RtdaQ6ECxTn3hK~4khOA(H|SYUWKN2%yX`ZKNTIJo{C zuHBA^kS`eWQ$FQNh;KqHKx+%vwP;PnNW?WtL8wewg3@bycR%q}-2^WD^m4aR_9bA~ za>ZvDA1jg_FGl)$GF#Z+eGUtYe8Di9EmHBrIuWLyS?A#;tG|*+NJUMYd9iQnhcnl$ zf64c+hI|+Z6Awy}zD%l%7rM`*#9}mCVtAymsC?YDXXOEuvWQ9ggCBk$cs-K9+3Wk` zfwC_H8&@h1kj)keLz!(mj^<$Rc@&DV@exTfPJ|cZTwd4x1TzyFHSLg;uDL2jPuvmPU@VO7g(GRi~?UGfFw+3#MWD zL|oUE7XcH5fQ2DAtwD~i=6+VLm`J5nfJ-%eNvvox-|)6 zbRN>6wyjJ#it#1VUK6i|FO`>G{bI?GD;RS53PCUzw^XVY$x$sC4Qf3|&0xzR45Okg zx(5Jb8cU!hr5VkZ$>l5fb)NC3lZmNTXW@N(Stx23q<)dKR;0Wb+E&~jE!Dm6;Wtzx z3Kqz{WqH=YvZC`TXNCZe zu7Z0txV8v_xu5=i@g|wrGbCJ%F%?otht`%D$%KtkbIBHphGMC)1mf{(0!H##3)I!s zk_T|z=%^f?`U8N@4wucF+UV{|;w5!N9w0m3*aipSC8`@-Sw_FJd?$7pm|U6m9EqeI zX^%|)jfju7EmWP=dMVX+9GjG<5ds`#pSRxMb!iMGAFot=hGf#kddSq6fIlZbU+|f+ z?BWx5hP9bEN-1*Tt^UKi58t!^3UU1jiW|#xj$m2P+7{i2{WU?pl1TB@=XY(s^l-eor?^jleK}(S>o};R3Z4el3zAw& z67@dn9Y?dJb3f0e-@;P0&-}B6KtwPX#d1&W-LYogru#_$R_X5_>kaMT7$Qdmc??m# zRVx`nxP?;R+M)h>_wJ6NN9oz5Ns}f`nlx$hU*#X#ndJ3oQUHAb0000 Date: Thu, 30 Apr 2020 22:00:07 +0100 Subject: [PATCH 10/35] Add missing app icon --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index ff8f2bdc2..bf7f31ad9 100644 --- a/apps.json +++ b/apps.json @@ -1169,7 +1169,7 @@ "readme": "README.md", "storage": [ {"name":"smartswitch.app.js","url":"app.js"}, - {"name":"smartswitch.img","url":"smartswitch-icon.js","evaluate":true}, + {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, {"name":"smartswitch-on.img","url":"switch-on.js","evaluate":true}, {"name":"smartswitch-off.img","url":"switch-off.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, From 56e6469a60ea438c02adee2941fac9e537c06176 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:02:16 +0100 Subject: [PATCH 11/35] Oops, wrong filenames --- apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index bf7f31ad9..c18228e70 100644 --- a/apps.json +++ b/apps.json @@ -1170,8 +1170,8 @@ "storage": [ {"name":"smartswitch.app.js","url":"app.js"}, {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, - {"name":"smartswitch-on.img","url":"switch-on.js","evaluate":true}, - {"name":"smartswitch-off.img","url":"switch-off.js","evaluate":true}, + {"name":"smartswitch-on.img","url":"smartswitch-on.js","evaluate":true}, + {"name":"smartswitch-off.img","url":"smartswitch-off.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true} ] From ff385ba7f6e8fb9ae847d7f8b8a80afb100feb9f Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:03:55 +0100 Subject: [PATCH 12/35] Rename files again --- apps.json | 4 ++-- apps/smartswitch/smartswitch.app.js | 2 +- apps/smartswitch/{smartswitch-off.js => switch-off.js} | 0 apps/smartswitch/{smartswitch-on.js => switch-on.js} | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename apps/smartswitch/{smartswitch-off.js => switch-off.js} (100%) rename apps/smartswitch/{smartswitch-on.js => switch-on.js} (100%) diff --git a/apps.json b/apps.json index c18228e70..657f93469 100644 --- a/apps.json +++ b/apps.json @@ -1170,8 +1170,8 @@ "storage": [ {"name":"smartswitch.app.js","url":"app.js"}, {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, - {"name":"smartswitch-on.img","url":"smartswitch-on.js","evaluate":true}, - {"name":"smartswitch-off.img","url":"smartswitch-off.js","evaluate":true}, + {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, + {"name":"switch-off.img","url":"switch-off.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true} ] diff --git a/apps/smartswitch/smartswitch.app.js b/apps/smartswitch/smartswitch.app.js index 90e0a82a8..ebfa5768a 100644 --- a/apps/smartswitch/smartswitch.app.js +++ b/apps/smartswitch/smartswitch.app.js @@ -21,7 +21,7 @@ let pages = [ }, { name: "Upstairs", - icon: "smartswitch", + icon: "switch", state: false }]; diff --git a/apps/smartswitch/smartswitch-off.js b/apps/smartswitch/switch-off.js similarity index 100% rename from apps/smartswitch/smartswitch-off.js rename to apps/smartswitch/switch-off.js diff --git a/apps/smartswitch/smartswitch-on.js b/apps/smartswitch/switch-on.js similarity index 100% rename from apps/smartswitch/smartswitch-on.js rename to apps/smartswitch/switch-on.js From ebcabdb72ab2ee20ed47a5e29699558128a03ee3 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:11:29 +0100 Subject: [PATCH 13/35] Use .img, not .png --- apps.json | 6 +++--- apps/smartswitch/smartswitch.app.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps.json b/apps.json index 657f93469..f536c0448 100644 --- a/apps.json +++ b/apps.json @@ -1170,10 +1170,10 @@ "storage": [ {"name":"smartswitch.app.js","url":"app.js"}, {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, - {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, - {"name":"switch-off.img","url":"switch-off.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, - {"name":"light-off.img","url":"light-off.js","evaluate":true} + {"name":"light-off.img","url":"light-off.js","evaluate":true}, + {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, + {"name":"switch-off.img","url":"switch-off.js","evaluate":true} ] } ] diff --git a/apps/smartswitch/smartswitch.app.js b/apps/smartswitch/smartswitch.app.js index ebfa5768a..e8491a065 100644 --- a/apps/smartswitch/smartswitch.app.js +++ b/apps/smartswitch/smartswitch.app.js @@ -36,7 +36,7 @@ function loadPage(page) { g.drawString(page.name, g.getWidth() / 2, 200); g.setFont("Vector", 40); g.drawString(page.state ? "On" : "Off", g.getWidth() / 2, g.getHeight() / 2); - g.drawImage(storage.read(`${icon}.png`), g.getWidth() / 2 - 24, g.getHeight() / 2 - 24 - 50); + g.drawImage(storage.read(`${icon}.img`), g.getWidth() / 2 - 24, g.getHeight() / 2 - 24 - 50); } function prevPage() { From 2cc6b9d62c1e8a9e33e9436066e725a1d758fce6 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:18:11 +0100 Subject: [PATCH 14/35] Renamw to see if it works now! --- apps.json | 2 +- apps/smartswitch/{smartswitch.app.js => smartswitch.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename apps/smartswitch/{smartswitch.app.js => smartswitch.js} (100%) diff --git a/apps.json b/apps.json index f536c0448..d6acd37ee 100644 --- a/apps.json +++ b/apps.json @@ -1168,7 +1168,7 @@ "tags": "bluetooth,btle,smart,switch", "readme": "README.md", "storage": [ - {"name":"smartswitch.app.js","url":"app.js"}, + {"name":"smartswitch.js","url":"app.js"}, {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true}, diff --git a/apps/smartswitch/smartswitch.app.js b/apps/smartswitch/smartswitch.js similarity index 100% rename from apps/smartswitch/smartswitch.app.js rename to apps/smartswitch/smartswitch.js From 8c25479163e1ce158100711c825324953dadb0ea Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:22:19 +0100 Subject: [PATCH 15/35] Rename to obey char limit --- apps.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps.json b/apps.json index d6acd37ee..13aec3c04 100644 --- a/apps.json +++ b/apps.json @@ -1159,13 +1159,14 @@ {"name":"batchart.img","url":"app-icon.js","evaluate":true} ] }, - { "id": "smartswitch", - "name": "BTLE Smartswitch", - "shortName":"Smartswitch", + { "id": "smtswch", + "name": "Smartswitch", + "shortName":"SmtSwch", "icon": "app.png", "version":"0.01", "description": "Using EspruinoHub, control your smart devices on and off via Bluetooth Low Energy!", "tags": "bluetooth,btle,smart,switch", + "type": "bluetooth", "readme": "README.md", "storage": [ {"name":"smartswitch.js","url":"app.js"}, From 05471b0ab4c1fd21f19f42115b14c7832ff915a4 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:23:34 +0100 Subject: [PATCH 16/35] Rename to obey char limit --- apps/{smartswitch => smtswch}/ChangeLog | 0 apps/{smartswitch => smtswch}/README.MD | 0 apps/{smartswitch => smtswch}/app.png | Bin apps/{smartswitch => smtswch}/light-off.js | 0 apps/{smartswitch => smtswch}/light-on.js | 0 apps/{smartswitch => smtswch}/smartswitch-icon.js | 0 apps/{smartswitch => smtswch}/smartswitch.js | 0 apps/{smartswitch => smtswch}/switch-off.js | 0 apps/{smartswitch => smtswch}/switch-on.js | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename apps/{smartswitch => smtswch}/ChangeLog (100%) rename apps/{smartswitch => smtswch}/README.MD (100%) rename apps/{smartswitch => smtswch}/app.png (100%) rename apps/{smartswitch => smtswch}/light-off.js (100%) rename apps/{smartswitch => smtswch}/light-on.js (100%) rename apps/{smartswitch => smtswch}/smartswitch-icon.js (100%) rename apps/{smartswitch => smtswch}/smartswitch.js (100%) rename apps/{smartswitch => smtswch}/switch-off.js (100%) rename apps/{smartswitch => smtswch}/switch-on.js (100%) diff --git a/apps/smartswitch/ChangeLog b/apps/smtswch/ChangeLog similarity index 100% rename from apps/smartswitch/ChangeLog rename to apps/smtswch/ChangeLog diff --git a/apps/smartswitch/README.MD b/apps/smtswch/README.MD similarity index 100% rename from apps/smartswitch/README.MD rename to apps/smtswch/README.MD diff --git a/apps/smartswitch/app.png b/apps/smtswch/app.png similarity index 100% rename from apps/smartswitch/app.png rename to apps/smtswch/app.png diff --git a/apps/smartswitch/light-off.js b/apps/smtswch/light-off.js similarity index 100% rename from apps/smartswitch/light-off.js rename to apps/smtswch/light-off.js diff --git a/apps/smartswitch/light-on.js b/apps/smtswch/light-on.js similarity index 100% rename from apps/smartswitch/light-on.js rename to apps/smtswch/light-on.js diff --git a/apps/smartswitch/smartswitch-icon.js b/apps/smtswch/smartswitch-icon.js similarity index 100% rename from apps/smartswitch/smartswitch-icon.js rename to apps/smtswch/smartswitch-icon.js diff --git a/apps/smartswitch/smartswitch.js b/apps/smtswch/smartswitch.js similarity index 100% rename from apps/smartswitch/smartswitch.js rename to apps/smtswch/smartswitch.js diff --git a/apps/smartswitch/switch-off.js b/apps/smtswch/switch-off.js similarity index 100% rename from apps/smartswitch/switch-off.js rename to apps/smtswch/switch-off.js diff --git a/apps/smartswitch/switch-on.js b/apps/smtswch/switch-on.js similarity index 100% rename from apps/smartswitch/switch-on.js rename to apps/smtswch/switch-on.js From 5108dc1c9dea25020447fd34ba916a36bcc87d6f Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:24:40 +0100 Subject: [PATCH 17/35] Rename to obey char limit --- apps.json | 4 ++-- apps/smtswch/{smartswitch-icon.js => smtswch-icon.js} | 0 apps/smtswch/{smartswitch.js => smtswch.js} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename apps/smtswch/{smartswitch-icon.js => smtswch-icon.js} (100%) rename apps/smtswch/{smartswitch.js => smtswch.js} (100%) diff --git a/apps.json b/apps.json index 13aec3c04..be2fb8561 100644 --- a/apps.json +++ b/apps.json @@ -1169,8 +1169,8 @@ "type": "bluetooth", "readme": "README.md", "storage": [ - {"name":"smartswitch.js","url":"app.js"}, - {"name":"smartswitch.img","url":"app-icon.js","evaluate":true}, + {"name":"smtswch.js","url":"app.js"}, + {"name":"smtswch.img","url":"app-icon.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true}, {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, diff --git a/apps/smtswch/smartswitch-icon.js b/apps/smtswch/smtswch-icon.js similarity index 100% rename from apps/smtswch/smartswitch-icon.js rename to apps/smtswch/smtswch-icon.js diff --git a/apps/smtswch/smartswitch.js b/apps/smtswch/smtswch.js similarity index 100% rename from apps/smtswch/smartswitch.js rename to apps/smtswch/smtswch.js From 04ac077892b0a7d75f00d232f39c47da38fda598 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:26:20 +0100 Subject: [PATCH 18/35] Renaming until it works! --- apps.json | 4 ++-- apps/smtswch/{smtswch.js => app.js} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename apps/smtswch/{smtswch.js => app.js} (100%) diff --git a/apps.json b/apps.json index be2fb8561..5172e3355 100644 --- a/apps.json +++ b/apps.json @@ -1169,8 +1169,8 @@ "type": "bluetooth", "readme": "README.md", "storage": [ - {"name":"smtswch.js","url":"app.js"}, - {"name":"smtswch.img","url":"app-icon.js","evaluate":true}, + {"name":"app.js","url":"app.js"}, + {"name":"smtswch.img","url":"smtswch.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true}, {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, diff --git a/apps/smtswch/smtswch.js b/apps/smtswch/app.js similarity index 100% rename from apps/smtswch/smtswch.js rename to apps/smtswch/app.js From 1f502b41e54c9ec729e0342df744c8ded76b752d Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:28:26 +0100 Subject: [PATCH 19/35] Renaming until it works! --- apps.json | 2 +- apps/smtswch/{smtswch-icon.js => app-icon.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename apps/smtswch/{smtswch-icon.js => app-icon.js} (100%) diff --git a/apps.json b/apps.json index 5172e3355..f921822b3 100644 --- a/apps.json +++ b/apps.json @@ -1170,7 +1170,7 @@ "readme": "README.md", "storage": [ {"name":"app.js","url":"app.js"}, - {"name":"smtswch.img","url":"smtswch.js","evaluate":true}, + {"name":"smtswch.img","url":"app-icon.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true}, {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, diff --git a/apps/smtswch/smtswch-icon.js b/apps/smtswch/app-icon.js similarity index 100% rename from apps/smtswch/smtswch-icon.js rename to apps/smtswch/app-icon.js From ed84146c5a959e07bf33dabddf766838830f2fbf Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:39:16 +0100 Subject: [PATCH 20/35] Renaming until it works! --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index f921822b3..aed21d89f 100644 --- a/apps.json +++ b/apps.json @@ -1169,7 +1169,7 @@ "type": "bluetooth", "readme": "README.md", "storage": [ - {"name":"app.js","url":"app.js"}, + {"name":"smtswch.app.js","url":"app.js"}, {"name":"smtswch.img","url":"app-icon.js","evaluate":true}, {"name":"light-on.img","url":"light-on.js","evaluate":true}, {"name":"light-off.img","url":"light-off.js","evaluate":true}, From 5dde9dc0a51ac208ad7bed76e4514e5fb889c138 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:45:38 +0100 Subject: [PATCH 21/35] Update app name --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index aed21d89f..0054f67a0 100644 --- a/apps.json +++ b/apps.json @@ -1160,7 +1160,7 @@ ] }, { "id": "smtswch", - "name": "Smartswitch", + "name": "Smart Switch", "shortName":"SmtSwch", "icon": "app.png", "version":"0.01", From f165dcef2e386af687c828b3e66c3ca325e9bdca Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:51:11 +0100 Subject: [PATCH 22/35] Update README name --- apps/smtswch/{README.MD => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/smtswch/{README.MD => README.md} (100%) diff --git a/apps/smtswch/README.MD b/apps/smtswch/README.md similarity index 100% rename from apps/smtswch/README.MD rename to apps/smtswch/README.md From 6bc47dd4311a4fe7631ea5619f0868291dc65ee5 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 22:59:43 +0100 Subject: [PATCH 23/35] Try another image --- apps/smtswch/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/smtswch/app-icon.js b/apps/smtswch/app-icon.js index 9153bd3ca..f61914be8 100644 --- a/apps/smtswch/app-icon.js +++ b/apps/smtswch/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/AH4A/AH4Ag1gAECyGFAB1bAAmAFooyQFp4uGEoWIwQAEGBgtQFwtcFpAACxAwJFyIvFEAItIMAowFF1IwFF6zqBRhIvIxBetMAYvWdgJeSAAOHFyQvEw5eRBAeIF6+IF5wIHF66+LTJIvlNBaPfRRAved4g0BAASNJd4f+F61cFQYAEFxQ/Bw4vXYAQAFLxms/wABGC2ALyaOBF7BgGLyAweFyIwTF4jyDLxKMBFw4xTGAhhEFpAuKGKQwFeg4ADFxgAZFlgA/AH4A/AH4A/AH4A/AH4AhA")) \ No newline at end of file +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AS64AIF/4pZABYuuGDIv/F/4v/F9+Gw0rAQIASF7YxTF7cxwAvtrdVF9qQTF/4vMYCQvcYCQvcSCQvdqpgQF7oEBYJ4veAoNbF9uGmMrrgvsw2AGILFKF8IACrYxJF8gxDSowvmBwWAF9oPGF9NbmIvtCAovqMAgvqCIgvrrdVF9oSDF9iPuF7crACxf/F++wFqmG2AvXGCouZAH4A/AGY")) From addc7a7f99172a310133c35e3f43685b7633416e Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Thu, 30 Apr 2020 23:08:17 +0100 Subject: [PATCH 24/35] Revert image --- apps/smtswch/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/smtswch/app-icon.js b/apps/smtswch/app-icon.js index f61914be8..9153bd3ca 100644 --- a/apps/smtswch/app-icon.js +++ b/apps/smtswch/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AS64AIF/4pZABYuuGDIv/F/4v/F9+Gw0rAQIASF7YxTF7cxwAvtrdVF9qQTF/4vMYCQvcYCQvcSCQvdqpgQF7oEBYJ4veAoNbF9uGmMrrgvsw2AGILFKF8IACrYxJF8gxDSowvmBwWAF9oPGF9NbmIvtCAovqMAgvqCIgvrrdVF9oSDF9iPuF7crACxf/F++wFqmG2AvXGCouZAH4A/AGY")) +require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/AH4A/AH4Ag1gAECyGFAB1bAAmAFooyQFp4uGEoWIwQAEGBgtQFwtcFpAACxAwJFyIvFEAItIMAowFF1IwFF6zqBRhIvIxBetMAYvWdgJeSAAOHFyQvEw5eRBAeIF6+IF5wIHF66+LTJIvlNBaPfRRAved4g0BAASNJd4f+F61cFQYAEFxQ/Bw4vXYAQAFLxms/wABGC2ALyaOBF7BgGLyAweFyIwTF4jyDLxKMBFw4xTGAhhEFpAuKGKQwFeg4ADFxgAZFlgA/AH4A/AH4A/AH4A/AH4AhA")) \ No newline at end of file From 016e86a2f8d7e77b643617ad1012799b160cf886 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Fri, 1 May 2020 10:10:41 +0100 Subject: [PATCH 25/35] Change to correct app type so the app will show up in the watch loaders --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index 0054f67a0..b56a49a4c 100644 --- a/apps.json +++ b/apps.json @@ -1166,7 +1166,7 @@ "version":"0.01", "description": "Using EspruinoHub, control your smart devices on and off via Bluetooth Low Energy!", "tags": "bluetooth,btle,smart,switch", - "type": "bluetooth", + "type": "app", "readme": "README.md", "storage": [ {"name":"smtswch.app.js","url":"app.js"}, From f0261c515395f09659472666fbcfc32006bbe30a Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Fri, 1 May 2020 10:16:41 +0100 Subject: [PATCH 26/35] Use proper short name --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index b56a49a4c..0ffad9b82 100644 --- a/apps.json +++ b/apps.json @@ -1161,7 +1161,7 @@ }, { "id": "smtswch", "name": "Smart Switch", - "shortName":"SmtSwch", + "shortName":"Smart Switch", "icon": "app.png", "version":"0.01", "description": "Using EspruinoHub, control your smart devices on and off via Bluetooth Low Energy!", From 446b7a0574a6e73c76f9bbae570c9826046c0475 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Fri, 1 May 2020 18:36:48 +0100 Subject: [PATCH 27/35] Add more docs --- apps/smtswch/README.md | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/apps/smtswch/README.md b/apps/smtswch/README.md index 57ecbd65c..3e8da2189 100644 --- a/apps/smtswch/README.md +++ b/apps/smtswch/README.md @@ -1,12 +1,43 @@ -# Smartswitch app for BangleJS +# Smart Switch app for BangleJS +![Demo of Smart Switch app in action](https://raw.githubusercontent.com/wdmtech/BangleApps/add-video/apps/smtswch/demo.gif) + +Swipe right to turn a device ON +Swipe left to turn a device OFF + +BTN1 (top-right) - Previous device (page) +BTN3 (bottom-right) - Next device (page) # EspruinoHub Install EspruinoHub following the directions at [https://github.com/espruino/EspruinoHub](https://github.com/espruino/EspruinoHub) +Here's the part that does the actual BTLE advertising on the watch itself: + +```JS +NRF.setAdvertising({ + 0xFFFF: [currentPage, page.state] +}); +``` + +You should see data like the following: + +``` +ec:5a:c1:a7:fc:91 - Bangle.js fc91 (RSSI -83) + ffff => {"data":"1,1"} +``` + # Example Node-RED flow -``` +Import the following JSON into Node-RED + +```JSON [{"id":"6d5e0685.62fed8","type":"switch","z":"37813ca5.3e4a04","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0,0","vt":"str"},{"t":"eq","v":"0,1","vt":"str"},{"t":"eq","v":"1,0","vt":"str"},{"t":"eq","v":"1,1","vt":"str"},{"t":"eq","v":"2,0","vt":"str"},{"t":"eq","v":"2,1","vt":"str"},{"t":"eq","v":"3,0","vt":"str"},{"t":"eq","v":"3,1","vt":"str"},{"t":"eq","v":"4,0","vt":"str"},{"t":"eq","v":"4,1","vt":"str"}],"checkall":"true","repair":false,"outputs":10,"x":130,"y":520,"wires":[["2dd25bad.402644"],["e39ef382.eea6c"],["bb5aca6b.24e888"],["ed2bb6.25745448"],["869f116a.18c0a"],["d7661912.3d1f78"],[],[],[],[]]},{"id":"e39ef382.eea6c","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":500,"wires":[["fc85fc8f.9622f8"]]},{"id":"2dd25bad.402644","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":460,"wires":[["fc85fc8f.9622f8"]]},{"id":"ed2bb6.25745448","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":600,"wires":[["dbcd73c6.cc0bf"]]},{"id":"bb5aca6b.24e888","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":560,"wires":[["dbcd73c6.cc0bf"]]},{"id":"d7661912.3d1f78","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":700,"wires":[["c8cb0b9b.1b7528"]]},{"id":"869f116a.18c0a","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":660,"wires":[["c8cb0b9b.1b7528"]]}] -``` \ No newline at end of file +``` + +# Future + +PRs welcome! + +[ ] Add an HTML GUI for configuring devices inside the Bangle.js App Loader +[ ] Allow enable/disable of buzz/beep on change of device state From 39723a2ccd4775ca1521ad27d30513c2473d1285 Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Fri, 1 May 2020 19:00:50 +0100 Subject: [PATCH 28/35] Add more docs --- apps/smtswch/README.md | 55 ++++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/apps/smtswch/README.md b/apps/smtswch/README.md index 3e8da2189..209adba80 100644 --- a/apps/smtswch/README.md +++ b/apps/smtswch/README.md @@ -1,18 +1,47 @@ # Smart Switch app for BangleJS +This app allows you to remotely control devices (or anything else you like!) with: + +* [Bangle.js](https://www.espruino.com/Bangle.js) (Hackable JavaScript Smartwatch) +* [EspruinoHub](https://github.com/espruino/EspruinoHub) (Bluetooth Low Energy -> MQTT bridge) +* [Node-RED](https://nodered.org) (Flow-based programming tool) + ![Demo of Smart Switch app in action](https://raw.githubusercontent.com/wdmtech/BangleApps/add-video/apps/smtswch/demo.gif) -Swipe right to turn a device ON -Swipe left to turn a device OFF +* Swipe right to turn a device ON +* Swipe left to turn a device OFF +* BTN1 (top-right) - Previous device (page) +* BTN3 (bottom-right) - Next device (page) -BTN1 (top-right) - Previous device (page) -BTN3 (bottom-right) - Next device (page) +> Currently, devices can only be added/removed/changed by editing them in the app's source code. -# EspruinoHub +# How to use + +First, you'll need a device that supports BLE. Install EspruinoHub following the directions at [https://github.com/espruino/EspruinoHub](https://github.com/espruino/EspruinoHub) +Install [Node-RED](https://nodered.org/docs/getting-started) -Here's the part that does the actual BTLE advertising on the watch itself: +## Example Node-RED flow + +Import the following JSON into Node-RED and configure the MQTT IN node to use your EspruinoHub's MQTT instance (default port is 1883): + +```JSON +[{"id":"87c6f73e.f22038","type":"mqtt in","z":"a256522.ca0b0b","name":"⌚️BangleJS data","topic":"/ble/advertise/ec:5a:c1:a7:fc:91/data","qos":"2","datatype":"auto","broker":"b961407a.91beb","x":860,"y":100,"wires":[["c37809de.3fc538"]]},{"id":"c37809de.3fc538","type":"function","z":"a256522.ca0b0b","name":"Set topic, remove quotes","func":"msg.topic = \"any_topic_here\";\nmsg.payload = msg.payload.replace(/['\"]+/g, \"\")\n\nreturn msg;","outputs":1,"noerr":0,"x":1070,"y":100,"wires":[["9019be89.5b6d5"]]},{"id":"9019be89.5b6d5","type":"debug","z":"a256522.ca0b0b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1250,"y":100,"wires":[]},{"id":"b961407a.91beb","type":"mqtt-broker","z":"","name":"","broker":"192.168.1.22","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"hello_there","birthQos":"0","birthPayload":"","closeTopic":"bye_now","closeQos":"0","closePayload":"true","willTopic":"bye_now","willQos":"0","willPayload":"true"}] +``` + +Replace the topic of the MQTT IN node to use the ID of your Bangle.js device, e.g: + +`/ble/advertise/ec:5a:c1:a7:fc:91/data` + +Once you see the MQTT IN node is configured correctly (it says `connected` below the node itself), try swiping in the Smart Switch app, and +you should see some data in the Debug node. + +The possibilities for switching things on and off via Bangle.js are now endless. Have fun! + +# How it works + +This is the code that does the actual [BLE advertising](https://www.espruino.com/BLE%20Advertising) on the watch itself: ```JS NRF.setAdvertising({ @@ -20,21 +49,17 @@ NRF.setAdvertising({ }); ``` -You should see data like the following: +# Not working? + +If you can't see any data in Node-RED after swiping, check to see if your device is advertising by visiting port 1888 of your EspruinoHub instance: + +You should see something like the following: ``` ec:5a:c1:a7:fc:91 - Bangle.js fc91 (RSSI -83) ffff => {"data":"1,1"} ``` -# Example Node-RED flow - -Import the following JSON into Node-RED - -```JSON -[{"id":"6d5e0685.62fed8","type":"switch","z":"37813ca5.3e4a04","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0,0","vt":"str"},{"t":"eq","v":"0,1","vt":"str"},{"t":"eq","v":"1,0","vt":"str"},{"t":"eq","v":"1,1","vt":"str"},{"t":"eq","v":"2,0","vt":"str"},{"t":"eq","v":"2,1","vt":"str"},{"t":"eq","v":"3,0","vt":"str"},{"t":"eq","v":"3,1","vt":"str"},{"t":"eq","v":"4,0","vt":"str"},{"t":"eq","v":"4,1","vt":"str"}],"checkall":"true","repair":false,"outputs":10,"x":130,"y":520,"wires":[["2dd25bad.402644"],["e39ef382.eea6c"],["bb5aca6b.24e888"],["ed2bb6.25745448"],["869f116a.18c0a"],["d7661912.3d1f78"],[],[],[],[]]},{"id":"e39ef382.eea6c","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":500,"wires":[["fc85fc8f.9622f8"]]},{"id":"2dd25bad.402644","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":460,"wires":[["fc85fc8f.9622f8"]]},{"id":"ed2bb6.25745448","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":600,"wires":[["dbcd73c6.cc0bf"]]},{"id":"bb5aca6b.24e888","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":560,"wires":[["dbcd73c6.cc0bf"]]},{"id":"d7661912.3d1f78","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ON","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":700,"wires":[["c8cb0b9b.1b7528"]]},{"id":"869f116a.18c0a","type":"change","z":"37813ca5.3e4a04","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":660,"wires":[["c8cb0b9b.1b7528"]]}] -``` - # Future PRs welcome! From 836bf7f21c70522aa57303c53af3f9fffd61618c Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Fri, 1 May 2020 19:02:53 +0100 Subject: [PATCH 29/35] Add contact details --- apps/smtswch/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/smtswch/README.md b/apps/smtswch/README.md index 209adba80..3ac6658c9 100644 --- a/apps/smtswch/README.md +++ b/apps/smtswch/README.md @@ -60,6 +60,10 @@ ec:5a:c1:a7:fc:91 - Bangle.js fc91 (RSSI -83) ffff => {"data":"1,1"} ``` +# Any comments? + +[Tweet me!](https://twitter.com/BillyWhizzkid) + # Future PRs welcome! From b043d24e0d094b316cd7f2f605c8f88b78c3ccdc Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Fri, 1 May 2020 19:13:46 +0100 Subject: [PATCH 30/35] Remove before pulling from upstream --- apps.json | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/apps.json b/apps.json index 0ffad9b82..d85739aad 100644 --- a/apps.json +++ b/apps.json @@ -1158,23 +1158,5 @@ {"name":"batchart.app.js","url":"app.js"}, {"name":"batchart.img","url":"app-icon.js","evaluate":true} ] - }, - { "id": "smtswch", - "name": "Smart Switch", - "shortName":"Smart Switch", - "icon": "app.png", - "version":"0.01", - "description": "Using EspruinoHub, control your smart devices on and off via Bluetooth Low Energy!", - "tags": "bluetooth,btle,smart,switch", - "type": "app", - "readme": "README.md", - "storage": [ - {"name":"smtswch.app.js","url":"app.js"}, - {"name":"smtswch.img","url":"app-icon.js","evaluate":true}, - {"name":"light-on.img","url":"light-on.js","evaluate":true}, - {"name":"light-off.img","url":"light-off.js","evaluate":true}, - {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, - {"name":"switch-off.img","url":"switch-off.js","evaluate":true} - ] } ] From ddf0f5c304ae8ea06db8fcb13c3228ee78b3338a Mon Sep 17 00:00:00 2001 From: wmurray-es <7922184d347c9e59e1ad273d42242d100bdaf524> Date: Fri, 1 May 2020 19:14:47 +0100 Subject: [PATCH 31/35] Add entry at end of file --- apps.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/apps.json b/apps.json index e9e38a1a1..899390497 100644 --- a/apps.json +++ b/apps.json @@ -1550,5 +1550,23 @@ {"name":"hidjoystick.app.js","url":"app.js"}, {"name":"hidjoystick.img","url":"app-icon.js","evaluate":true} ] + }, + { "id": "smtswch", + "name": "Smart Switch", + "shortName":"Smart Switch", + "icon": "app.png", + "version":"0.01", + "description": "Using EspruinoHub, control your smart devices on and off via Bluetooth Low Energy!", + "tags": "bluetooth,btle,smart,switch", + "type": "app", + "readme": "README.md", + "storage": [ + {"name":"smtswch.app.js","url":"app.js"}, + {"name":"smtswch.img","url":"app-icon.js","evaluate":true}, + {"name":"light-on.img","url":"light-on.js","evaluate":true}, + {"name":"light-off.img","url":"light-off.js","evaluate":true}, + {"name":"switch-on.img","url":"switch-on.js","evaluate":true}, + {"name":"switch-off.img","url":"switch-off.js","evaluate":true} + ] } ] From 418ce714f947cae8c4497df43a84c3741da803b8 Mon Sep 17 00:00:00 2001 From: Francesco Bedussi Date: Sat, 2 May 2020 13:45:22 +0200 Subject: [PATCH 32/35] feat: add timer app --- apps.json | 21 ++++++ apps/timer/ChangeLog | 1 + apps/timer/README.md | 16 +++++ apps/timer/app-icon.js | 5 ++ apps/timer/app.js | 151 +++++++++++++++++++++++++++++++++++++++++ apps/timer/app.png | Bin 0 -> 2107 bytes 6 files changed, 194 insertions(+) create mode 100644 apps/timer/ChangeLog create mode 100644 apps/timer/README.md create mode 100644 apps/timer/app-icon.js create mode 100644 apps/timer/app.js create mode 100644 apps/timer/app.png diff --git a/apps.json b/apps.json index e9e38a1a1..c57d94958 100644 --- a/apps.json +++ b/apps.json @@ -1550,5 +1550,26 @@ {"name":"hidjoystick.app.js","url":"app.js"}, {"name":"hidjoystick.img","url":"app-icon.js","evaluate":true} ] + }, + { + "id": "timer", + "name": "Timer", + "icon": "app.png", + "version": "0.01", + "description": "Simple timer, useful when playing board games or cooking", + "tags": "timer", + "readme": "README.md", + "allow_emulator": true, + "storage": [ + { + "name": "timer.app.js", + "url": "app.js" + }, + { + "name": "timer.img", + "url": "app-icon.js", + "evaluate": true + } + ] } ] diff --git a/apps/timer/ChangeLog b/apps/timer/ChangeLog new file mode 100644 index 000000000..ec66c5568 --- /dev/null +++ b/apps/timer/ChangeLog @@ -0,0 +1 @@ +0.01: Initial version diff --git a/apps/timer/README.md b/apps/timer/README.md new file mode 100644 index 000000000..9326e510d --- /dev/null +++ b/apps/timer/README.md @@ -0,0 +1,16 @@ +# Timer + +Simple timer, useful when playing board games or cooking + +## Features + +- When the time is up the timer can be reset to starting time, this is useful e.g. for playing board games +- When the countdown is running the timer cannot be adjusted, this prevents accidental time variations +- When the time is up the starting time is shown, as a reminder of the time elapsed + +## How to use it + +- Tap on minutes to increase them one by one +- Tap on seconds to increase them one by one +- Press BTN3 to reset time to 0 +- Press BTN1 to start the timer or reset to the original time diff --git a/apps/timer/app-icon.js b/apps/timer/app-icon.js new file mode 100644 index 000000000..b55486dd1 --- /dev/null +++ b/apps/timer/app-icon.js @@ -0,0 +1,5 @@ +require("heatshrink").decompress( + atob( + "mEwxH+AH4A/AEsxAAQso1eyrgvDrmrw4skAAQuDAAIHBrYABFsQvMGLYtGAAOAFweA2WrF4gwYFxAwEFwIvBwowFsIub64AB6wJF6wJB1mGMTFbrmsEYoADHAwAC1dhGCoTCmJhBEYoAM2RiFF6VbleBF6QABGAguSw2sgAwnCAdhXYIwBqwvT2WFDwYvP1YZCwMAlYwT1ZgORogZEqwwB1iRhBoYmGlcAYiZgOBgWFDIzCBAALESYIYvMw4ZHGCuHF5aOKeYgABYiCQMBYeyDZLzBAAQwO2QvPDhbzCeqAvbGAQQBlYvqeYIvteYMreJ7vaACbvQJxwAP1YvLGAeHF7uHFxYvDwovdwovPSDusRxgvEwwvbwwvNGAmrds4vGsOyFy+ysIvPSLqNPGDwuT/xyEwySS2QuEF6BgEYYL0Q1ZIEFyIwGMQIxM1ZcFFyYwHreFw+rSwmy1eHwoSGFygxJABwtXeo4upMSQtdGZorjAH4A/AF4A==" + ) +) diff --git a/apps/timer/app.js b/apps/timer/app.js new file mode 100644 index 000000000..dadbdb825 --- /dev/null +++ b/apps/timer/app.js @@ -0,0 +1,151 @@ +let counter = 0; +let setValue = 0; +let counterInterval; +let state; + +const DEBOUNCE = 50; + +function buzzAndBeep() { + return Bangle.buzz(1000, 1) + .then(() => Bangle.beep(200, 3000)) + .then(() => setTimeout(buzzAndBeep, 5000)); +} + +function outOfTime() { + g.clearRect(0, 0, 220, 70); + g.setFontAlign(0, 0); + g.setFont("6x8", 3); + g.drawString("Time UP!", 120, 50); + counter = setValue; + buzzAndBeep(); + setInterval(() => { + g.clearRect(0, 70, 220, 160); + setTimeout(draw, 200); + }, 400); + state = "stopped"; +} + +function draw() { + const minutes = Math.floor(counter / 60); + const seconds = Math.floor(counter % 60); + const seconds2Digits = seconds < 10 ? `0${seconds}` : seconds.toString(); + g.clearRect(0, 70, 220, 160); + g.setFontAlign(0, 0); + g.setFont("6x8", 7); + g.drawString( + `${minutes < 10 ? "0" : ""}${minutes}:${seconds2Digits}`, + 120, + 120 + ); +} + +function countDown() { + if (counter <= 0) { + if (counterInterval) { + clearInterval(counterInterval); + counterInterval = undefined; + } + outOfTime(); + return; + } + + counter--; + draw(); +} + +function clearIntervals() { + clearInterval(); + counterInterval = undefined; +} + +function set(delta) { + if (state === "started") return; + counter += delta; + if (state === "unset") { + state = "set"; + } + draw(); + g.flip(); +} + +function startTimer() { + setValue = counter; + countDown(); + counterInterval = setInterval(countDown, 1000); +} + +// unset -> set -> started -> -> stopped -> set +const stateMap = { + set: () => { + state = "started"; + startTimer(); + }, + started: () => { + reset(setValue); + }, + stopped: () => { + reset(setValue); + } +}; + +function changeState() { + if (stateMap[state]) stateMap[state](); +} + +function drawLabels() { + g.clear(); + g.setFontAlign(-1, 0); + g.setFont("6x8", 7); + g.drawString(`+ +`, 35, 180); + g.setFontAlign(0, 0, 3); + g.setFont("6x8", 1); + g.drawString(`reset (re)start`, 230, 120); +} + +function reset(value) { + clearIntervals(); + counter = value; + setValue = value; + drawLabels(); + draw(); + state = value === 0 ? "unset" : "set"; +} + +function addWatch() { + clearWatch(); + setWatch(changeState, BTN1, { + debounce: DEBOUNCE, + repeat: true, + edge: "falling" + }); + setWatch( + () => { + reset(0); + }, + BTN3, + { + debounce: DEBOUNCE, + repeat: true, + edge: "falling" + } + ); + setWatch( + () => { + set(60); + }, + BTN4, + { + debounce: DEBOUNCE, + repeat: true, + edge: "falling" + } + ); + setWatch(() => set(1), BTN5, { + debounce: DEBOUNCE, + repeat: true, + edge: "falling" + }); +} + +reset(0); +addWatch(); diff --git a/apps/timer/app.png b/apps/timer/app.png new file mode 100644 index 0000000000000000000000000000000000000000..f593a3a8bd3f5f87032a6b575bf2432085468a11 GIT binary patch literal 2107 zcmV-B2*me^P)XJ=kQ@6U^OIn&x`%j5jwTW9>b`e1rGrF7ItUzE*SLCs3wMr0e5!fh5fC1)p z@97`NcxUDgGXt}K)$gCl?>pyr&-dMP=bU?f7kG)6m>0+oana>Fm#fq<XQAXA?d%MlQ}^7}kFR0ES_n|GI`urodsR z$o%q%IsXg~=|iEQc_>&dOt1-G+^symJZjaylcUpoirCp8#QDZrv~;z&#J`=t3mnIx=SdfC zJh}p#bJB+*dg@8S*n6k5I~*Z1aO}$>eeU9Iy$O-2@t$owt3i~;h%i+Q2x0JSst+Sm z1B%y)(k3BVn+%6&!>#^Cv_7c8@I=2-*UvfVcM1h&A1+_O?*sf!dlt`*+Alu1J+Lx0 zaTzokH2{DR1~Ix6#D^_{n$v@j>3gB&BcS2JAW{b;>I5MSG<-PX^b4^-J?)=mI2a?A zAZK9#)SM3gd3GBT73IS&kzik)|7K2YbKPALv%s%`HwrRN5nvbe7Mwfz6&5c{gTasp zV|WJiswfbJN#t1#!qstz(i#z^H6mOc2cFe<^B$5*aT10P)662q|cG63BS7ax&=4}M;Wx8B?ZQ52DvmlrAzP;+{u8**{0 zztL?b2#}w@_eW=%YaS{7AAByO42M4eh@FW!Mupv3A7R;&*HB$ujiX18V*mdAu-ilT zcCbJbhoV*G;90etj&=~X%vX-$3<#fZN~V;2EN|bMu^-D4rti4PWP(noLq$aenwpxh zefxIk_4<&Q2-n0wq7ohsf9K)|@ZvqaWSr4yN2xSY;<;ZhQt5>tTVlZFm<$?Qi+h>RqE?yKoA551pDON`o+7!5bw!4 zapDAWa&pku*N2T8H=?1TVV=^TtL3!VytK%Tqd?Kl^E8=6>3f=r;?UxhqL?|kO(%*<21t>&p(wL zj7B5s>gu3UsX!@3Sy>tO?Ae3KNxz%utWdEUERA2~NqgN%F9Qsv+49&Flj(P`wQJYn z+1_tuOdvb?qd_c{|r!IsXR_tuqdFxii?X;Qc~iIySlotX3ZM3 zwY3E(*Bgd#lP8ttNhqyCiSi&ymk{uPm6erlo7=#^0M@Nr2ea8cOO|g$>x{E%1C$Mf z$pbYP`1-C=sZd{EkCc=Y0Kmb&nLtUX&6$E;RJl?Me+CBSt|A{5BQ6AoZ@-6J5HN?{V!!BCU{nULAArfiy z?B`{G@7&Y|P}de}cTVAUf71^layH!RzY4oke#FFo+0OMHp8b^GMkNCBiJWVFPy>-V zL$A^YM9GPko*EC9e4oRV8nZkUJU^Gxj1fbhnb&j=y!$vKPd8LDsm24mLHn;4yX zinG^$jWMfxeU}ovJ6q9r*1Ay3rw{+NVc)_;fVj>G7TXAJKK>fXQ5lHT8s;q=n0{KWjewXx2BufQq|+)_o^4_3Xl!0ugq6u#p;9Ox zD#0#VajXApwDg=)xa$Cb%N+E(0x9kWTwZ^tJ&TVUjHo2Q0i|{or$t))YNWNtHXkksX+{m_Mmt8J9Iy}?zu_HK&!Yg`o6HaIiQUv=ub>X%v*L5(BqI* z?Lvg7l;9WT+Z*eGNecQvQ(kbjR&Z6%WkwBi|8oei8#5 zq@eo%k`i1t?E{!<3R>lBlL`bO`OGQ^0^`VP$p(=By!4R<_#dq_lLC3A1;_vZ002ovPDHLkV1jSd^+o^y literal 0 HcmV?d00001 From 3dad58f289bb74166ae45e24aae8db8bffafa7f5 Mon Sep 17 00:00:00 2001 From: ps-igel <60899838+ps-igel@users.noreply.github.com> Date: Mon, 4 May 2020 00:32:29 +0200 Subject: [PATCH 33/35] numerals clock: fixed settings issue --- apps.json | 2 +- apps/numerals/ChangeLog | 1 + apps/numerals/numerals.settings.js | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps.json b/apps.json index e9e38a1a1..62ea389f6 100644 --- a/apps.json +++ b/apps.json @@ -1283,7 +1283,7 @@ "name": "Numerals Clock", "shortName": "Numerals Clock", "icon": "numerals.png", - "version":"0.04", + "version":"0.05", "description": "A simple big numerals clock", "tags": "numerals,clock", "type":"clock", diff --git a/apps/numerals/ChangeLog b/apps/numerals/ChangeLog index 927c4ff5f..855442377 100644 --- a/apps/numerals/ChangeLog +++ b/apps/numerals/ChangeLog @@ -2,3 +2,4 @@ 0.02: Use BTN2 for settings menu like other clocks 0.03: maximize numerals, make menu button configurable, change icon to mac palette, add default settings file, respect 12hour setting 0.04: Don't overwrite existing settings on app update +0.05: Fix settings issue diff --git a/apps/numerals/numerals.settings.js b/apps/numerals/numerals.settings.js index 2d388525c..1e97271b6 100644 --- a/apps/numerals/numerals.settings.js +++ b/apps/numerals/numerals.settings.js @@ -11,7 +11,8 @@ updateSettings(); } let numeralsSettings = storage.readJSON('numerals.json',1); - if (!numeralsSettings) resetSettings(); + if (!numeralsSettings) resetSettings(); + if (numeralsSettings.menuButton===undefined) numeralsSettings.menuButton=22; let dm = ["fill","frame"]; let col = ["rnd","r/g","y/w","o/c","b/y"]; let btn = [[24,"BTN1"],[22,"BTN2"],[23,"BTN3"],[11,"BTN4"],[16,"BTN5"]]; @@ -30,7 +31,7 @@ onchange: v=> { numeralsSettings.drawMode=dm[v]; updateSettings();} }, "Menu button": { - value: 1|btn[numeralsSettings.menuButton], + value: btn.findIndex(e=>e[0]==numeralsSettings.menuButton), min:0,max:4, format: v=>btn[v][1], onchange: v=> { numeralsSettings.menuButton=btn[v][0]; updateSettings();} From 90ba48644c76929aa2a1158e561c3a9bb146c78c Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Mon, 4 May 2020 08:22:51 +0100 Subject: [PATCH 34/35] remove config file --- _config.yml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 _config.yml diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c74188174..000000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-slate \ No newline at end of file From f9ec4ebe68d0c5292bc7e18346b95f2f4f7219c4 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Mon, 4 May 2020 08:29:12 +0100 Subject: [PATCH 35/35] Rename timer -> simpletimer --- apps.json | 6 +++--- apps/{timer => simpletimer}/ChangeLog | 0 apps/{timer => simpletimer}/README.md | 0 apps/{timer => simpletimer}/app-icon.js | 0 apps/{timer => simpletimer}/app.js | 0 apps/{timer => simpletimer}/app.png | Bin 6 files changed, 3 insertions(+), 3 deletions(-) rename apps/{timer => simpletimer}/ChangeLog (100%) rename apps/{timer => simpletimer}/README.md (100%) rename apps/{timer => simpletimer}/app-icon.js (100%) rename apps/{timer => simpletimer}/app.js (100%) rename apps/{timer => simpletimer}/app.png (100%) diff --git a/apps.json b/apps.json index bcf097d9d..c3fbb1ace 100644 --- a/apps.json +++ b/apps.json @@ -1570,7 +1570,7 @@ ] }, { - "id": "timer", + "id": "simpletimer", "name": "Timer", "icon": "app.png", "version": "0.01", @@ -1580,11 +1580,11 @@ "allow_emulator": true, "storage": [ { - "name": "timer.app.js", + "name": "simpletimer.app.js", "url": "app.js" }, { - "name": "timer.img", + "name": "simpletimer.img", "url": "app-icon.js", "evaluate": true } diff --git a/apps/timer/ChangeLog b/apps/simpletimer/ChangeLog similarity index 100% rename from apps/timer/ChangeLog rename to apps/simpletimer/ChangeLog diff --git a/apps/timer/README.md b/apps/simpletimer/README.md similarity index 100% rename from apps/timer/README.md rename to apps/simpletimer/README.md diff --git a/apps/timer/app-icon.js b/apps/simpletimer/app-icon.js similarity index 100% rename from apps/timer/app-icon.js rename to apps/simpletimer/app-icon.js diff --git a/apps/timer/app.js b/apps/simpletimer/app.js similarity index 100% rename from apps/timer/app.js rename to apps/simpletimer/app.js diff --git a/apps/timer/app.png b/apps/simpletimer/app.png similarity index 100% rename from apps/timer/app.png rename to apps/simpletimer/app.png