【问题标题】:GATT API bluez - MI band 2GATT API bluez - MI 波段 2
【发布时间】:2019-02-11 09:03:09
【问题描述】:

我已经尝试了几个星期连接到 MI Band 2 手表,并读取心率特征值,但没有运气。

当我们谈论 GATT 时,我有点不确定程序是什么。 对于 API https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/gatt-api.txt,我正在考虑使用 org.bluez.GattCharacteristic1 接口来读取值。

我可以连接和配对手表,并获取所有 UUID(服务、描述符和特征)。心率测量具有以下信息:

Characteristic
    /org/bluez/hci0/dev_CD_1D_69_25_19_5E/service0027/char0028
    00002a37-0000-1000-8000-00805f9b34fb

我尝试使用 bluetoothctl 程序读取值,但得到“不允许”的反馈。

使用 GATT API 读取特征值的过程是什么。

【问题讨论】:

标签: bluetooth-lowenergy bluez gatt


【解决方案1】:

您的设备正在使用采用的心率配置文件,看到 0x2A37 是采用的用于心率测量的特征 UUID。我建议您使用 BlueZ 命令行工具,如下所示:-

1.使用以下方法查找心率特征的句柄:-

gatttool -b 00:11:22:33:44:55 --characteristics

将 00:11:22:33:44:55 替换为您设备的蓝牙地址。您基本上是想找到包含 2a37 的 uuid 并记下其对应的“char 值句柄”。

2。使用以下命令查找该句柄处的描述符:-

gatttool -b 00:11:22:33:44:55 char-desc --handle=0xXX

其中 XX 是您之前记下的 char 值句柄。您应该能够在该句柄处看到几个特征描述符。记下 uuid 2902 的 char 句柄。

3- 通过在该句柄处写入“0100”来启用通知:-

gatttool -b 00:11:22:33:44:55 --sec-level=high --char-write --handle=0xYYYY --value=0100

其中 0xYYYY 是您在步骤 2 中记下的 CCCD 描述符的句柄。一旦发生这种情况,您应该开始获取指示数据,您可以使用找到的温度数据结构 here 对其进行解密。

您可以在以下链接中找到有关使用 BlueZ 命令的更多信息:-

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    也许你可以试试 shell 程序 gatttool 或使用像 nRF Connect 这样的应用程序来阅读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-12
      • 2015-10-18
      • 1970-01-01
      • 2019-08-08
      • 2016-08-25
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      相关资源
      最近更新 更多