如何用蓝牙网关扫描蓝牙beacon设备

  • 锚点透传功能
  • 透传格式
  • 透传过滤



金桔蓝牙网关默认是常开蓝牙扫描,通过金桔ACserver可以关闭网关的蓝牙扫描功能,金桔蓝牙基站主要对四种设备进行扫描传输:beacon设备(锚点设备),金桔定位设备(定位卡,定位手环,资产定位等),一般蓝牙广播设备和中继。用户对接第三方蓝牙设备属于一般蓝牙广播设备,

注意,尽量对某一类数据进行扫描透传数据,如果开多种数据透传,那么降低基站带的节点数量,以下对金桔ACserver配置基站参数的说明:

锚点透传功能

透传格式

金桔蓝牙基站透传beacon数据,如果基站同时打开广播透传功能(关闭厂商数据时),那么一个beacon数据会在beacon数据的推送类型里出现,也会出现在广播数据里。

手机看到的锚点(该锚点是在*宝上买的):

Android 蓝牙扫描需要定位权限_Android 蓝牙扫描需要定位权限


锚点透传的数据如下:

{ 
    "Gateway": "00000000", 
    "NodeId": "0001DD0E", 
    "SystemId": "10990145", 
    "Type": "beacon_device", 
    "beacon_service": "0215", 
    "beacon_uuid": "B5B182C7EAB14988AA99B5C1517008D9", 
    "data": [ 
        { 
            "rssi": -57, 
            "station": "10000060"
        }
    ], 
    "major": "1", 
    "majorHex": "0001", 
    "minor": "56590", 
    "minorHex": "DD0E", 
    "msg_type": "ble", 
    "rssi_level": "-59", 
    "vendor_id": "004C"
}

字段名称

说明

Gateway

忽略

NodeId

这里是金桔系统认为的nodeId,任何锚点设备,majorHex+minorHex 金桔都认为是nodeId,这样方便在做位置计算时区分锚点设备。

SystemId

Acserver的Id,在config/setting.js里配置

Type

固定为beacon_device

beacon_service

beacon的服务类型,一般是 0215,

beacon_uuid

Beacon 的UUID 值

major

十进制的major值

majorHex

十六进制的major值,用于方便计算

minor

十进制的minor值

minorHex

十六进制的minor值,用于方便计算

msg_type

固定为ble

rssi_level

Beacon的校准rssi值,在beacon中设置

vendor_id

厂商的ID,一般标准苹果的ibeacon是004C

data

这里面是一个数组,代表每个基站收到该广播的信号强度,因为一个beacon广播可能被多个基站收到,这里值可以做三角定位用

透传过滤

因为锚点是公共功能设备,在基站的周边可能存在多个其他不准备透传的设备,所以基站可以通过major值来进行过滤,过滤配置在基站位置中:

Android 蓝牙扫描需要定位权限_Android 蓝牙扫描需要定位权限_02


基站只透传过滤掩码“逻辑与”过滤值的设备,例如:

我们配置过滤掩码为0xFFFF 过滤值为0x3000,那么major除了0x3000以外的锚点设备将都不能透传。

如果我们配置过滤掩码为0xFF00 过滤值为0x3000,那么major除了0x30**以外的锚点设备将都不能透传。