我正在尝试解析通过hci套接字扫描收到的ibeacon数据包
b'\x01\x03\x00\x18\xbe\x99m\xf3\x14\x1e\x02\x01\x1a\x1a\xffL\x00\x02\x15e\xec\xe2\x90\xc7\xdbM\xd0\xb8\x1aV\xa6-b 2\x00\x00\x00\x02\xc5\xcc'
十六进制格式01 03 00 18 be 99 6d f3 14 1e 02 01 1a 1a ff 4c 00 02 15 65 ec e2 90 c7 db 4d d0 b8 1a 56 a6 2d 62 20 32 00 00 00 02 c5 cc
应用解析器后的参数为 'UUID':'65ece290c7db4dd0b81a56a62d622032','MAJOR':'0000','MINOR':'0002','TX':-59,'RSSI':-60 我不确定此解析的RSSI部分是否正确。
参考此https://stackoverflow.com/a/19040616/10355673
信标广告包的最后一位是TX功率值。
那么我们如何获得rssi值?在这里,我将rssi设为cc
,将tx设为c5
。这是正确的吗?
答案 0 :(得分:1)
在下面显示的制造商广告序列之前,有标志头,但是您实际上并不关心标志。这是您关心的字节:
ff # manufacturee adv type
4c 00 # apple Bluetooth company code
02 15 # iBeacon type code
65 ec e2 90 c7 db 4d d0 b8 1a 56 a6 2d 62 20 32 # proximity uuid
00 00 # major
00 02 # minor
c5 # measured power (tx power)
cc # crc
接近UUUD:65ece290-c7db-4dd0-b81a-56a62d622032, 专业:0, 未成年人:2 实测功率:-59 dBm
RSSI不是传输数据包的一部分,而是接收器根据信号强度进行的测量。对于每个接收到的数据包,它通常将是一个略有不同的值。您可以从移动设备或嵌入式系统上的API(通过蓝牙芯片获取该值)中获得该值。