微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Noble 与 BLE 设备通信

如何解决使用 Noble 与 BLE 设备通信

过去几天我一直在研究和了解 GATT 来控制我的新可调床,我目前只能通过制造商的应用程序控制它,但我想通过我的智能家居设置进行控制。

我能够获得有/无响应的读写特征,所以我知道我在正确的轨道上并且我已经在 OSX 上使用 PacketLogger 来获取我现在知道当我自己使用 IOS 应用程序发送时可以接受的值称为 BLE 扫描仪,它只要求将十六进制或文本值发送到设备(床)的特征,并且我已经发送了我在使用制造商的应用程序 (5212 006E 0100 4EBD) 时从 PacketLogger 中提取的值作为单独的十六进制并且它会振动床!

我现在只需要通过直接发送到peripheral.writeHandle 函数或通过characteristic.write 函数来使用Noble 自己完成此操作。我尝试了很多不同的东西,但是当它以十六进制单独发送值时,我没有得到与 BLE Scanner 应用程序相同的效果,所以我知道设备对我发送的内容不满意。我注意到为我认为的 L2CAP 添加了一些填充,但正如我所说,BLE 扫描仪仅适用于 (5212 006E 0100 4EBD),只要它们以十六进制单独发送即可。

非常感谢帮助我完成任务。

到目前为止,我已经尝试写入特性并尝试直接写入外围设备,因为在通过 BLE Scanner 写入时,PacketLogger 日志中没有提及特性 UUID,而在使用 Manaufacturer 应用程序时,PacketLogger 显示写入特性 UUID所以我认为两者都会起作用。 我尝试了很多

peripheral.writeHandle(18,Buffer.from("5212006E01004EBD","hex"),true,function(err) { console.log('writehandle'+err) });

characteristic.write(Buffer.from("5212006E01004EBD",function (error) {
        if (!error) {
            console.log("write succesful");
        } else {
            console.log("write unsuccesful");
        }
    }.bind(this));

我确实看到 BLE 扫描仪应用程序的 ATT Send PacketLogger 条目存在差异,该条目与我在 Noble 中的尝试不同,但它不起作用 - 写入请求 - 句柄:0x0012 - 值:5212 006E 0100 4EBD 操作码是 0x0012 BLE 扫描仪的工作包记录器条目,而我的尝试显示每次尝试的多个条目,第一个条目始终是 Exchange MTU 请求 - MTU:104,操作码为 0x0002。无论我在 Noble 中发生什么变化,操作码都保持不变。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。