You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Swifty Sensors与Wahoo骑行功率服务扩展设置训练台阻力的方法

Wahoo智能训练台阻力设置实现方案

核心原理

Wahoo对标准BLE CyclingPowerService 做了私有扩展,无需使用Fitness Machine Control服务,直接向CyclingPowerService下的自定义特征写入指定格式的数据即可完成阻力设置。

操作步骤

  • 第一步:获取已连接Wahoo设备中UUID为00001818-0000-1000-8000-00805F9B34FB的CyclingPowerService实例,SwiftySensors中对应类型为CyclingPowerService,可直接从已连接设备的服务列表中调取。
  • 第二步:定位该服务下Wahoo自定义阻力控制特征,特征UUID为A026E005-0A7D-4AB3-97FA-F1500F9FEB8B。
  • 第三步:构造写入数据:固定阻力模式下写入1字节无符号整数,取值范围0~100,对应0%到100%的阻力档位,例如设置20%阻力对应数据为Data([0x14])。
  • 第四步:调用SwiftySensors封装的写入接口,向上述特征写入构造好的数据,写入类型选择.withResponse可确认写入结果。

参考实现代码

// 获取已连接Wahoo设备的CyclingPower服务
guard let targetDevice = connectedWahooDevice,
      let cpService = targetDevice.serviceOf(type: CyclingPowerService.self) as? CyclingPowerService,
      let resistanceChar = cpService.characteristic(with: CBUUID(string: "A026E005-0A7D-4AB3-97FA-F1500F9FEB8B")) else {
    print("设备不支持自定义阻力设置")
    return
}

// 设置30%阻力
let resistanceLevel: UInt8 = 30
let writeData = Data([resistanceLevel])

// 执行写入
cpService.write(data: writeData, for: resistanceChar, type: .withResponse) { error in
    if error == nil {
        print("阻力设置成功")
    } else {
        print("设置失败,请检查设备配对状态")
    }
}

补充说明

  • 如需设置模拟坡度,可写入2字节数据:第一字节固定为0x02,第二字节为坡度值乘以10后的整数,例如设置5.0%坡度对应Data([0x02, 0x32])。
  • 写入前需确保设备已完成配对绑定,未配对状态下写入请求会被设备直接拒绝。
  • 阻力值超过100时写入请求会被忽略,请严格控制取值范围。

内容的提问来源于stack exchange,提问作者andrewlewisdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:27:03