Estimote的蓝牙数据包

前言:前段时间做过一个基于Ibeacon的IOE(Internet of everything)的项目。公司的项目内容我不好去写一些东西,不过Estimote作为Ibeacon使用和改进相对领先的公司,我就分析下他们是如何实现的的个人理解。

言归正传,这里谈谈我对Estimote如何实现他们的自定义Ibeacon的理解。硬件部分我不是很了解,这篇文章不会涉及。

Estimote的数据包分为两个部分

1.符合apple规范的标准Ibeacon数据包

2.scan response数据包


首先分析第一部分

Ibeacon传统的数据包,这里的都是十六进制的

4C00 02 15 B9407F30F5F8466EAFF925556B57FB6D AFBC 0001 B6

解析下各个部分

04C00

苹果公司的公司id(由蓝牙管理结构分配的)

0x02

数据类型

0x16

剩余的数据包长度(21

0xB9407F30F5F8466EAFF925556B57FB6D

Estimote固定的Ibeacon UUID

0xAFBC

IbeaconMajor

0x01

IbeaconMinor

0x B6

TxPower值,就是在一米处收到的蓝牙信号RSSI


对于UUID,Major,Minor

UUID

区分公司

Major

区分同一公司相关的一组ibeacon

Minor

进一步区分ibeacon


 举个例子:

UUID(随便写的) B9407F30F5D8466EEFA923536B37F366 代表星巴克
Major 10 代表在上海市的星巴克
Minor 25 代表美罗城的星巴克

然后,我们再来看下Estimote发的蓝牙数据包的第二部分,这部分是通过IOS 的蓝牙接口来获取到的service data;

0A18 4EED318944E7 B6 4EED 3189

0A18

Service UUID

4EED318944E7

反向的Mac地址

B6

TxPower

4EED

IBeacon Major

3189

IbeaconMinor

这样,Estimote的如何在IOS系统中实现它的SDK就十分明显了。另外,Esitmote推出了室内定位SDK,但是IOS 关于Ibeacon的API中didRangeBeacons这个函数每一秒钟调用一次,而Estimote的室内定位0.2s响应一次,所以不难推断,Estimote在室内定位的时候,采用的是传统的蓝牙来自建,并没有采用IOS提供的API。

另外,有同学开发过程中,遇到什么问题,欢迎留言

你可能感兴趣的:(ios,BlueTooth,ibeacon,Estimote)