A web client for Bluetooth heart monitoring devices, built with the Web Bluetooth API.
Visit the project's live url with a supported browser. Then, connect a Bluetooth device with heart monitoring capabilities. If you don't have such a device, you can emulate one using your smartphone following the guide below.
This project has zero dependencies and is really easy to set up. A static file server like Python's http.server (shown below) can be used to server the assets.
Run the commands to get up and running:
git clone https://github.com/megaconfidence/bt-heart-monitor.git
cd bt-heart-monitor/
python3 -m http.server 3000
Then visit http://localhost:3000/ in a supported browser.
If you don't have a Bluetooth enabled device with heart monitoring capabilities (i.e a smartwatch or fitness tracker with a heart rate sensor), you can set up an emulator using a smartphone. This guide shows you how to do so.
-
Install the nRF Connect app. It is available for Android and iOS
-
Allow the required permissions such as device location and nearby devices
-
From the app menu, go to
Configure GATT server
, click on the dropdown at the top of the app and selectSample configuration
- Using the app menu, head back to
Devices
, and then switch to theAdvertiser
tab - Click on the plus button to create a new advertising packet. Give it a
Display name
(i.e a packet name that's only used in app) - Then click on the
Add Record
dropdown, selectComplete Local Name
. This allows your device to be visible with its default Bluetooth name - Click on
Add Record
again and selectService UUID
. With the input, search and selectHeart Rate
- Back in the config modal, under
Options
, checkConnectable
. You'll noticeScannable
is auto checked as well
- Click on
Ok
- Click on the switch beside the packet name to turn it ON. You may get a one-time popup to configure the advertisement duration.
The defaults are okay, and you can check the
Remember for this packet
box
- Click
Ok
and you are good to go. You can always turn OFF the emulator by turning OFF the packet and disabling the GATT server from step 3