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

订阅Movesense设备获取RR间隔时触发404 NOT FOUND错误求助

解决Movesense设备订阅RR间隔时404 NOT FOUND错误

核心问题分析

报错显示POST请求suunto://MDS/EventListener返回404,说明当前订阅的URI格式错误、设备未正确连接,或者MDS服务未正确初始化,导致无法找到事件监听端点。结合你使用的mdsflutter 2.1.1和Awario设备,以下是针对性的解决方案:

解决方案

1. 修正订阅URI与参数格式

mdsflutter的MdsAsync.subscribe方法第一个参数应为设备的专属URI,而非全局的suunto://MDS/EventListener。同时需确保订阅合约格式正确,包含必要的字段。调整代码如下:

final String deviceUri = "suunto://$DeviceSerialNumber";
// 生成正确的订阅合约
final String hrContract = '''{
  "Uri": "/Meas/HR",
  "Format": "Json"
}''';

_hrSubscription = MdsAsync.subscribe(deviceUri, hrContract)
    .listen((event) {
  Map<String, dynamic> body = event["Body"];
  final rrData = body['rrData'] as List<dynamic>;
  if (rrData.isNotEmpty) {
    final rrValue = rrData[0];
    print("RR [ms]: $rrValue");
    rrIntervalList.add(rrValue);
  }
});

若你仍使用formatContractToJson函数,需确认其输出的JSON包含"Uri": "/Meas/HR"和"Format": "Json"字段,且无格式错误。

2. 确保设备已成功连接

订阅操作必须在设备连接完成后执行。在订阅前添加连接校验逻辑:

// 先确认设备连接状态
bool isConnected = await MdsAsync.isConnected(deviceUri);
if (isConnected) {
  // 执行订阅逻辑
} else {
  // 先发起连接
  await MdsAsync.connect(deviceUri);
  // 再执行订阅
}

3. 先启用心率测量服务

部分Movesense设备需要先通过PUT请求启用心率测量,才能订阅到数据:

// 设置测量间隔(单位:毫秒,根据需求调整)
await MdsAsync.put(
  "$deviceUri/Meas/HR",
  '''{"Interval": 1000}'''
);
// 等待服务启动后再订阅
await Future.delayed(const Duration(milliseconds: 500));

4. 验证设备固件兼容性

  • 确认Awario设备的固件版本支持/Meas/HR路径返回rrData字段,旧固件可能需要升级。
  • 使用MDS Explorer工具(桌面端)连接设备,手动测试/Meas/HR的订阅,确认设备本身能正常输出RR间隔数据。

5. 升级mdsflutter插件

mdsflutter 2.1.1可能存在兼容性问题,尝试升级到最新版本,确保插件与设备固件、iOS系统版本匹配。

调试建议

  • 查看日志中是否有设备连接成功的提示,确认MDS服务已正常启动。
  • 若使用MDS Explorer测试正常,但代码仍报错,检查Flutter项目的权限配置(如蓝牙权限)是否完整。

内容的提问来源于stack exchange,提问作者Revathi H Y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:31:01