用Python在蓝牙低能耗中写入广告数据包?

2 投票
1 回答
3818 浏览
提问于 2025-04-18 11:31

在Ubuntu上,安装了bluez之后,按照这个链接的说明 https://learn.adafruit.com/pibeacon-ibeacon-with-a-raspberry-pi/adding-ibeacon-data,我们可以通过

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 

来设置蓝牙低能耗/4.0的广告数据。然后使用wireshark或者在python中运行 sudo hcitool lescan,我们可以看到数据被第二个蓝牙低能耗接收器接收。有没有办法在python中 写入 广告数据包,而不是使用hcitool呢?如果有一个库可以用就更好了。

在python中,我可以用一个修改过的版本来打印接收到的数据,参考这个链接 如何从iBeacon / BLE中获取广告负载(用 data[44:13:-1] 代替 data[12:6:-1]),现在我想要 发送 数据。

(背景故事:我想要频繁地广播一条消息(一个对多个的多播),我听说btle广告可以每20毫秒发送一次,给几个机器人,而不需要每个机器人都配对。我不在乎安全性,我不需要连接到机器人,只需要从一个中心站发送数据,让几个机器人接收就可以。如果有人有提示,我也想学习如何在iOS/Android上写广告数据包。)

规格:python2.7 / 3.2,两个从eBay上买的CSR 4.0 USB接收器,ubuntu 14.04。

1 个回答

1

不行 :(

Python 现在还没跟上 Linux 在处理蓝牙低能耗(BLE)地址方面的进展。如果你想用 Python,你要么得把它和用 C 语言写的代码结合起来,要么就直接调用 bluez 的命令行工具。

不过,你对用 BLE 进行“多播”消息的概念理解得不错。你可以把消息作为广告包的一部分发送出去,任何其他设备都可以被动地接收这些包,并根据需要使用它们。

撰写回答