beatmonitor

Naturalistic measurement of multi-person cardiac activity using open source smartwatch technology

https://github.com/beatlab-mcmaster/beatmonitor

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.4%) to scientific vocabulary

Keywords

banglejs2 bluetooth-low-energy browser-monitor cardiac-activity dashboard heart-period heart-rate-monitor heart-rate-variability heartbeat multi-person-tracking node-js open-science photoplethysmography ppg-signal smartwatch-app
Last synced: 4 months ago · JSON representation ·

Repository

Naturalistic measurement of multi-person cardiac activity using open source smartwatch technology

Basic Info
  • Host: GitHub
  • Owner: beatlab-mcmaster
  • License: gpl-3.0
  • Language: TypeScript
  • Default Branch: main
  • Homepage:
  • Size: 39.9 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 2
Topics
banglejs2 bluetooth-low-energy browser-monitor cardiac-activity dashboard heart-period heart-rate-monitor heart-rate-variability heartbeat multi-person-tracking node-js open-science photoplethysmography ppg-signal smartwatch-app
Created over 1 year ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Record cardiac activity with Bangle.js 2 smartwatches

Watches that are ready for a study!

Main publication

Publication forthcoming (see our poster)

Authors

Maya B. Flannery, Lauren Fink

Overview

BEATMonitor is a system for collecting cardiac activity data from multiple individuals simultaneously in naturalistic environments. The system uses open-source and low-cost technology (Bangle.js 2 smartwatches) to ensure it is accessible and shareable. We hope that the system is easy to setup and use, making it practical for diverse research and other applications. Additionally, the system aims to be customizable and easy to modify for other purposes, while also being well-tested to guarantee reliability. We encourage feedback to be used for further development and improvements.

This project contains two applications:

  1. A Bangle.js 2 smartwatch application that records timestamped heart rate and raw PPG sensor data at ~25 Hz.
  2. A node.js (local) web application that connects to multiple Bangle.js 2 watches via Bluetooth. This app allows for remote monitoring, starting/stopping records, time synchronization, and large file transfers.

Setup

This system was developed and tested (so far) on M1/M3 MacBooks (MacOS 14 Sonoma; MacOS 15 Sequoia).

[!NOTE] Testing required:

  • [ ] Other Mac versions
  • [ ] Linux
  • [ ] Windows

1. Setting up the Bangle.js 2 watches

See Watch documentation

2. Setting up the multi-watch monitoring dashboard

See Dashboard documentation

3. Post-processing data

See Post-processing documentation and tutorial

Troubleshooting

Please let us know if you have any questions, problems, or suggestions by creating an issue here.

Studies

Research studies using BEATMonitor have included:

License

BEATMonitor - Multi-person photoplethysmography using open-source smartwatch technology

Copyright (C) 2025 BEAT Lab

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Citation

DOI

This repository contains a CITATION.cff file. If you use this project, please cite it using the information in the file or use the "Cite this repository" button on GitHub for citation info.

Owner

  • Name: beatlab-mcmaster
  • Login: beatlab-mcmaster
  • Kind: organization

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: BEATmonitor
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Maya
    family-names: Flannery
    email: mayabflannery@gmail.com
    affiliation: McMaster University
    orcid: 'https://orcid.org/0000-0002-4763-7565'
  - given-names: Lauren
    family-names: Fink
    email: finkl1@mcmaster.ca
    affiliation: McMaster University
    orcid: 'https://orcid.org/0000-0001-6699-750X'
repository-code: 'https://github.com/beatlab-mcmaster/BEATmonitor'
abstract: >-
  BEATMonitor is a system for collecting cardiac activity
  data from multiple individuals simultaneously in
  naturalistic environments. The system uses open-source and
  low-cost technology (Bangle.js 2 smartwatches) to ensure
  it is accessible and shareable.
keywords:
  - heartbeat
  - dashboard
  - photoplethysmography
  - PPG
  - smartwatch
  - app
  - node-js
  - bluetooth
  - python
license: GPL-3.0
commit: Revision 250427
version: v0.2.250427
date-released: '2025-04-27'
identifiers:
  - type: doi
    value: 10.5281/zenodo.15297806

GitHub Events

Total
  • Release event: 1
  • Push event: 4
  • Public event: 1
  • Create event: 1
Last Year
  • Release event: 1
  • Push event: 4
  • Public event: 1
  • Create event: 1

Dependencies

src/dashboard/package-lock.json npm
  • 615 dependencies
src/dashboard/package.json npm
  • @babel/cli ^7.24.8 development
  • @babel/core ^7.25.2 development
  • @babel/node ^7.25.0 development
  • @babel/preset-env ^7.25.3 development
  • @babel/preset-typescript ^7.24.7 development
  • @types/d3 ^7.4.3 development
  • @types/express ^4.17.21 development
  • @types/node ^22.5.0 development
  • concurrently ^8.2.2 development
  • nodemon ^3.1.4 development
  • typescript ^5.5.4 development
  • @abandonware/noble ^1.9.2-25
  • @canvasjs/charts ^3.10.16
  • csv ^6.3.10
  • d3 ^7.9.0
  • express ^4.19.2
  • fs ^0.0.1-security
  • socket.io ^4.7.5
  • winston ^3.14.2
src/postprocess/environment.yml conda
  • dask 2024.12.1.*
  • datashader 0.16.3.*
  • flatten-dict 0.4.2.*
  • holoviews
  • jupyterlab 4.3.4.*
  • neurokit2 0.2.10.*
  • pandas 2.2.2.*
  • plotly 5.24.1.*
  • pyarrow 18.1.0.*
  • python 3.11.0.*
  • python-kaleido 0.2.1.*
  • pytz 2024.2.*
  • pyyaml 6.0.2.*
  • selenium
  • xarray 2025.1.1.*