feature: refactor sleepasandroid and try to provide start/stop functions
parent
84b3b22ef3
commit
3b36e66bcf
|
|
@ -1,27 +1,31 @@
|
||||||
(() => {
|
(() => {
|
||||||
function gbSend(message) {
|
eval(require("Storage").read("sleepasandroid.conf.js"));
|
||||||
Bluetooth.println("");
|
var interval = null;
|
||||||
Bluetooth.println(JSON.stringify(message));
|
|
||||||
}
|
|
||||||
|
|
||||||
var accel_data = [];
|
function gbSend(message) {
|
||||||
|
// Helper function to send data to gadgetbridge
|
||||||
|
Bluetooth.println("");
|
||||||
|
Bluetooth.println(JSON.stringify(message));
|
||||||
|
}
|
||||||
|
|
||||||
function updateAccel(accel) {
|
var config = new SleepAsAndroidConfig();
|
||||||
accel_data.push(accel);
|
|
||||||
}
|
|
||||||
|
|
||||||
function update_sleep_accel() {
|
|
||||||
copy = accel_data.map((x) => x);
|
|
||||||
mean_x = E.sum(copy.map((x) => x.x)) / copy.length;
|
|
||||||
mean_y = E.sum(copy.map((x) => x.y)) / copy.length;
|
|
||||||
mean_z = E.sum(copy.map((x) => x.z)) / copy.length;
|
|
||||||
|
|
||||||
update_data = { t: "sleep_as_android", "accel": { "x": mean_x, "y": mean_y, "z": mean_z } };
|
function update_sleep_as_android() {
|
||||||
gbSend(update_data);
|
// send data to gadgetbridge
|
||||||
accel_data = [];
|
accel = Bangle.getAccel();
|
||||||
}
|
health = Bangle.getHealthStatus();
|
||||||
|
|
||||||
Bangle.on("accel", updateAccel);
|
update_data = {t: "sleep_as_android", "accel": {"x": accel.x, "y": accel.y, "z": accel.z}, "bpm": health.bpm};
|
||||||
|
gbSend(update_data);
|
||||||
|
accel_data = [];
|
||||||
|
if (!config.getEnabled()) {
|
||||||
|
clearInterval(interval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getEnabled()) {
|
||||||
|
interval = setInterval(update_sleep_as_android, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
setInterval(update_sleep_accel, 10000);
|
|
||||||
})();
|
})();
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
class SleepAsAndroidConfig {
|
||||||
|
//Simple class to store whether sleep as android is running
|
||||||
|
constructor() {
|
||||||
|
this.filename = "sleepasandroid.json";
|
||||||
|
}
|
||||||
|
|
||||||
|
getEnabled() {
|
||||||
|
//returns whether sleeptracking is enabled
|
||||||
|
var content = require("Storage").readJSON(this.filename);
|
||||||
|
if (content === undefined) {
|
||||||
|
this.setEnabled(false);
|
||||||
|
return this.getEnabled();
|
||||||
|
}
|
||||||
|
return content.enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
setEnabled(enabled) {
|
||||||
|
// set sleeptracking state
|
||||||
|
require("Storage").writeJSON(this.filename, {"enabled": enabled});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function startTracking() {
|
||||||
|
var config = new SleepAsAndroidConfig();
|
||||||
|
config.setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stopTracking() {
|
||||||
|
var config = new SleepAsAndroidConfig();
|
||||||
|
config.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// (() => {eval(require("Storage").read("sleepasandroid.conf.js"));stopTracking();})();
|
||||||
|
// (() => {eval(require("Storage").read("sleepasandroid.conf.js"));startTracking();})();
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"sleepasandroid.boot.js","url":"boot.js"}
|
{"name":"sleepasandroid.boot.js","url":"boot.js"},
|
||||||
|
{"name":"sleepasandroid.conf.js","url":"config.js"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue