有没有什么办法可以通过蓝牙在linux上devise得到近信号强度? 或者任何好的库的nodejs,PHP或单声道(我知道一些C + +或Python,但宁愿说远离他们),如果一个工具不存在,但会很容易写
谢谢
在Linux上,执行此操作的方法是使用hcitool命令。 但是,必须连接才能获取设备的rssi。 如果你想从命令行实现这一点,请尝试:
#hcitool rssi AA:BB:CC:DD:EE:FF
如果你想看到实际的C代码来实现这个功能,请查看cmd_rssi函数下的bluez tools / hcitool.c文件。
static void cmd_rssi(int dev_id, int argc, char **argv) { ... }
对于蓝牙低功耗 ,我只知道一种方法来做到这一点,那就是使用#btmon命令。 在后台运行btmon,然后扫描Bluetooth Low Energy设备:
#./btmon & # hcitool lescan
显示器上显示的结果应该类似于:
> HCI Event: LE Meta Event (0x3e) plen 12 LE Advertising Report (0x02) Num reports: 1 Event type: Scan response - SCAN_RSP (0x04) Address type: Public (0x00) Address: AA:BB:CC:DD:EE:FF (<Vendor Name>) Data length: 0 ***RSSI: -34 dBm (0xde)*** AA:BB:CC:DD:EE:FF <Device Name>
请注意,使用btmon时,您不必连接即可获取BLE设备的rssi。
我希望这有帮助。
您可以使用以下组合:sudo hcitool lescan –duplicates&; sudo hcidump –raw
这将为您提供所有蓝牙数据包的原始转储,其中包含您必须感兴趣的所有相关信息,例如:UUID,Major,Minor,RSSI,TxPower。 您将不得不运行某种脚本来解析和过滤LE数据包,并将它们变成可读形式。
其中一个用Bash和S编辑器编写的脚本由jjnebaker 在这里提供, 这里讨论的问题和解决方案
其他选项是在这里使用示例代码使用PyBluez但是你也可以根据你的需要找到由Switchdoc实验室提供的解决方案。 这里
我还发现了一个程序,我可以编辑做我想要的,我通过它在我的github帐户https://github.com/tholum/bluez/blob/master/blue.py
对不起,其他答案…
这适用于c语言,但在转换具有关于de rssi信号的信息的字节时会出错。 https://github.com/glock45/intel-edison-playground/blob/master/scan.c
printf(“%s – RSSI%d \ n”,addr,( char )info-> data [info-> length]);
应该是:printf(“%s – RSSI%d \ n”,addr,( int8_t )info-> data [info-> length]);
我发现这些内部的蓝色版本/监视器/ *。c,其中btmon程序是。 你可以看到数据类型和结构,hcidump.c非常有用,packets.c和main.c也是如此,但是有很多关于hci socket的知识
尝试:
$ bluez-test-discovery
输出:
[ 18:7A:93:05:E4:B1 ] Name = AMIYJ_E4B1 Paired = 0 LegacyPairing = 0 Alias = AMIYJ_E4B1 Broadcaster = 0 UUIDs = dbus.Array([dbus.String(u'0000fff0-0000-1000-8000-00805f9b34fb')], signature=dbus.Signature('s'), variant_level=1) Address = 18:7A:93:05:E4:B1 RSSI = -65 Class = 0x000000
给你: RSSI = -65