Nav*_*vet 8 python bluetooth rssi pybluez
我在这方面很努力,所以任何帮助/指针都将不胜感激。
我一直在尝试使用pyblueZ从RSSI获取精确值
我得到了一些不错的结果,但这是我不想要的(来自blueZ doc):
对于BR / EDR控制器,将Connection_Handle用作Handle命令参数和返回参数。RSSI参数返回测得的接收信号强度指示(RSSI)与到另一个BR / EDR控制器的Connection_Handle的黄金接收功率范围限制之间的差。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地址返回给我。而且我也不想。
以我的知识和我无法让Google找到想要的东西这一事实,我似乎陷入了困境。
所以我的问题是:
无论如何,有没有要研究blueZ提供的蓝牙API?我似乎在任何地方都找不到!并且不要开始与我谈论他们的文档,这几乎是不存在的!
有什么方法可以使HCI_Inquiry_Result_with_RSSI与单个mac地址一起工作?
还有其他获取RSSI值的方法吗?我尝试了hcitool(出现了同样的问题?),l2ping(在4/5成功后,我得到了100%的ping损失,我没有对此进行深入研究)
难道是我的加密狗被操纵了吗?
如果我尝试从BLE设备检测RSSI会有所不同吗?
(我现在暂时要坚持使用蓝牙,但是如果您想到我可以使用的任何其他射频信号,只需提及它,我将牢记在心以便以后使用。)
感谢您到那里阅读我的问题的任何人。
对我的英语感到抱歉,这已经很漫长了。
和平
编辑:使用Bluez,我可以发现BT classic,或者向RSSI询问特定的地址(但是获得的值超出黄金范围)。我也可以发现BLE,但找不到任何可用于RSSI的特定地址(适用于BLE)的信息...
对于 BLE,您可以使用 hcitool 和 btmon,您应该在输出中看到 RSSI 值,例如:
sudo btmon
Run Code Online (Sandbox Code Playgroud)
在另一个外壳中:
sudo hcitool lescan
Run Code Online (Sandbox Code Playgroud)
为了更方便的访问,我设计了 btmon 来仅输出时间戳、地址和 RSSI。还可以对每个收到的事件定义自定义回调:https ://github.com/kbobrowski/btlemon
sudo btmon
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |