7

作为第 3 方,是否有可行的方法来正确解释来自未发布 GATT 配置文件规范的蓝牙低功耗设备的数据?

BLE 设备是支持体重、BMI、体脂和水合水平的身体秤。我的理解是,身体秤没有采用 GATT 配置文件,例如血压设备或心率监测器 ( https://developer.bluetooth.org/gatt/profiles/Pages/ProfilesHome.aspx )。

使用以下工具:

  • 带有各种 BLE 实用程序(Ti BLE Multitool、LightBlue 和 BLE Utility)的 iPod (iOS 6.1.3)
  • 带有 nRF 主控制面板的 Android (4.3) 平板电脑 (Dell Venue 8 3830),以及自定义 Xamarin 开发的解决方案

我可以扫描、定位、连接和读取秤上可用的 GATT 服务。以上所有工具都为我提供了相同的服务信息。规模上发现了 5 项服务:

  • 通用访问 (0x1800)
  • 通用属性 (0x1801)
  • 设备信息 (0x180A)
  • 电池服务 (0x180F)
  • 具有自定义 128 位 UUID 的未知服务

上述所有工具都能够从已知服务中读取数据,例如检索电池信息或设备名称。我的假设是具有自定义 UUID 的未知服务是提供比例数据的服务。

该服务有 5 个带有自定义 UUID 的未知特征:

  • 特征1是读/写
  • 特征 2 是读取
  • 特征 3 是读/写
  • 特征 4 是通知
  • 特征 5 是读取

使用上面指定的工具从特征 1、2 和 3 中读取,每个都返回它自己的值,但该值永远不会改变。例如,读取特征 1 始终返回 20 个八位字节 0x01-0x05-0x06-0x07-0x08-和 15 个 0x00 八位字节的值。特征 1 的后续读取始终返回该值。特征 2 读取始终返回 20 个八位字节 0x02 和 19 个 0x00 八位字节的值。等等。

读取特征 5 似乎没有返回值,或者在 Android 上更常见的是发出配对请求。没有常见的配对代码(如 0000 或 1234 等)是有效的。

特征 4 似乎是实际传输比例数据的内容。使用上面的工具,我可以启用通知并且应用程序检索 13 个八位字节。例如:

  • FF-16-09-00-03-04-01-00-83-6F-F4-18-0F
  • FF-16-09-00-03-04-01-00-3E-88-F4-18-E3
  • FF-16-09-00-03-04-01-00-C8-89-F4-18-6E

显然,所有这些值都以相同的八位组开始。但主要问题是这些八位字节代表什么以及它们如何转化为体重/bmi/水合作用/体脂值,如果事实上它们确实如此。

该秤采用 Ti CC2541 芯片 ( http://www.ti.com/product/cc2541 ) 构建。

使用 Ti 的 SmartRF 协议数据包嗅探器和 CC2540 USB 评估模块套件,我可以捕获 iPhone 5S (iOS 7.1) 和电子秤之间传输的数据包。这提供了一些额外的见解,但主要只是展示了我使用其他工具已经观察到的内容,尽管它处于较低级别。数据包嗅探器提供的任何附加信息仍然会导致同一个问题:秤发送的这些八位组代表什么以及它们如何转换为重量/bmi/等?我使用了蓝牙核心规范文档,这有助于理解标准功能的八位字节的含义/作用,但这无助于理解实际的比例数据。

我对蓝牙开发非常陌生,这个练习基本上导致了该技术的速成课程。任何帮助表示赞赏。

谢谢。

4

1 回答 1

1

您必须联系制造商并要求澄清定制服务和特性。

特征 5 似乎具有更高的安全设置,因此当您尝试读取它时它会触发配对。很可能包含一些敏感数据。

特征 1、2、3 可能用于配置,而 4 通知有用数据。

由于这些都是定制的,如果没有制造商的信息,根本无法找出它们的含义。

就像您创建了自己的“我们的酸奶用完了”通知配置文件……只能通过查看数据来猜测。

于 2015-04-07T07:46:59.187 回答