Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Raspberry pi RaspberryPi和BLE加密狗能检测iBeacons吗?_Raspberry Pi_Ibeacon - Fatal编程技术网

Raspberry pi RaspberryPi和BLE加密狗能检测iBeacons吗?

Raspberry pi RaspberryPi和BLE加密狗能检测iBeacons吗?,raspberry-pi,ibeacon,Raspberry Pi,Ibeacon,我从Radius Networks公司购买了一个开发工具包,其中包括一个ioGear GBU521 BLE 4.0加密狗和一个Raspberry Pi。我还买了一个他们的RadBeacon iBeacons。他们都像广告上说的那样工作,但我对我所得到的有点惊讶 我假设RaspPi可以检测iBeacons。相反,工具包设置为创建iBeacon。我的用例是检测叉车何时进入特定房间,以便我可以将工作发送给他们。我的想法是把一个iBeacon放在叉车上,然后放一个RaspPi搜索iBeacons。当检测

我从Radius Networks公司购买了一个开发工具包,其中包括一个
ioGear GBU521 BLE 4.0加密狗和一个
Raspberry Pi
。我还买了一个他们的
RadBeacon iBeacons
。他们都像广告上说的那样工作,但我对我所得到的有点惊讶

我假设
RaspPi
可以检测
iBeacons
。相反,工具包设置为创建
iBeacon
。我的用例是检测叉车何时进入特定房间,以便我可以将工作发送给他们。我的想法是把一个iBeacon放在叉车上,然后放一个RaspPi搜索iBeacons。当检测到iBeacon(叉车)时,您可以断定它就在附近。我会将RaspPi连接到
局域网
,并让它通过
REST或类似的
传输信息。我知道我可以放置一个合适的
Android或Apple设备
,并以这种方式完成它,但我不明白为什么这个加密狗不能检测到这些
iBeacon
,并告诉我它们的
UUID是什么?我遗漏了什么?

您是正确的,设计用于检测iBeacon的不是iBeacon,而是作为iBeacon进行传输

这就是说,根据他在评论中的建议,可以用树莓皮来检测伊贝肯。查看我的同事的答案,他已经编写了一个脚本来满足您的需求。

使用此选项可检测iBeacons


它允许Android设备像iOS设备一样使用iBeacons。当一个或多个iBeacon出现或消失时,应用程序可以请求获取通知。应用程序还可以请求以1Hz的频率从一个或多个iBeacons获取测距更新。

是!您可以使用Raspberry Pi扫描iBeacons。我们在下面编写了一个脚本,您也可以通过以下步骤自己完成:

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

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

  • 启动一个
    hcidump
    ,并将原始输出传输到一个脚本,该脚本将过滤iBeacon数据包:

    sudo hcidump --raw 
    
  • 过滤是一个棘手的部分,来自
    hcidump
    的原始输出格式不好,还显示了不是iBeacon传输的数据包。为了解决这个问题,我们制作了一个过滤脚本,它逐行读取输出,并将原始数据包从其他输出(即MAC地址等)中分离出来。我们在Radius网络上做了很多研究,我们用它来识别iBeacon数据包,并从其他设备的数据包中过滤出来

    我们将所有这些都整合到一个
    ibeacon\u scan
    脚本中,该脚本完成了所有操作,包括将原始标识符转换为人类可读的形式。你可以下载它。很快,我们将在中包含此功能,以添加扫描功能

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

    $ ./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
    
     RSSI=`echo $packet | sed 's/^.\{132\}\(.\{2\}\).*$/\1/'`
     RSSI=`echo "ibase=16; $RSSI" | bc`
     RSSI=$[RSSI - 256]
    
    我们还为裸输出提供了一个
    -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时触发操作

    编辑:我们重新修改了此脚本,使其更具响应性和健壮性,并将其合并到最新版本的中。更新可供下载

    EDIT2:正如所指出的,除了POWER之外,您还可以扩展此脚本以捕获每个iBeacon数据包的RSSI。为此,请向脚本中添加以下行:

    $ ./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
    
     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"
    

    sudo hcitool lescan
    将检测BLE广告,包括“iBeacon”格式的广告,但仅显示硬件地址,可能不足以满足您的需要。您可能还需要运行hcidump或修改hcitool的源,以便转储广告包内容,从中可以提取iBeacon样式的UUID、major、minor和transmission power字段。稍微阅读一下文档和/或代码,就会发现如何找到接收到的功率电平,与传输电平一起用于非常粗略的距离估计。这有助于Chris。当我
    sudo hcitool lescan
    时,我可以看到带有RaspPi的雷达信标。它的答案是MAC地址。然后在另一个SSH窗口中,我
    sudohcidump-a
    ,能够看到一些统计数据,包括RSSI。但我看不到UUID,大调和小调
    sudohcidump-a-w输出文件
    我可以选择UUID,主要和次要。我也看到了电源数据的位置,但还没有对其进行解码。请注意,虽然标题和标签中提到了raspberry pi,但这个问题基本上适用于任何使用bluez的Linux系统,并且可以对其进行特权访问。嗨,我希望做同样的事情。从二月份开始,你有反馈吗?是否有好的/小的设备可供使用?关于它的文章?我们正在探索使用英特尔爱迪生的内置蓝牙,但他们说第四季度的BLE。爱迪生似乎很理想,因为它在SoC上集成了蓝牙和Wifi。应该有可能制造出真正的小型设备,在价格上与Pi竞争,并在尺寸和功率上击败它。它也是为工业设备设计的。我想用RaspPi来检测,而不是Android。这正是我所需要的。谢谢。为了对这个关于RSSI与POWER的答案进行编辑,从每个数据包的字符位置132捕获是读取每个iBeacon数据包的RSSI的方法,这似乎是正确的。然而,RSSI最初并不打算包含在本答复中。相反,我们打算用功率捕捉tx校准常数,这是一个不同的字段,并且始终是相同的值(每个iBeacon)。我将编辑此答案,以包括捕获RSSI以及校准功率