为了账号安全,请及时绑定邮箱和手机立即绑定

带有BLE加密狗的RaspberryPi是否可以检测iBeacons?

带有BLE加密狗的RaspberryPi是否可以检测iBeacons?

守着星空守着你 2019-11-07 10:35:32
我从中购买了一个开发工具包,Radius Networks其中包括ioGear GBU521 BLE 4.0 dongle和Raspberry Pi。我也买了他们的一个RadBeacon iBeacons。他们俩都像广告一样工作,但是我对自己得到的东西感到惊讶。我以为RaspPi可以检测到iBeacons。而是将套件设置为创建一个iBeacon。我的用例是检测a何时forklift进入特定房间,以便将工作发送给他们。我的想法是在叉车上放置一个iBeacon,然后在RaspPi上搜索iBeacon。当检测到iBeacon(叉车)时,您可以得出结论,它就在附近。我将RaspPi连接到,LAN并使其通过进行信息交流REST or similar。我知道我可以提出一个合适的方法Android or Apple device并以这种方式完成它,但是我不明白为什么该加密狗无法检测到这些iBeacons并告诉我它们UUID's是什么?我想念什么?
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

是! 您可以使用Raspberry Pi扫描iBeacons。我们在下面组合了一个脚本来执行此操作,您也可以按照以下步骤自行进行操作:


启动进行蓝牙LE扫描的后台进程:


sudo hcitool lescan --duplicates &

使用该--duplicates设置,扫描将不会忽略来自同一iBeacon的多个数据包。


启动hcidump并将原始输出通过管道传递到脚本,该脚本将过滤iBeacon数据包:


sudo hcidump --raw 

过滤是一个棘手的部分,原始的输出hcidump格式不正确,并且还会显示不是iBeacon传输的数据包。为了解决这个问题,我们制作了一个过滤器脚本,该脚本逐行读取输出,并从其他输出(例如,MAC地址等)中分离出原始数据包。我们在Radius Networks的iBeacon蓝牙配置文件上做了很多研究,我们用来识别iBeacon数据包并从其他设备的数据包中过滤掉它们。


我们将所有内容整合到一个ibeacon_scan脚本中,该脚本可以完成所有工作,包括将原始标识符转换为人类可读的形式。您可以在这里下载。很快,我们会将其包含在iBeacon开发工具包中以增加扫描功能。


下面是从脚本输出的一个例子:


$ ./ibeacon_scan

UUID: 74278BDA-B644-4520-8F0C-720EAF059935 MAJOR: 0 MINOR: 73 POWER: -50

UUID: 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 MAJOR: 1 MINOR: 6 POWER: -59

UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 MAJOR: 6 MINOR: 9 POWER: -55

我们还-b提供了裸输出选项,该选项易于解析为其他脚本,下面是一个示例:


$ ./ibeacon_scan -b

2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 1 6 -59

E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 6 9 -55

74278BDA-B644-4520-8F0C-720EAF059935 0 73 -50

您可以使用此选项并将脚本的输出通过管道传递到脚本,以在检测到带有某些标识符的iBeacon时触发操作。


编辑:我们对该脚本进行了重新设计,以使其响应速度更快且更可靠,并将其合并到开发工具包的最新版本中。此更新可从此处下载。


编辑2:正如@ sai-ramachandran指出的那样,除了POWER之外,您还可以扩展此脚本以捕获每个iBeacon数据包的RSSI。为此,将以下行添加到脚本中:


 RSSI=`echo $packet | sed 's/^.\{132\}\(.\{2\}\).*$/\1/'`

 RSSI=`echo "ibase=16; $RSSI" | bc`

 RSSI=$[RSSI - 256]

并确保将RSSI添加到输出中:


 echo "UUID: $UUID MAJOR: $MAJOR MINOR: $MINOR POWER: $POWER RSSI: $RSSI"


查看完整回答
反对 回复 2019-11-07
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您是正确的,iBeacon开发套件并非旨在检测iBeacon,而是旨在作为iBeacon进行传输。


也就是说,可以使用@ChrisStratton在他的评论中建议的变体,用Raspberry Pi检测iBeacon 。


查看完整回答
反对 回复 2019-11-07
  • 3 回答
  • 0 关注
  • 495 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信