案例

Gymnasticon:将专有健身单车数据转为标准骑行传感器信号

一个 Node.js 桥接程序:从官方应用或服务已停用或不开放的健身单车读取功率和踏频,再以标准的低功耗蓝牙 Cycling Power、Cycling Speed and Cadence 传感器及 ANT+ 自行车功率配置文件重新广播,使 Zwift、TrainerRoad、码表和运动手表能够使用这辆单车。作者的开发笔记记录了在厂商关停家用服务后,如何在 Flywheel Home Bike 的蓝牙 UART 服务上解析出其统计数据包;Peloton 支持通过 USB 串口适配器读取单车的数据线,Schwinn IC4 和 Keiser M 客户端则分别解析标准的 Fitness Machine Service 和 Keiser 公开文档中的广播数据。单车与应用的兼容性均为项目报告。

目标
协议
类别
独立重建案例
关联
独立重建项目
来源复核于

使用条件与局限

  • 审阅时 GitHub 上最新的发布版本为 v1.4.0,于 2021-02-21 发布,附带 Raspberry Pi SD 卡镜像;npm 上最新版本为 2021-03-24 发布的 1.4.1,所审阅的 main 分支提交(2021-04-21)为所有支持的单车加入了自动识别,至今仍是 main 上最新的提交。README 列出已测试的单车包括 Flywheel、Peloton(需额外线缆)、Schwinn IC4/IC8(即 Bowflex C6)以及 Keiser M3i、M3i-TBT 和 M3iX,LifeFitness IC5 则标为大概率可用;另有一个模拟单车用于测试。
  • 需要用户自有的受支持单车,运行时不使用厂商应用、固件或账号。推荐 Raspberry Pi Zero W,已测试的宿主包括 Pi Zero W、3B+ 和 4 上的 Raspbian Buster、macOS 10.14+ 以及 x86-64 上的 Debian Buster。BLE 单车需要支持多角色的蓝牙 4.1+ 适配器,或使用两个适配器;ANT+ 输出需要 ANT+ USB 接收器,Peloton 单车则需要 README 链接中说明的额外串口线缆。
  • SD 卡镜像是项目用 deploy/ 中的 pi-gen 脚本自行构建的 Raspbian Buster 系统,使用默认的 pi/raspberry 账号并关闭 SSH;首次启动时会把根文件系统切换为 overlay 并将 boot 分区设为只读,并从 boot 分区读取 gymnasticon.json。手动安装需通过 npm 使用 Node.js 12.16.1+,Linux 上还需 libudev-dev,并通过 cap_net_raw 权限或 systemd 单元访问蓝牙;依赖 abandonware 维护的 noble 和 bleno 库、gd-ant-plus 及 serialport。
  • CI 会构建软件包,并在 Node.js 12 和 14 上运行 tape 单元测试;测试以示例数据包覆盖 Flywheel、IC4、Keiser 和 Peloton 解析器、模拟单车和工具函数,不涉及真实单车或训练应用。power-scale 和 power-offset 选项可用来校正功率读数不准的单车。
  • 采用 MIT 许可。单车和应用名称归各自权利人所有。本次未安装或运行任何内容,所审来源未确立 AI 或 REA 使用。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · ptx2/gymnasticon · 修订 e142f53
  2. CHANGELOG.md GitHub · ptx2/gymnasticon · 修订 e142f53
  3. package.json GitHub · ptx2/gymnasticon · 修订 e142f53
  4. src/bikes/flywheel.js GitHub · ptx2/gymnasticon · 修订 e142f53
  5. src/bikes/peloton.js GitHub · ptx2/gymnasticon · 修订 e142f53
  6. src/bikes/ic4.js GitHub · ptx2/gymnasticon · 修订 e142f53
  7. src/bikes/keiser.js GitHub · ptx2/gymnasticon · 修订 e142f53
  8. src/test GitHub · ptx2/gymnasticon · 修订 e142f53
  9. .github/workflows/node.js.yml GitHub · ptx2/gymnasticon · 修订 e142f53
  10. deploy/pi-sdcard/build.sh GitHub · ptx2/gymnasticon · 修订 e142f53
  11. deploy/pi-sdcard/config GitHub · ptx2/gymnasticon · 修订 e142f53
  12. LICENSE.txt GitHub · ptx2/gymnasticon · 修订 e142f53
  13. https://github.com/ptx2/gymnasticon/releases/tag/v1.4.0
  14. https://ptx2.net/posts/unbricking-a-bike-with-a-raspberry-pi

同分区更多条目:协议

协议分区全部 39 项资源协议案例(15)