如何使用iBeacon广播位置数据?

时间:2014-12-12 12:39:33

标签: android raspberry-pi bluetooth-lowenergy ibeacon raspbian

我能够使用Raspberry pi B +构建iBeacon,我想播放一些位置数据,但我不知道如何在我的Beacon中输入所述数据。 任何想法都是受欢迎的。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在广播iBeacon传输时,您基本上有三个可用的字段可供使用:

  • ProimityUUID(16字节)
  • 主要(2字节)
  • minor(2 bytes)

但是因为您必须在iOS上预先了解ProximityUUID,如果您在iOS设备上检测到信标,则无法任意更改该字段,因此您实际上只能使用主要和次要(总计) 4个字节。)在Android,Linux和OSX上,无论ProximityUUID如何,您都可以看到所有iBeacon传输,因此您总共可以使用20个字节。

四个字节对位置信息的编码不是很大,但您可以将纬度置于两个字节的主要位置,将经度置于两个字节的次要位置。例如,如果您要将经度(0-360度)存储在0-65535的双字节值中,则每个单位增量将为360/65536 = 0.0054931640625度(赤道约为611米)。这种编码会允许您通过+/306米的iBeacon传输Raspberry Pi的位置。

另一种选择,正如@ Paulw11建议的那样,只是将UUID,主要和次要传输到移动设备,然后使用这个由三部分组成的标识符作为密钥,通过Web服务在在线数据库中查找实际位置信息。为此,您的Raspberry Pi必须具有互联网连接,您必须构建Web服务。

如果您想知道如何在没有GPS的Raspberry Pi上获取位置信息,如果您有WiFi加密狗和互联网连接,那么Google Geolocation API效果很好。您扫描可见的接入点,然后将其发送到Google服务,并以纬度和经度进行响应。它可以免费用于低容量的开发。

答案 1 :(得分:0)

iBeacon不会广播一个位置。它只是广播一个ID和两个16位数字,称为主要和次要数字。

当应用程序检测到信标时,它可以使用这些信息以及某个数据库(内部或服务器)来识别“位置”。 - 这可能是商店,部门分支等。