diff --git a/apps/bwclk/ChangeLog b/apps/bwclk/ChangeLog index ecd0c355f..f9bc5e65a 100644 --- a/apps/bwclk/ChangeLog +++ b/apps/bwclk/ChangeLog @@ -6,4 +6,5 @@ 0.06: Design and usability improvements. 0.07: Improved positioning. 0.08: Select the color of widgets correctly. Additional settings to hide colon. -0.09: Larger font size if colon is hidden to improve readability further. \ No newline at end of file +0.09: Larger font size if colon is hidden to improve readability further. +0.10: HomeAssistant integration if HomeAssistant is installed. \ No newline at end of file diff --git a/apps/bwclk/README.md b/apps/bwclk/README.md index f6a1c6522..190488d6b 100644 --- a/apps/bwclk/README.md +++ b/apps/bwclk/README.md @@ -7,6 +7,7 @@ - Tab left/right of screen to show steps, temperature etc. - Enable / disable lock icon in the settings. - If the "sched" app is installed tab top / bottom of the screen to set the timer. +- If HomeAssistant is installed, triggers are shown. Simple select the trigger and touch the middle of the screen to send the trigger to HomeAssistant. - The design is adapted to the theme of your bangle. - The colon (e.g. 7:35 = 735) can be hidden now in the settings. diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 5bfec4097..73cd6c35f 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -62,7 +62,12 @@ Graphics.prototype.setMediumFont = function(scale) { Graphics.prototype.setSmallFont = function(scale) { // Actual height 28 (27 - 0) - this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//84D//zgP/+GAAAAAAAAAAAAAAAAAAAD4AAAPgAAA+AAAAAAAAAAAAA+AAAD4AAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAg4AAHDgAAcOCABw54AHD/gAf/8AD/8AB//gAP8OAA9w4YCHD/gAcf+AB//gAf/gAP/uAA/w4ADnDgAAcOAABw4AAHAAAAcAAAAAAAAAAAAAAAIAA+A4AH8HwA/4PgHjgOAcHAcBwcBw/BwH78DgfvwOB8HA4HAOBw8A+HngB4P8ADgfgAAAYAAAAAAAAAAB4AAAf4AQB/gDgOHAeA4cDwDhweAOHDwA88eAB/nwAD88AAAHgAAA8AAAHn4AA8/wAHnvgA8cOAHhg4A8GDgHgcOA8B74BgD/AAAH4AAAAAAAAAAAAAAAAAMAAAH8AD8/4Af/3wB/8HgODwOA4HA4DgODgOAcOA4A44DwDzgHAH8AMAPwAQP+AAA/8AAAB4AAADAAAAAA+AAAD4AAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/8AD//+A/+/+H4AD98AAB3gAADIAAAAAAAAAAAAAIAAABwAAAXwAAHPwAB8P8D/gP//4AH/8AAAAAAAAAAAAAAAAAAAAAAAAGAAAA4gAAB/AAAH8AAD/AAAP8AAAH4AAAfwAADiAAAOAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAD/+AAP/4AABgAAAGAAAAYAAABgAAAGAAAAYAAAAAAAAAAAAAADkAAAPwAAA/AAAAAAAAAAAAAAAAAAAAAAAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAAAAAAAAAAAAAAAAAAAAAADgAAAOAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAA4AAA/gAA/+AA//AA//AAP/AAA/AAADAAAAAAAAAAAAAAAAAAA//gAP//gB///AHgA8A8AB4DgADgOAAOA4AA4DgADgPAAeAeADwB///AD//4AD/+AAAAAAAAAAAAAAAA4AAAHgAAAcAAADwAAAP//+A///4D///gAAAAAAAAAAAAAAAAAAAAAAYAeADgD4AeAfAD4DwAfgOAD+A4Ae4DgDzgOAeOA4Dw4DweDgH/wOAP+A4AfwDgAAAAAAAAAAAAIAOAA4A4ADwDggHAOHgOA48A4DnwDgO/AOA7uA4D84HgPh/8A8H/gDgH8AAACAAAAAAAAAAAAAHgAAB+AAA/4AAP7gAD+OAA/g4AP4DgA+AOADAA4AAB/+AAH/4AAf/gAADgAAAOAAAAAAAAAAAAAAAAD4cAP/h4A/+HwDw4HgOHAOA4cA4DhwDgOHAOA4cA4Dh4HAOD58A4H/gAAP8AAAGAAAAAAAAAAAAAAAAD/+AAf/8AD//4AePDwDw4HgOHAOA4cA4DhwDgOHAOA4cB4Bw8PAHD/8AIH/gAAH4AAAAAAAAAADgAAAOAAAA4AAYDgAHgOAD+A4B/wDgf4AOP+AA7/AAD/gAAP4AAA8AAAAAAAAAAAAAAAAAAeH8AD+/4Af//wDz8HgOHgOA4OA4Dg4DgODgOA4eA4Dz8HgH//8AP7/gAeH8AAAAAAAAAAAAAAAA+AAAH+AgB/8HAHh4cA8Dg4DgODgOAcOA4Bw4DgODgPA4eAeHDwB///AD//4AD/+AAAAAAAAAAAAAAAAAAAAAAAAAAODgAA4OAADg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAABwA5AHAD8AcAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAB8AAAP4AAB5wAAPDgAB4HAAHAOAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGMAAAYwAABjAAAGMAAAYwAABjAAAGMAAAYwAABjAAAGMAAAYwAABjAAAGMAAAYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEAAcA4AB4HAADw4AADnAAAH4AAAPAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAB8AAAHgAAA4AAADgDzgOA/OA4D84DgeAAPHwAAf+AAA/wAAB8AAAAAAAAAAAAAAAAAAD+AAB/+AAP/8AB4B4AOABwBwADgHB8OA4P4cDhxxwMGDDAwYMMDBgwwOHHHA4f4cDh/xwHAHCAcAMAA8AwAB8PAAD/4AAD/AAAAAAAAAAAAAACAAAB4AAB/gAA/8AAf+AAP/wAH/nAA/gcADwBwAPwHAA/4cAA/9wAAf/AAAP/AAAD/gAAB+AAAA4AAAAAAAAAAAAAAD///gP//+A///4DgcDgOBwOA4HA4DgcDgOBwOA4HA4Dg8DgPHwOAf/h4A///AB8f4AAAfAAAAAAAP+AAD/+AAf/8AD4D4AeADwBwAHAOAAOA4AA4DgADgOAAOA4AA4DgADgOAAOAcABwB4APAD4D4AHgPAAOA4AAAAAAAAAAAAAAAP//+A///4D///gOAAOA4AA4DgADgOAAOA4AA4DgADgOAAOA8AB4BwAHAHwB8AP//gAP/4AAP+AAAAAAAAAAAAAAAA///4D///gP//+A4HA4DgcDgOBwOA4HA4DgcDgOBwOA4HA4DgcDgOBgOA4AA4AAAAAAAAAAAAAAD///gP//+A///4DgcAAOBwAA4HAADgcAAOBwAA4HAADgcAAOAwAA4AAAAAAAAAf+AAD/+AA//+ADwB4AeADwDwAHgOAAOA4AA4DgADgOAAOA4AA4DgMDgPAweAcDBwB8MfADw/4AHD/AAAPwAAAAAAAAAAAAAAAP//+A///4D///gABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAA///4D///gP//+AAAAAAAAAAAAAAAAAAAD///gP//+A///4AAAAAAAAAAAADgAAAPAAAA+AAAA4AAADgAAAOAAAA4AAAHgP//8A///wD//8AAAAAAAAAAAAAAAAAAAA///4D///gP//+AAHAAAA+AAAP8AAB54AAPDwAB4HgAPAPAB4AfAPAA+A4AA4DAABgAAACAAAAAAAAAAP//+A///4D///gAAAOAAAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAADgAAAAAAAAAAAAAAP//+A///4D///gD+AAAD+AAAB+AAAB/AAAB/AAAB/AAAB+AAAH4AAB+AAA/gAAP4AAD+AAA/AAAfwAAD///gP//+A///4AAAAAAAAAAAAAAAAAAAP//+A///4D///gHwAAAPwAAAPgAAAfgAAAfAAAAfAAAA/AAAA+AAAB+AAAB8A///4D///gP//+AAAAAAAAAAAP+AAD/+AAf/8AD4D4AeADwBwAHAOAAOA4AA4DgADgOAAOA4AA4DgADgOAAOAcABwB4APAD4D4AH//AAP/4AAP+AAAAAAAAAAAP//+A///4D///gOAcAA4BwADgHAAOAcAA4BwADgHAAOAcAA4DgAD4eAAH/wAAP+AAAPgAAAAAAAA/4AAP/4AB//wAPgPgB4APAHAAcA4AA4DgADgOAAOA4AA4DgADgOAAOA4AO4BwA/AHgB8APgPwAf//gA//uAA/4QAAAAAAAAAA///4D///gP//+A4BwADgHAAOAcAA4BwADgHAAOAcAA4B8ADgP8APh/8Af/H4A/4HgA+AGAAAAAAAAAAAABgAHwHAA/g+AH/A8A8cBwDg4DgODgOA4OA4DgcDgOBwOA4HA4DwODgHg4cAPh/wAcH+AAwPwAAAAADgAAAOAAAA4AAADgAAAOAAAA4AAAD///gP//+A///4DgAAAOAAAA4AAADgAAAOAAAA4AAADgAAAAAAAAAAAAAAAAAP//AA///AD//+AAAB8AAABwAAADgAAAOAAAA4AAADgAAAOAAAA4AAAHgAAA8A///gD//8AP//gAAAAAAAAAAIAAAA8AAAD+AAAH/AAAD/wAAB/4AAA/8AAAf4AAAPgAAB+AAA/4AAf+AAP/AAH/gAD/wAAP4AAA4AAAAAAAAPAAAA/gAAD/4AAA/+AAAf/AAAH/gAAB+AAAf4AAf/AAf/AAP/gAD/gAAPwAAA/4AAA/+AAAf/AAAH/wAAB/gAAB+AAB/4AA/+AA/+AA/+AAD/AAAPAAAAgAAAAAAAAMAAGA4AA4D4APgHwB8APwfAAPn4AAf+AAAfwAAB/AAAf+AAD4+AA/B8AHwB8A+AD4DgADgMAAGAwAAADwAAAPwAAAPwAAAfgAAAfgAAAf/4AAf/gAH/+AB+AAAPwAAD8AAA/AAADwAAAMAAAAgAAAAAAAAMAACA4AA4DgAPgOAD+A4Af4DgH7gOB+OA4Pw4Dj8DgO/AOA/4A4D+ADgPgAOA4AA4DAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////gAAAOAAAA4AAADAAAAAAAAAAAAAAAAAAAAAAA4AAAD+AAAP/gAAH/4AAB/+AAAf+AAAH4AAABgAAAAAAAAADAAAAOAAAA4AAADgAAAP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAAAcAAADgAAAcAAADgAAAcAAAB4AAADwAAADgAAAHAAAAOAAAAYAAAAAAAAAAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAHH8AA8/4AHzjgAcMOABxwYAHHBgAccOABxwwAHGHAAP/4AA//4AA//gAAAAAAAAAAAAAAAAAAA///4D///gP//+AA4BwAHADgAcAOABwA4AHADgAcAOAB4B4ADwPAAP/8AAf/AAAf4AAAAAAAAAAAAPwAAD/wAAf/gADwPAAeAeABwA4AHADgAcAOABwA4AHADgAeAeAA8DwABwOAADAwAAAAAAAAAAAA/AAAP/AAD//AAPA8AB4B4AHADgAcAOABwA4AHADgAcAOAA4BwD///gP//+A///4AAAAAAAAAAAAAAAAPwAAD/wAAf/gAD2PAAeYeABxg4AHGDgAcYOABxg4AHGDgAeYeAA/jwAB+OAAD4wAABgAAAAAAAAAAABgAAAGAAAB//+Af//4D///gPcAAA5gAADGAAAMYAAAAAAAAAPwAAD/wMA//w4DwPHgeAePBwA4cHADhwcAOHBwA4cHADhwOAcPB///4H///Af//wAAAAAAAAAAAAAAAAAAD///gP//+AA//4ADgAAAcAAABwAAAHAAAAcAAABwAAAHgAAAP/+AAf/4AA//gAAAAAAAAAAAAAAMf/+A5//4Dn//gAAAAAAAAAAAAAAAAAAHAAAAfn///+f//+5///wAAAAAAAAAAAAAAAAAAP//+A///4D///gAAcAAAD8AAAf4AADzwAAeHgAHwPAAeAeABgA4AEABgAAAAAAAAAD///gP//+A///4AAAAAAAAAAAAAAAAAAAAf/+AB//4AH//gAOAAABwAAAHAAAAcAAABwAAAHgAAAP/+AA//4AB//gAOAAABwAAAHAAAAcAAABwAAAHgAAAf/+AA//4AA//gAAAAAAAAAAAAAAAf/+AB//4AD//gAOAAABwAAAHAAAAcAAABwAAAHAAAAeAAAA//4AB//gAD/+AAAAAAAAAAAAAAAAD8AAA/8AAH/4AA8DwAHgHgAcAOABwA4AHADgAcAOABwA4AHgHgAPh8AAf/gAA/8AAA/AAAAAAAAAAAAAAAAB///8H///wf///A4BwAHADgAcAOABwA4AHADgAcAOAB4B4ADwPAAP/8AAf/AAAf4AAAAAAAAAAAAPwAAD/wAA//wADwPAAeAeABwA4AHADgAcAOABwA4AHADgAOAcAB///8H///wf///AAAAAAAAAAAAAAAAAAAH//gAf/+AB//4ADwAAAcAAABwAAAHAAAAcAAAAAAAAAAMAAHw4AA/jwAH+HgAcYOABxw4AHHDgAcMOABw44AHjjgAPH+AA8fwAAw+AAAAAABgAAAGAAAAcAAAf//wB///AH//+ABgA4AGADgAYAOABgA4AAAAAAAAAAAAAAAH/AAAf/wAB//wAAB/AAAAeAAAA4AAADgAAAOAAAA4AAADgAAAcAB//4AH//gAf/+AAAAAAAAAAAAAAABwAAAH4AAAf8AAAP8AAAH+AAAD+AAAD4AAA/gAAf8AAP+AAH/AAAfgAABwAAAAAAAAAAAABwAAAH8AAAf+AAAP/gAAD/gAAB+AAAf4AAP8AAP+AAB/AAAH4AAAf8AAAP+AAAD/gAAB+AAAf4AAf/AAP/AAB/gAAHgAAAQAAABAAIAHADgAeAeAA8HwAB8+AAD/gAAD8AAAPwAAD/gAAfPgADwfAAeAeABwA4AEAAgAAAAABAAAAHgAAAfwAAA/wAAAf4BwAP4/AAP/8AAP+AAD/AAB/wAA/4AAP8AAB+AAAHAAAAQAAAAAAIAHADgAcAeABwD4AHA/gAcHuABx84AHPDgAf4OAB/A4AHwDgAeAOABgA4AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAH4Af//////n//AAAA4AAADgAAAAAAAAAAAAAAAAAP//+A///4D///gAAAAAAAAAAAAAAAAAAA4AAADgAAAOAAAA//5/9////wAH4AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAeAAAD4AAAOAAAA4AAADgAAAHAAAAcAAAA4AAADgAAAOAAAD4AAAPAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 32, atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMc"), 28+(scale<<8)+(1<<16)); + this.setFontCustom( + E.toString(require('heatshrink').decompress(atob('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'))), + 32, + atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCRAQEhAIDw8XCQ8RABIODRELCw4REwcLCQoPHBscDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGhARERERBwcHBxAREREREREPEREREREPEQ8="), + 28+(scale<<8)+(1<<16) + ); return this; }; @@ -123,25 +128,43 @@ var imgWatch = { /* * INFO ENTRIES + * List of [Data, Icon, left/right, HomeAssistant Trigger] */ var infoArray = [ - function(){ return [ null, null, "left" ] }, - function(){ return [ "Bangle", imgWatch, "right" ] }, - function(){ return [ E.getBattery() + "%", imgBattery, "left" ] }, - function(){ return [ getSteps(), imgSteps, "left" ] }, - function(){ return [ Math.round(Bangle.getHealthStatus("last").bpm) + " bpm", imgBpm, "left"] }, - function(){ return [ getWeather().temp, imgTemperature, "left" ] }, - function(){ return [ getWeather().wind, imgWind, "left" ] }, + function(){ return [ null, null, "left", null ] }, + function(){ return [ "Bangle", imgWatch, "right", null ] }, + function(){ return [ E.getBattery() + "%", imgBattery, "left", null ] }, + function(){ return [ getSteps(), imgSteps, "left", null ] }, + function(){ return [ Math.round(Bangle.getHealthStatus("last").bpm) + " bpm", imgBpm, "left", null] }, + function(){ return [ getWeather().temp, imgTemperature, "left", null ] }, + function(){ return [ getWeather().wind, imgWind, "left", null ] }, ]; + +/* + * We append the HomeAssistant integrations if HomeAssistant is available + */ +try{ + var triggers = require("ha.lib.js").getTriggers(); + triggers.forEach(trigger => { + infoArray.push(function(){ + return [trigger.display, trigger.getIcon(), "left", trigger.trigger] + }); + }) +} catch(ex){ + // Nothing to do if HomeAssistant is not available... +} const NUM_INFO=infoArray.length; function getInfoEntry(){ if(isAlarmEnabled()){ - return [getAlarmMinutes() + " min.", imgTimer, "left"] + return [getAlarmMinutes() + " min.", imgTimer, "left", null] } else if(Bangle.isCharging()){ - return [E.getBattery() + "%", imgCharging, "left"] + return [E.getBattery() + "%", imgCharging, "left", null] } else{ + // In case the user removes HomeAssistant entries, showInfo + // could be larger than infoArray.length... + settings.showInfo = settings.showInfo % infoArray.length; return infoArray[settings.showInfo](); } } @@ -351,12 +374,14 @@ function drawTime(){ g.setSmallFont(); var imgWidth = 0; if(infoImg !== undefined){ - imgWidth = infoImg.width; + imgWidth = 26.0; var strWidth = g.stringWidth(infoStr); + var scale = imgWidth / infoImg.width; g.drawImage( infoImg, - W/2 + (printImgLeft ? -strWidth/2-2 : strWidth/2+2) - infoImg.width/2, - y - infoImg.height/2 + W/2 + (printImgLeft ? -strWidth/2-2 : strWidth/2+2) - parseInt(imgWidth/2), + y - parseInt(imgWidth/2), + { scale: scale } ); } g.drawString(infoStr, printImgLeft ? W/2 + imgWidth/2 + 2 : W/2 - imgWidth/2 - 2, y+3); @@ -429,6 +454,7 @@ Bangle.on('touch', function(btn, e){ var is_right = e.x > right; var is_upper = e.y < upper; var is_lower = e.y > lower; + var is_center = !is_upper && !is_lower && !is_left && !is_right; if(is_upper){ Bangle.buzz(40, 0.6); @@ -454,6 +480,25 @@ Bangle.on('touch', function(btn, e){ settings.showInfo = settings.showInfo < 0 ? NUM_INFO-1 : settings.showInfo; drawTime(); } + + if(is_center){ + var infoEntry = getInfoEntry(); + var trigger = infoEntry[3]; + if(trigger != null){ + try{ + require("ha.lib.js").sendTrigger("TRIGGER_BW"); + Bangle.buzz(80, 0.6).then(()=>{ + require("ha.lib.js").sendTrigger(trigger); + setTimeout(()=>{ + Bangle.buzz(80, 0.6); + }, 250); + }); + }catch(ex){ + print(ex); + // Without ha -> nop. + } + } + } }); diff --git a/apps/bwclk/metadata.json b/apps/bwclk/metadata.json index eba1449a6..95fb7e608 100644 --- a/apps/bwclk/metadata.json +++ b/apps/bwclk/metadata.json @@ -1,11 +1,11 @@ { "id": "bwclk", "name": "BW Clock", - "version": "0.09", + "version": "0.10", "description": "BW Clock.", "readme": "README.md", "icon": "app.png", - "screenshots": [{"url":"screenshot.png"}, {"url":"screenshot_2.png"}, {"url":"screenshot_3.png"}], + "screenshots": [{"url":"screenshot.png"}, {"url":"screenshot_2.png"}, {"url":"screenshot_3.png"}, {"url":"screenshot_4.png"}], "type": "clock", "tags": "clock", "supports": ["BANGLEJS2"], diff --git a/apps/bwclk/screenshot_4.png b/apps/bwclk/screenshot_4.png new file mode 100644 index 000000000..3807d47ad Binary files /dev/null and b/apps/bwclk/screenshot_4.png differ