mirror of https://github.com/espruino/BangleApps
feature: refactor sleepasandroid and try to provide start/stop functions
parent
84b3b22ef3
commit
3b36e66bcf
|
@ -1,27 +1,31 @@
|
|||
(() => {
|
||||
function gbSend(message) {
|
||||
Bluetooth.println("");
|
||||
Bluetooth.println(JSON.stringify(message));
|
||||
}
|
||||
eval(require("Storage").read("sleepasandroid.conf.js"));
|
||||
var interval = null;
|
||||
|
||||
var accel_data = [];
|
||||
function gbSend(message) {
|
||||
// Helper function to send data to gadgetbridge
|
||||
Bluetooth.println("");
|
||||
Bluetooth.println(JSON.stringify(message));
|
||||
}
|
||||
|
||||
function updateAccel(accel) {
|
||||
accel_data.push(accel);
|
||||
}
|
||||
var config = new SleepAsAndroidConfig();
|
||||
|
||||
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 } };
|
||||
gbSend(update_data);
|
||||
accel_data = [];
|
||||
}
|
||||
function update_sleep_as_android() {
|
||||
// send data to gadgetbridge
|
||||
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"],
|
||||
"readme": "README.md",
|
||||
"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