-
Yep. It's a bit of a tight rope.
Average motion when I'm actually asleep is about 125.
Average motion during a movie or reading a book is about 102-180.
Average heart rate when I'm asleep is 54.
Average heart rate during a movie/reading is about 64.So using only motion, it comes down to consecutiveness, which can get close. But then if I read before bed, it counts it as sleep. And I tend to look at the app loader interface, rather than the watch app, so it doesn't cut out the mid-day things as well.
I'm still testing this out, and if sleeplog works fine for everyone else, that's fine. Just wanted to make sure I mentioned it while they were thinking about how to sync it to gadgetbridge, and/or see if it was just a "I need to move more while reading" thing. :P
-
Has anyone already tried adding heart rate to SleepLog?
A single max heart rate like
sleepHR
that says to only consider sleep if heart rate is below that value (in my case ~58-60bpm).Based on motion alone I get a lot of false positives during the day based on motion, if I'm at my desk for 30 min, or at the dentist, etc. (And then there's often a base level of ~50-80 reported even if I'm not wearing the watch...)
I've been trying the heart rate plan and I still get false positives if the heart rate gives a
0
for whatever reason, so I've also considered holding onto the most recent nonzero for a while.I also considered trying to store min/max heart rate and basing sleep on the lowest 15th percentile. But for myself just setting a bpm is easy enough.
-
-
-
Yeah, it'd be helpful to add a quick check
if (!location || !location.lat || !location.lon)
then give a message about mylocation needing to be set, and some detail in the readme about if you get the message, do xyz to solve it. Otherwise it just silently fails on the watch, until you look in the IDE.The missing Bangle.http issue is a bit beyond me though. Maybe check on firmware version?
(Side note: has anyone considered having gps or gadgetbridge update mylocation once in a while? Or does that exist already?
OpenWeatherMap does have an API to look up location name from lat/lon, so that could also fill in name too if needed.){Update re mylocation: I found this thread. Searched GitHub for mylocation and didn't find anything that looked like auto-updates yet.}
-
Ah, now you also don't have a location set. We managed to end up with the same problem. Go into the app loader and search for My Location and click the save icon to open the interface. Then pick a location on the map and save. (I can try to write better instructions later...)
(You can ignore the set weather and gadgetbridge weather if you use OWMweather. )
-
-
-
Tried reinstalling all apps and uninstalling any custom things, then tried again with pretokenization unchecked in the app loader. Still get the exception.
I could just be overlooking something.
____ _ | __|___ ___ ___ _ _|_|___ ___ | __|_ -| . | _| | | | | . | |____|___| _|_| |___|_|_|_|___| |_| espruino.com 2v21.69 (c) 2024 G.Williams Uncaught undefined >
Quick code to recreate it in the IDE (toggling quiet mode on/off):
let s = require('Storage').readJSON('setting.json'); s.quiet = s.quiet==1?0:1; require('Storage').writeJSON('setting.json',s); Bangle.showClock();
-
I only noticed it when doing an update to setting.json, which would trigger that hash check exception. It looks like any new *.boot.js file would do it too though.
I just updated to 2v21.69, updated sched/alarms/locale, and forced bootloader to update (all from the development app loader).
The uncaught undefined still happens. Always after all of the console logs from booting.
I still haven't noticed any functionality issues from it (I don't use the web ide remote connection though).
-
Very late response, but I don't know how useful it is anyway:
Compared to a Fitbit Versa 3, I usually get within 5-10bpm consistently. They both use the photosomethingorother sensor, but in case there was some secret algorithm Fitbit uses, here's a roughly what I've found:
Fitbit likes to draw their graphs as "landscape" as possible, with a thick line that hides how spikey it gets, but usually it has the exact same peaks and valleys as Bangle.
Attached are screenshots of the graphs of both while shoveling and using a snowblower on and off for about an hour and a half.
Peaks in the Fitbit graph are 117bpm, then 132, 132, 132.
Corresponding peaks in Gadgetbridge are 90bpm, then 127, 130, 137. -
Couple other things to double check:
Do you have the BangleJs version of Gadgetbridge? (Nevermind, if you had the Internet setting then yeah you do)
Do you have the Android Integration app installed? -
-
Mine does the same, I just never thought to question it.
(Copy of my app list if needed... borrowing the notebin idea)
-
I could've sworn I've seen "Storage Updated" in the past, but trying 2v19 and even 2v18 now, it isn't showing up.
But if I go back to 2v21 and temporarily remove the hash check by updating bootupdate.js, the exception does go away.
That would explain why it's only during settings updates. And why when I tried to manually remove the hash check in
.boot0
to put in a try/catch, I wasn't catching anything... I thought I was fighting against the bootupdate.js rewriting it, but I had also removed the exception.It hasn't been an issue, besides a lot of head scratching and thinking I broke something.
Thanks!
-
To hide the weather widget:
Setting->Apps->Weather
..Hide widget []
From what I've seen so far: Most widgets are install to be active, uninstall to hide. The weather one is an exception, it's built into the Weather app.
For charging, I got the wooden dock and after some finagling to get it put together, it's been oddly good at just connecting when I plop the watch on there. I also use the watch app that rotates the screen so I can see that it's charging.
:P I spent a month not realizing I could just swipe left/right on notifications. I thought I had to click the tiny x in the bottom left to dismiss them...
So you're not alone, there is some learning curve and plenty of room to help document stuff. Everyone seems pretty open to contributions and suggestions and answering questions though!
-
I'm not sure if I should log this or if it's just me (or if it's already logged and I'm just not seeing it):
After firmware version 2v20, if you make a settings change like switching from light to dark theme and back out, when BangleJS 2 reloads, an "Uncaught undefined" exception shows up at the end of the log.
I went backward in firmware versions until it went away and found:
2v19
- After reboot, no errors in the log
2v20
through2v21.31
- After reboot anUncaught undefined
shows in the logI uninstalled all apps except "Simplest Clock", "Settings", and "Bootloader" while testing. Wasn't sure how to debug it further, since it seems to be happening during an event or something after boot.
-
-
I was mostly thinking it'd help with mobile, increasing control sizes. And then concerned that as new controls are added to html, it wouldn't be updated to match.
I just tested button size though, and Bootstrap actually made it a bit worse.
Then with Spectre, switching to a "btn-group" increased the button sizes... touché Spectre. It might be easier to work with than I thought.
(Screenshot of sleeplog's buttons, top is with btn-group. The 2x2 grid ends up being the size of my fingertip.)
-
At the risk of sounding like the cliche "noob with overzealous ideas":
The app loader and interfaces are great for interacting with the watch. I'd like to work on making them better, even if it was rejected it'd be a good learning exercise.
They use "spectre.css", so I figured I'd learn it. But Spectre appears to be abandoned, with a few struggling attempts to fork it.
Would it make sense to switch to something more widely used like Bootstrap? Especially before many interfaces are made that rely on it?
- Learning bootstrap is probably more useful use of brain space.
- It might be something people already know.
- It might be something people already know.
- It'd keep things pretty and uniform-ish.
- It'd probably outlive spectre and be updated as html/css gets updated.
- It can switch to dark mode pretty easily.
Bootstrap is just an example, but basically interfaces made by programmers tend to look and feel terrible, so a guide/crutch is good. And the fewer frameworks I have to remember the better.
- Learning bootstrap is probably more useful use of brain space.
Yeah, after a week or two I noticed my heart rate wasn't foolproof either, so I've held off submitting any changes.
There is someone working on syncing to Sleep as Android and/or a sleep algorithm in Gadgetbridge, so I'm just silently cheering them on and hoping for the best:
https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3785
https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3802