基于 Web Bluetooth API 的智能骑行设备连接和数据监控平台,支持实时数据采集、显示和分析。
- 🔗 单设备连接: 支持骑行台、功率计、心率设备、电子变速器
- 📊 实时监控: 阻力、功率、心率、踏频数据实时显示
- 🚴♂️ 会话管理: 完整的骑行会话记录和统计
- 📈 数据可视化: 图表展示和历史数据分析
- 📤 数据导出: 支持 FIT 和 JSON 格式导出
- 💾 本地存储: IndexedDB 本地数据库存储
- Node.js 18+
- 支持 Web Bluetooth API 的现代浏览器
- HTTPS 环境(本地开发可使用 localhost)
# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建生产版本
pnpm build| 浏览器 | 版本要求 | 支持状态 |
|---|---|---|
| Chrome | 56+ | ✅ 完全支持 |
| Edge | 79+ | ✅ 完全支持 |
| Opera | 43+ | |
| Firefox | - | ❌ 不支持 |
| Safari | - | ❌ 不支持 |
- 选择设备类型(默认:骑行台)
- 点击「扫描设备」
- 在弹出窗口中选择蓝牙设备
- 等待连接成功
- 连接设备后点击「开始骑行」
- 实时查看数据和统计
- 可随时暂停/继续/结束会话
- 实时数据在主界面显示
- 历史记录通过会话管理查看
- 支持 FIT 格式导出到 Garmin、Strava 等平台
- 前端: Vue 3 + TypeScript + Vite
- UI: Ant Design Vue 4.x
- 状态管理: Pinia
- 数据库: IndexedDB (Dexie.js)
- 图表: Chart.js
- 蓝牙: Web Bluetooth API
- 单设备蓝牙连接和管理
- 实时数据监控和显示
- 骑行会话记录和统计
- 数据可视化图表
- FIT/JSON 格式数据导出
- 本地数据存储和管理
- 响应式用户界面
src/
├── components/ # Vue 组件
├── stores/ # Pinia 状态管理
├── types/ # TypeScript 类型
├── utils/ # 工具函数
├── pages/ # 页面组件
└── router/ # 路由配置
- 推荐使用 VSCode + Volar 插件
- 遵循 TypeScript 严格模式
- 使用 ESLint 和 Prettier 格式化
- 无法连接设备: 确保 HTTPS 环境、设备配对模式、浏览器支持
- 数据异常: 检查设备状态、距离、控制台错误
- 导出失败: 确认数据完整性、浏览器下载设置
开发模式下可在浏览器控制台查看详细日志。
- 简化设备连接流程
- 单选设备类型模式
- 优化用户界面
- 修复类型错误
- 初始版本发布
- 基础功能实现
详细更新日志请查看 CHANGELOG.md
欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建特性分支
- 提交更改
- 发起 Pull Request
MIT License - 详见 LICENSE
感谢以下开源项目:
- Vue.js、Ant Design Vue、Vite
- Dexie.js、Chart.js、Day.js
- Web Bluetooth API
Happy Cycling! 🚴♂️
让科技为骑行赋能,让数据驱动进步!