BLE:HM10 表示没有读取 属性 当特性读取 属性

BLE: HM10 indicate no read property when characteristic has read property

我正在尝试使用 HM10 作为从传感器读取数据的中心。 HM10 已刷入最新固件 V710 以使用自学习功能。

这是我通过 HM10 发送和接收的消息列表

首先我将 HM10 配置为中心并打开一些通知。然后我连接到传感器的 MAC 地址。我用的是AT+FINDSERVICES?命令获取服务列表,然后找到该 uuid 范围内的所有特征。我感兴趣的特性是0021.

但这就是问题开始的时候。如果我尝试读取该特性,我会得到 OK+DATA-ER,数据表中该特性没有读取 属性。与通知相同。

但是从AT+CHAR指令可以看出0021句柄既有读也有通知。我也厌倦了从 001E 句柄读取,我得到了同样的错误。我能够从另一个手柄读取设备名称等数据,因此我能够从传感器获取一些数据。

我想知道 OK+DATA-ER 响应是否还有其他含义?或者如果特征句柄以某种方式不正确。如果是这样,我如何找到正确的句柄?

我已经尝试使用 LightBlue 应用程序连接到 iphone 上的传感器,并且我能够阅读和订阅通知。我还尝试将传感器克隆为 LightBlue 上的虚拟设备,我能够从 HM10 读取和订阅 phone。因此,问题似乎特别出在 HM10 和传感器之间,而不是单独出现在任何一个设备上。

LightBlue UUID

LightBlue read data

我明白了。原来是一个安全问题。传感器将允许连接,但除非连接被加密,否则无法访问数据。

BLE 传感器在第一次连接到 phone 时需要配对,但随后不需要配对,所以当我尝试通过 HM-10 连接到它时我错过了这一事实。

我认为HM-10不支持配对连接。我尝试将 AT+TYPE 设置为 0 以外的值,但它不再连接到传感器。我会得到 OK+CO11A 但它无法完成连接。

我换成了 ESP32 开发板并使用了

BLEDevice::setEncryptionLevel(ESP_BLE_SEC_ENCRYPT);

这让我可以阅读和订阅该特性。