40 comments

[ 5.0 ms ] story [ 103 ms ] thread
Definitely an odd device that it doesn't seem to make accessing the data without hacking into the bluetooth stream data, but this was pretty awesome.

to the author: Did you end up graphing / recording the data or just displaying it while you played?

From a quick skimp over the article, it looks to me like the device employs standard Bluetooth protocol capabilities, so any app capable of pairing to generic Bluetooth heart rate sensors should be capable of doing so. The author simply went the route of yak-shaving instead of searching for a ready-made library. Please note I'm not dissing the yak shaving!

EDIT: typo

I looked into existing windows apps, there was only one extremely janky one that didn't do what I wanted, so of course I had to try and write my own
I think it's a standard BLE/ANT+ training sensor, any existing training program should be able to read it out of the box. Still a fun project, though.

But I agree it's an odd device. If one wants more precision than the optical sensors found in smart watches, using a HR belt would be the logical choice?

I've tried chest straps once or twice and found them pretty uncomfortable, though its possible I would get used to it.

The advantage of these standalone optical sensors is that because they are smaller & lighter, and sit on the fleshier upper arm, they are much more accurate than sensors on a watch, despite being the same tech.

Edit: DC Rainmaker's analysis shows that these are more or less as good as a chest strap (https://www.dcrainmaker.com/2019/03/polar-oh1-plus-optical-h...)

