New widget: Heart rate alarm
parent
1d793a037f
commit
791f88b061
16
apps.json
16
apps.json
|
|
@ -1351,6 +1351,22 @@
|
||||||
{"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true}
|
{"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "hralarm",
|
||||||
|
"name": "Heart rate alarm",
|
||||||
|
"shortName":"HR Alarm",
|
||||||
|
"version":"0.01",
|
||||||
|
"description": "This invisible widget vibrates whenever the heart rate gets close to the upper limit or goes over or under the configured limits",
|
||||||
|
"icon": "widget.png",
|
||||||
|
"type": "widget",
|
||||||
|
"tags": "widget",
|
||||||
|
"supports" : ["BANGLEJS2"],
|
||||||
|
"readme": "README.md",
|
||||||
|
"storage": [
|
||||||
|
{"name":"hralarm.wid.js","url":"widget.js"},
|
||||||
|
{"name":"hralarm.settings.js","url":"settings.js"}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "hrings",
|
"id": "hrings",
|
||||||
"name": "Hypno Rings",
|
"name": "Hypno Rings",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
0.01: New Widget!
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Heart rate alarm
|
||||||
|
|
||||||
|
This invisible widget vibrates whenever the heart rate gets close to the upper limit or goes over or under the configured limits.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Configure the heart rate limits in the apps settings. This widget uses both 'HRM' and 'BTHRM' events.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
Long vibration every 10 seconds on reaching upper limit, short vibrations between upper limit and warning threshold and an single vibration when reaching the lower limit again.
|
||||||
|
|
||||||
|
## Requests/Creator
|
||||||
|
|
||||||
|
https://github.com/halemmerich
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
(function(back) {
|
||||||
|
var FILE = "hralarm.json";
|
||||||
|
|
||||||
|
var settings = Object.assign({
|
||||||
|
enabled: false,
|
||||||
|
upper: 180,
|
||||||
|
warning: 170,
|
||||||
|
lower: 150,
|
||||||
|
}, require('Storage').readJSON(FILE, true) || {});
|
||||||
|
|
||||||
|
function writeSettings() {
|
||||||
|
require('Storage').writeJSON(FILE, settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
E.showMenu({
|
||||||
|
'': { 'title': 'HR Alarm' },
|
||||||
|
'< Back': back,
|
||||||
|
'Enabled': {
|
||||||
|
value: !!settings.enabled,
|
||||||
|
format: v => settings.enabled ? "On" : "Off",
|
||||||
|
onchange: v => {
|
||||||
|
settings.enabled = v;
|
||||||
|
writeSettings();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'Upper limit': {
|
||||||
|
value: settings.upper,
|
||||||
|
min: 0,
|
||||||
|
step:5,
|
||||||
|
max: 300,
|
||||||
|
onchange: v => {
|
||||||
|
settings.upper = v;
|
||||||
|
writeSettings();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'Lower limit': {
|
||||||
|
value: settings.lower,
|
||||||
|
min: 0,
|
||||||
|
step:5,
|
||||||
|
max: 300,
|
||||||
|
onchange: v => {
|
||||||
|
settings.lower = v;
|
||||||
|
writeSettings();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'Warning at': {
|
||||||
|
value: settings.warning,
|
||||||
|
min: 0,
|
||||||
|
step:5,
|
||||||
|
max: 300,
|
||||||
|
onchange: v => {
|
||||||
|
settings.warning = v;
|
||||||
|
writeSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
(() => {
|
||||||
|
var settings = require('Storage').readJSON("hralarm.json", true) || {};
|
||||||
|
if (!settings.enabled){ Bangle.setHRMPower(0, 'hralarm'); return; }
|
||||||
|
Bangle.setHRMPower(1, 'hralarm');
|
||||||
|
var hitLimit = 0;
|
||||||
|
var checkHr = function(hr){
|
||||||
|
if (hr.bpm > settings.warning && hr.bpm <= settings.upper){
|
||||||
|
Bangle.buzz(100, 1);
|
||||||
|
}
|
||||||
|
if (hitLimit < getTime() && hr.bpm > settings.upper){
|
||||||
|
hitLimit = getTime() + 10;
|
||||||
|
Bangle.buzz(2000, 1);
|
||||||
|
}
|
||||||
|
if (hitLimit > 0 && hr.bpm < settings.lower){
|
||||||
|
hitLimit = 0;
|
||||||
|
Bangle.buzz(500, 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Bangle.on("HRM", checkHr);
|
||||||
|
Bangle.on("BTHRM", checkHr);
|
||||||
|
|
||||||
|
WIDGETS["hralarm"]={
|
||||||
|
area:"tl",
|
||||||
|
width: 0,
|
||||||
|
draw: function(){}
|
||||||
|
};
|
||||||
|
})()
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
Loading…
Reference in New Issue