logo
0
0
WeChat Login

SyncPulse

实时心率同步监测系统 - 多用户蓝牙心率设备实时监测与可视化

功能特点

  • 多用户同时监测:支持同时连接多个蓝牙心率设备
  • 实时数据同步:通过 WebSocket 在多个客户端间实时同步心率数据
  • 可视化图表
    • 卡片视图:每个用户独立卡片,显示实时心率、历史曲线、统计信息
    • 统一图表:所有用户心率数据在同一时间轴上对比显示
  • 自动颜色生成:为每个用户自动生成独特的颜色标识
  • 实时统计:平均心率、最高心率、最低心率、监测时长
  • 心率排行:实时心率排行榜

技术栈

  • 前端:原生 JavaScript + HTML5 Canvas
  • 蓝牙:Web Bluetooth API
  • 实时通信:WebSocket (Node.js + ws)
  • 样式:Tailwind CSS

安装

环境要求

  • Node.js (v14 或更高版本)
  • 支持蓝牙的浏览器(Chrome、Edge、Opera)
  • HTTPS 或 localhost 环境(Web Bluetooth API 要求)

安装依赖

npm install

使用

Docker 方式(推荐)

使用 Docker 镜像快速部署:

docker run -d -p 8080:8080 --name syncpulse docker.cnb.cool/anyexyz/syncpulse:latest

启动后访问 http://localhost:8080

停止容器:

docker stop syncpulse docker rm syncpulse

查看日志:

docker logs syncpulse

本地启动服务器

node server.js

服务器默认运行在 http://localhost:8080

访问应用

在浏览器中打开 http://localhost:8080

连接设备

  1. 点击右上角"添加设备"按钮
  2. 输入用户名称(可选)
  3. 点击"扫描并连接设备"
  4. 选择蓝牙心率设备进行配对

支持的设备

支持标准蓝牙心率服务(Heart Rate Service)的设备,包括但不限于:

  • 小米手环
  • Polar 心率带
  • Garmin 心率带
  • 其他标准蓝牙心率设备

项目结构

BT-heart/ ├── index.html # 主页面 ├── server.js # WebSocket 服务器 ├── package.json # 项目配置 ├── css/ │ └── styles.css # 样式文件 └── js/ ├── app.js # 主应用逻辑 ├── bluetooth.js # 蓝牙连接处理 ├── ui.js # UI 更新逻辑 └── background.js # 背景动画

注意事项

  1. HTTPS 要求:Web Bluetooth API 只能在 HTTPS 或 localhost 环境下使用
  2. 浏览器兼容性:请使用 Chrome、Edge 或 Opera 浏览器
  3. 蓝牙权限:首次使用需要授予浏览器蓝牙访问权限
  4. 设备配对:部分设备可能需要在系统蓝牙设置中先进行配对

开发

本地开发

# 安装依赖 npm install # 启动服务器 node server.js

端口配置

默认端口为 8080,可通过环境变量修改:

PORT=3000 node server.js

许可证

MIT License

About

No description, topics, or website provided.
Language
JavaScript70.2%
HTML19.3%
CSS10.4%
Dockerfile0.1%