(I'm the author, happy to see this getting re-posted)

I'm trying to figure out how to render a graph inline, but its more complicated

(comment deleted)
I have atrial fibrillation (AF) and a few years ago I built a system to monitor my own heart rate using grafana. I can strongly recommend it. I used influxdb to store the raw data.
Any chance you can share more (post, github, etc)?
Regretfully it's not in any state to share. But basically it was:

- simple Android app capture heart rate data over bluetooth from a polar chest band

- send the data up to a server and pipe it into influxdb database

- display using grafana

It was very useful to show when I was having an episode. I tried all sorts of things to identify the triggers, in the end it turned out to be alcohol (duh!).

Nice investigative work. The best advocate for ones health is... yourself! I hear that a lot and it's definitely true.
This isn't "hacking into the Bluetooth stream data". This is literally how you interface with Bluetooth devices. This way you don't need a driver specific to each device and don't need to write code specific to each device.

The Bluetooth spec defines a large variety of common types of data streams (including things like friendly device names and battery status), as well as open areas where vendors can cram their own, purpose specific stuff.

It's quite easy to use, once you learn the setup. And once you learn the specific API your combo of programming language and operating system use to communicate with BLE, everything about consuming a device is otherwise identical, so you can create libraries that consume specific types of data streams quite easily.

I should do this during the workday. I bet I could pick out when I receive certain emails from a heart rate graph.
I did this when playing pubg a while back. It's a fun side project to get it drawing a spark line and beating a heart image at the rate of the heartbeat.
Can we see your code somewhere?
I don't think I still have it, unfortunately. It was a portion script to connect to the monitor and run an http server, then some html/js/CSS to show the heart in OBS.
Wow, 58 bpm while playing, the guy must be really fit!
Or have a heart condition
(comment deleted)
He gave more of a range at the bottom of the article, 55-70. Still good, though.
I don't play video games for the most part, but the other day I was playing a demolition derby racing game with pedals and wheel and I found my lowest heart rate of the previous 4h (standard Garmin metric) was during the race (almost certainly during a 2min break between races though).

I do see how FPS can be really stressful and get you "amped up" but I find that doesn't tend to lead to a particularly high heart rate.

DOOM hits with 110bpm at peak for me
I always wonder about this, I feel like I get more "into" video games than most in terms of reacting to events. Especially games like Rocket League or FPS which are constant action. If I play too close to bedtime then sleep can be a challenge.

Those of you who look like bored zombies when you play games how do you separate yourself from the game?

Try playing Doom: Eternal. I play with headphones and didn’t realize I was panting until my wife said I was and wondering if I was okay.

A lot of that’s due to the game requiring you to be constantly moving or else you’ll get killed pretty quick. Does a really good job of balancing the game if you continue to die in the same location. I was really impressed by it, to the point that I didn’t mind the entire reason the action is happening as a Mars mining mission actually was mining hell and the demons escaped. No seriously it makes sense.

A lot of games from this era still scares me. The claustrophobic hell that is Descent (Interplay 1995).

In order to complete a level, you need to make your way through a maze with 6DOF fps camera, while enemies jump out from all directions and no way to tell which direction you are taking damage, and finally blowing up a reactor and having to find an exit that is located in an unknown place while the cliche 90s computer female voice begins a countdown and the lights start dimming on and off making it even harder to make your way to the exit.

Fuck that game. Used to have nightmares playing that game as a kid I still won't touch it.

I really enjoyed that game. I found that I was moderately good at keeping a 3D map in my head irrespective of rotations, so it was often a case of having barely good enough recollection to fly out of there within the time limit, and that made it very exciting. I think it was the flight controls that eventually made me stop playing. IIRC the was some momentum when turning and rotating which I had difficulty getting used to, it was frustrating enough that most of my close misses was due to it, and I finally didn't want to fight it anymore.
You kind of answered the question, with the question. You just separate yourself from the game.

If you lose it's not a big deal, if you win it's also not a big deal. If someone annoys you, just go find another server/game.

Basically you do everything to avoid getting emotion.

Another option is to find a less intense genre you may like, such as simulation or something less action packed.

You can't really be highly invested in a action packed heart pounding game, and look like a bored zombie. Even top tier CS streamers/professional gamers while they may not appear super invested it's mostly because they are not highly invested, they are just playing to practice something/or for entertainment for their viewers. If you watch them at a intense match or tournament you'll see them at their peak intensity.

It's like when you read something hilarious and respond with lol in chat, but you don't actually laugh or even smirk, or like reading an exciting book without ducking and weaving - over time you just increasingly get more efficient at separating mind from body for different types of activities/inputs.

It does vary by person/activity though - I can ride a rollercoaster with a unmoving body and blank face and be having the time of my life, but cannot watch cringe-worthy things on TV without physically seizing up. Others are the other way around.

When I play with my competitive siege team I literally don't have time to get stressed because we have to be constantly thinking about what to do in the next 10 seconds tactically, what to do strategically for the rest of the game, and focus on hitting our shots.
I did something like this for a middle school science project. I got some friends and measured our heart rates playing different kinds of games. Found that more fast paced games like Fzero X overall hard larger increases on heart rate than more chill games like The Sims (unsurprisingly?) The scientific methods were questionable though.
From the manual

“special applications (e.g. animals) may require support for higher bpm values. ”

I’m curious what a non-animal heart rate looks like.

I really liked the format of the post, building up to useful working code. Thanks!

> I’m curious what a non-animal heart rate looks like.

Most sources consider animals as separate from humans, so non-animal would mean human. In general poor treatment of animals is considered a lesser offense than one commited against a human, as an illustration of the separation of categories.

Being that we are animals, this trait is not restricted to humans. Animals don't observe much when another type of animal huts a different animal but may come to the defense of its own kind, if related.
Don't know about consoles but the mobile version has different game modes and those modes have differing levels of stress. For example, public deathmatch is a very mechanical live-die-repeat in contrast to Search and Destroy which is known to be particularly high stress throughout.
By the way, the term for this kind of biomedical measurement modality is Photoplethysmography (PPG). The HRS3300 is an example of a PPG sensor used in a few devices, including the PineTime.
Or just buy a used ticwatch pro, disable its products using android development commandline, and you can see a graph of your heartbeat in Google Fit or Health and export it.

What this article would be interesting is if it could overlay specific moments.

Even more interesting is what would happen if you could train yourself to keep calm during situations you normally freak out in and see if it improves your KDR, I bet it would.

The Polar HRM's have always been easily to hack, the older ones just send out a pulse at 5.3KHz which is trivial to pick up and process as an audio signal.

Here's a trace [0] from my clubbing days :)

[0] http://hazeii.net/images/lowlifeheart.gif

Interesting... i dont think i have the courage to measure my heart rate while playing Escape from Tarkov.
I would note using WS_EX_TOPMOST may flag your executable for upload and further analysis depending on what game you are playing...