-
-
I think it would make sense to have a stopwatch in the Alarms app - it's useful and standard in most phone clock apps, but right now you have to download a separate app for one, taking storage and launcher space. I'm curious as to why one isn't currently included, while events are, which are just alarms but they can go off on a day later than the current day.
-
-
This is interesting stuff, for me this is the first time I'll be able to believe a sleep chart. I'm curious as to how HRM will be implemented.
I looked at the code and it looks like any HRM data sent from the Health app will be forwarded to Sleep as Android, but after tracking for 20 minutes with the interval set to Always, the HRM graph doesn't show up while the actigraph does. Does anyone else have HRM working?
-
-
-
2.21 broke a couple things in my clock face.
- Previously I could set a color and draw an image, and it would dither the color. Now it just shows solid blue.
- Previously I could have these big atob strings of images. Now when I upload w/ pretokenization it says invalid syntax, something about a colon.
Could these get fixed? Let me know if I need to send any more info.
- Previously I could set a color and draw an image, and it would dither the color. Now it just shows solid blue.
-
-
I want to draw a Pixel-style clock on my Bangle. I have the font. But on Pixels, each number has an outline. I'm not sure how to do that with the Espruino graphics library. Is that even possible? If not, any recommendations on how I can generate a font that appears to be outlined?
Image for context: -
-
-
-
Yeah it was all from GPT-4. Note that it did hallucinate a bit (the arguments are hallucinated given that the decompiler doesn't have the type defs and I didn't provide the type defs, and it got the hex decoding wrong once), but when I tried providing more info I found the other explanations lower quality than the first one.
-
Interesting - do you still see useful values in raw? As you say it looks almost like it's not set anywhere. It should probably be set with hrmInfo.raw = hrmValue; in heartrate_vc31_binary too.
You're right.
.raw
is always 0 (as such the magenta line is just displaying the inverse of the average). Should I make a PR or do you want to add that line?I think it works in a different way anyway - by taking blocks of HRM data and examining each block, rather than by 'streaming' it in as our algorithm did.
Decompiled it and yeah I have no idea what it does ¯\_(ツ)_/¯
Also here's the decompiled version for anyone who wants it https://ktibow.github.io/blog/vcareexplanation/ -
Yes - just Bangle.on("HRM-raw", ...)
It's hard though because the data can be a bit all over the place, even when filtered using our algorithms (see attachments - green: raw, magenta: adjusted for bias, red: filtered). While the new algorithm for measuring BPM is very accurate, it's going to be hard to compete with its ability to count beats.
Also after I spent a bit looking through the Espruino code trying to understand some stuff, I have some questions: Where does raw come from with the vc31? The only place I see raw getting set is in heartrate.c, and I thought heartrate_vc31_binary.c is used instead with the vc31, so raw shouldn't be set. And in theory could you modify the manufacturer code to expose their filtered version?
-
- HRV
- Because we switched to the proprietary algorithm, it's going to be harder to calculate this either in the firmware and in userspace. However I think this would be useful to track as it gives information relevant to stress and sleep.
- Gordon: you can get all the absolute heart rate values for each heartbeat so can work out HRV pretty easily with an app. HRV calculations are not built in to the firmware though. What is the model of the heart rate monitor?
- Notes: HRV already has some implementations (an app on github and an app on the store) but they're either broken or don't use the built in HRV monitor.
- Because we switched to the proprietary algorithm, it's going to be harder to calculate this either in the firmware and in userspace. However I think this would be useful to track as it gives information relevant to stress and sleep.
- Blood pressure
- In order to implement it, the manufacturer code needs to be set up and someone needs to test it. It might also mean worse performance, but it would be nice to have.
- Gordon: The Bangle.js 2 sensor can handle Blood Pressure - hopefully I'll be able to expose that eventually possibilities and potentials of bangle.js.
- Gordon (implying they don't want to use manufacturer code): It's just finding a decent algorithm, which I guess just looks at the rising and falling times. possibilities and potentials of bangle.js.
- Gordon (mentioning manufacturer code): I do have that code as well, yes. [...] I also don't have a blood pressure tester here so it's not something I'd have any confidence in testing - I never had much confidence in using PPG for blood pressure, but if it worked for you maybe there's hope :) Bangle.js 2 Cutting Edge - new heart rate algorithm
- Notes: This requires using the mode with faster readings
- In order to implement it, the manufacturer code needs to be set up and someone needs to test it. It might also mean worse performance, but it would be nice to have.
- SpO2
- Same goes as for blood pressure
- Gordon: It's definitely possible and I can provide the binaries to anyone who is interested in looking into it, but it's quite a lot of work. Bangle.js 2 Cutting Edge - new heart rate algorithm
- Gordon: The VC31B is capable, but it's something provided by a binary blob which we don't include in the firmware. What is the model of the heart rate monitor?
- Gordon: The VC31 in KickStarter bangle 2s didn't advertise the capability but the VC31B in the new batch does. [...] It has to be calculated from raw data so the value is going to be a bit of a guesstimate. Measuring Blood Saturation. Would that be possibile?
- Notes: This requires using the mode with faster readings
- Same goes as for blood pressure
Hope this doesn't give off the wrong vibe or anything, just making this post to see what others think and possibly help people looking for a summary.
- HRV
-
-
-
From my understanding an object at rest should be almost 0 m/s2. Why does my Bangle.js 2 report a minimum acceleration of 1 m/s2 then? Here's a reading while it's still:
{ x: -0.02648925781, y: 0.080078125, z: -1.01220703125, mag: 1.01571514756, diff: 0.00561523437 }
I've been spending a while asking GPT and Googling to no avail. Is this accelerometer broken? Is this intended behavior? What's going on?
-
-
Okay so a while ago I could connect my Bangle.js 2 to my laptop (Fedora Workstation) just fine. Today I can't.
It works on an Android device and a Chromebook. Heck, it even showed up 3 times in Settings and allowed me to connect to it in the IDE once. BUT NOW IT'S NOT WORKING.
Other Bluetooth devices work just fine. Advice? -
-
In case anybody else here is interested in sleep inference, check out this (closed) competition: https://www.kaggle.com/competitions/child-mind-institute-detect-sleep-states/data
I learned some new accelerometer-based features and ML architectures, and might see if I can get them to work.