feature: refactor sleepasandroid and try to provide start/stop functions

master
André Büsgen 2024-05-17 23:08:12 +02:00
parent 84b3b22ef3
commit 3b36e66bcf
3 changed files with 59 additions and 20 deletions

View File

@ -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);
})(); })();

View File

@ -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();})();

View File

@ -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"}
] ]
} }