前言:前段时间做过一个基于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 |
Ibeacon的Major |
|
0x01 |
Ibeacon的Minor |
|
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 |
Ibeacon的Minor |
这样,Estimote的如何在IOS系统中实现它的SDK就十分明显了。另外,Esitmote推出了室内定位SDK,但是IOS 关于Ibeacon的API中didRangeBeacons这个函数每一秒钟调用一次,而Estimote的室内定位0.2s响应一次,所以不难推断,Estimote在室内定位的时候,采用的是传统的蓝牙来自建,并没有采用IOS提供的API。
另外,有同学开发过程中,遇到什么问题,欢迎留言
892

被折叠的 条评论
为什么被折叠?



