sleeplog: Prevent removing other kill listeners #1445

Update boot.js
 - prevent removing other kill listeners #1445
Update README.md
 - change "only available" information for Settings
 - add new ideas to "To do list"
master
storm64 2022-02-13 22:39:57 +01:00
parent 0ec1d57add
commit c8c1b7b914
3 changed files with 13 additions and 7 deletions

View File

@ -1,3 +1,3 @@
0.01: New App! 0.01: New App!
0.02: Fix crash on start 0.02: Fix crash on start
0.03: Added power saving mode + move all read/write log actions into lib/module 0.03: Added power saving mode, move all read/write log actions into lib/module, fix #1445

View File

@ -49,14 +49,17 @@ also provides a power saving mode using the built in movement calculation. The i
* __PowerSaving__ * __PowerSaving__
_on_ / __off__ _on_ / __off__
En-/Disable power saving mode. _Saves battery, but might decrease accurracy._ En-/Disable power saving mode. _Saves battery, but might decrease accurracy._
* __MaxMove__ | maximal movement threshold | only available when on power saving mode * __MaxMove__ | maximal movement threshold
(only available when on power saving mode)
_50_ / _51_ / _..._ / __100__ / _..._ / _200_ _50_ / _51_ / _..._ / __100__ / _..._ / _200_
On power saving mode the watch is considered resting if this threshold is lower or equal to the movement value of bangle's health event. On power saving mode the watch is considered resting if this threshold is lower or equal to the movement value of bangle's health event.
* __NoMoThresh__ | no movement threshold | only available when not on power saving mode * __NoMoThresh__ | no movement threshold
(only available when not on power saving mode)
_0.006_ / _0.007_ / _..._ / __0.012__ / _..._ / _0.020_ _0.006_ / _0.007_ / _..._ / __0.012__ / _..._ / _0.020_
The standard deviation over the measured values needs to be lower then this threshold to count as not moving. The standard deviation over the measured values needs to be lower then this threshold to count as not moving.
The defaut threshold value worked best for my watch. A threshold value below 0.008 may get triggert by noise. The defaut threshold value worked best for my watch. A threshold value below 0.008 may get triggert by noise.
* __MinDuration__ | minimal no movement duration | only available when not on power saving mode * __MinDuration__ | minimal no movement duration
(only available when not on power saving mode)
_5min_ / _6min_ / _..._ / __10min__ / _..._ / _15min_ _5min_ / _6min_ / _..._ / __10min__ / _..._ / _15min_
If no movement is detected for this duration, the watch is considered as resting. If no movement is detected for this duration, the watch is considered as resting.
* __Enabled__ * __Enabled__
@ -77,7 +80,8 @@ For easy access from the console or other apps the following parameters, values
enabled: true, // bool / service status indicator enabled: true, // bool / service status indicator
logfile: "sleeplog.log", // string / used logfile logfile: "sleeplog.log", // string / used logfile
resting: false, // bool / indicates if the watch is resting resting: false, // bool / indicates if the watch is resting
status: 2, // int / actual status: 0 = unknown, 1 = not worn, 2 = awake, 3 = sleeping status: 2, // int / actual status:
/ undefined = service stopped, 0 = unknown, 1 = not worn, 2 = awake, 3 = sleeping
firstnomodate: 1644435877595, // number / Date.now() from first recognised no movement, not available in power saving mode firstnomodate: 1644435877595, // number / Date.now() from first recognised no movement, not available in power saving mode
stop: function () { ... }, // funct / stops the service until the next load() stop: function () { ... }, // funct / stops the service until the next load()
start: function () { ... }, // funct / restarts the service start: function () { ... }, // funct / restarts the service
@ -144,7 +148,9 @@ For easy access from the console or other apps the following parameters, values
#### To do list #### To do list
* Send the logged information to Gadgetbridge. * Send the logged information to Gadgetbridge.
_(For now I have no idea how to achieve this, help is appreciated.)_ _(For now I have no idea how to achieve this, help is appreciated.)_
* View, down- and upload log functions via App Loader.
* Calculate and display overall sleep statistics. * Calculate and display overall sleep statistics.
* Option to automatically change power saving mode depending on time of day.
#### Requests, Bugs and Feedback #### Requests, Bugs and Feedback
Please leave requests and bug reports by raising an issue at [github.com/storm64/BangleApps](https://github.com/storm64/BangleApps) or send me a [mail](mailto:banglejs@storm64.de). Please leave requests and bug reports by raising an issue at [github.com/storm64/BangleApps](https://github.com/storm64/BangleApps) or send me a [mail](mailto:banglejs@storm64.de).

View File

@ -33,7 +33,7 @@ if (sleeplog.enabled) {
// remove all listeners // remove all listeners
Bangle.removeListener('accel', sleeplog.accel); Bangle.removeListener('accel', sleeplog.accel);
Bangle.removeListener('health', sleeplog.health); Bangle.removeListener('health', sleeplog.health);
E.removeListener('kill', sleeplog.stop); E.removeListener('kill', () => sleeplog.stop());
// exit on missing global object // exit on missing global object
if (!global.sleeplog) return; if (!global.sleeplog) return;
// write log with undefined sleeping status // write log with undefined sleeping status
@ -55,7 +55,7 @@ if (sleeplog.enabled) {
// add acceleration listener if defined and set status to unknown // add acceleration listener if defined and set status to unknown
if (sleeplog.accel) Bangle.on('accel', sleeplog.accel); if (sleeplog.accel) Bangle.on('accel', sleeplog.accel);
// add kill listener // add kill listener
E.on('kill', sleeplog.stop); E.on('kill', () => sleeplog.stop());
// read log since 5min ago and restore status to last known state or unknown // read log since 5min ago and restore status to last known state or unknown
sleeplog.status = (require("sleeplog").readLog(0, Date.now() - 3E5)[1] || [0, 0])[1] sleeplog.status = (require("sleeplog").readLog(0, Date.now() - 3E5)[1] || [0, 0])[1]
// update resting according to status // update resting according to status