【发布时间】:2019-09-14 03:43:08
【问题描述】:
我在这方面非常努力,所以任何帮助/指点将不胜感激。
我一直在尝试使用 pyblueZ
从 RSSI 获取精确值我得到了一些不错的结果,但下面是我不想要的东西(来自 blueZ doc):
对于 BR/EDR 控制器,Connection_Handle 用作句柄 命令参数和返回参数。 RSSI 参数返回 测量的接收信号强度指示之间的差异 (RSSI)和黄金接收功率范围的限制 Connection_Handle 到另一个 BR/EDR 控制器。 Connection_Handle 应该是 ACL 连接的 Connection_Handle。任何正 RSSI 控制器返回的值表示 RSSI 高于多少 dB 上限,任何负值表示RSSI是多少dB 低于下限。值为零表示 RSSI 在内部 黄金接收功率范围。
换句话说,当接收器稍微靠近发生器时,RSSI 值仍然为 0(可能是 2/3 米范围) 这真的让我很困扰。
我使用的方法是来自BlueZ的命令HCI_Read_RSSI,这里有一个例子:https://github.com/ewenchou/bluetooth-proximity
获取 RSSI 值的另一种方法是通过事件获取它:HCI_Inquiry_Result_with_RSSI,在这里我得到了 RSSI 的真实值,但是,它是发现模式,它有点慢,并返回所有设备' mac 地址。 而且我也不想要。
根据我的知识以及我无法让谷歌找到我想要的事实,我到了一个似乎被卡住的地步。
所以我的问题是:
有没有办法深入研究 blueZ 提供的蓝牙 API?我似乎在任何地方都找不到它!并且不要开始和我谈论他们的文档,它几乎不存在!
有没有办法让 HCI_Inquiry_Result_with_RSSI 使用单个 mac 地址?
还有其他方法可以获取 RSSI 值吗?我尝试了 hcitool(出现同样的问题?),l2ping(我在 4/5 成功后得到 100% ping 丢失,我没有深入研究)
会不会是我的加密狗有点被操纵了?
如果我尝试从 BLE 设备检测 RSSI,会有所不同吗?
(我现在想坚持使用蓝牙,但是如果您想到我可以使用的任何其他射频信号,请提一下,我会牢记在心,以便以后使用。)
感谢任何到达那里并阅读我的问题的人。
对不起我的英语,这已经......漫长的一天。
和平
编辑:使用 Bluez,我可以发现 BT 经典,或要求特定地址的 RSSI(但获得超出黄金范围的值)。 我也可以发现 BLE,但我找不到任何要求 RSSI 获取特定地址(用于 BLE)的东西...
【问题讨论】:
标签: python bluetooth rssi pybluez