【iBeacon】iBeacon前沿初探技术备忘
iBeacon是工作在蓝牙4.0(BLE)硬件下的一种协议,属于蓝牙4.0广播协议的一种,通过该协议和一个蓝牙模块可以实现非接触的身份识别、位置检测等。
How does BLE communication work?(BLE设备如何通信)
BLE的通信包括两个主要部分:advertising(广告)和connecting(连接)。
广告(Advertising)是一种单向的发送机制。想要被搜索到的设备可以以20毫秒到10秒钟的时间间隔发送一段数据包。使用的时间间隔越短,电池消耗的越快,但设备被发现的速度也就会快。数据包长度最多47个字节,由以下部分组成:
1 byte preamble(1字节做报头) 前导(1字节):不知道的可以理解为”同步头”,主要是用来配置接收机的自动增益控制。
4 byte access address(4字节做地址) *对于广告通信信道,地址部分永远都是 0x8E89BED6
。对于其它数据信道,地址部分由不同的连接决定。
39 bytes advertising channel PDU(39个字节用于PDU数据包)
3 bytes CRC(3个字节用于CRC数据校验)
*使用Packet Sniffer抓数据,能方便清晰地了解数据帧情况 参考http://www.07net01.com/2015/08/920524.html
这里Data才是ibeacon 协议的数据体(共30字节,按照如上定义数据帧则为所谓ibeacon 协议)
Proximity UUID :这是将你所有的beacon与其他人的beacon设备区别开的id!通常一个设备供应商必须使用一个统一的UUID。即同一公司的ibeacon节点必须设置为相同UUID
major 编号:用于将相关的beacon标识为一组。例如,一个商店中的所有beacon将会分配到相同的major编号。通过这种方式,应用程序就能够知道顾客位于哪一家商店。
minor 标号:用于标识特定的beacon设备。例如一个商店中的每一个beacon设备都拥有唯一的minor编号,这样你才能够知道顾客位于商店中的哪个位置。
TX power:测定的无遮挡一米处信号强度rssi值(固定值,需要设备供应商测定并写死在设备中),可用于计算距离。
/**
* 估算用户设备到ibeacon的距离
*
* @param txPower
* @param rssi 通过BluetoothAdapter取得
* @return
*/
protected static double calculateAccuracy(int txPower, double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
} double ratio = rssi * 1.0 / txPower;
if (ratio < 1.0) {
return Math.pow(ratio, 10);
} else {
double accuracy = (0.89976) * Math.pow(ratio, 7.7095) + 0.111;
return accuracy;
}
}
进阶
0.由于基于广播包,所以很容易出现iBeacon伪造或者利用重放广播包进行攻击
应对方案:Ø 防蹭用加密
常规iBeacon的节点ID号不会变化,从而产生两大问题:1、客户部署网络后第三方可采集到iBeacon部署的位置,从而免费使用客户所部署的网络,导致客户的利益受到损害;2、在地理位置签到等服务中,常规iBeacon的节点易被人采集到ID号进行仿冒,从而基于仿冒的节点进行虚假服务。
寻息提供广播密钥防蹭用加密及基于时间的防蹭用加密节点两套ID动态加密模式,使得节点ID(Major、Minor)动态变化,对于客户部署的网络,其他人均无法蹭用。其中基于时间的防蹭用加密为目前唯一不可破解、不影响iBeacon协议(不占用iBeacon协议中任何字段)且并发容量不受限的加密方案。
1.一个节点硬件模拟多个iBeacon
Ø 多ID播发
常规iBeacon的节点只播发唯一ID,然而现在不同公司的位置服务应用只支持其自己定义的ID号段,这就导致一个iBeacon不能支持多个应用。例如用户如果想同时应用“微信摇一摇.周边”及“360摇一摇”两个应用服务,就需要购买两个iBeacon,导致成本浪费,并增加了电磁干扰。
支持多ID信号播发,这样同一iBeacon节点可同时支持“微信摇一摇.周边”、“支付宝周边发现”及“室内定位导航”等多种应用。在技术方面,受协议手机系统的蓝牙读取机制影响,常规iBeacon直接播发多个ID的信号,将导致手机难以稳定的同时扫描到播发的各个ID信号,为此寻息iBeacon在技术上进行了特有的处理,保证iBeacon同时播发的多个ID信号均可同时被手机接收到。
3.使用安卓手机自带的蓝牙4.0模拟iBeacon信号发射?
需要安卓系统5.0以上,支持peripheral mode。国外有做得比较好的实现 http://www.datzing.com/
参考http://blog.csdn.net/lansefeiyang08/article/details/46505921
4.有哪些创新的应用范围?
导览讲解
客户来公司参观,我给他一台设备(iphone或者iPad,所以最好是能有这样一个系统,可以安装在iOS设备上),他每到一个地方(在每个地方安装相应设备,好像iBeacon可以满足),设备会自动跳出相应的视频介绍
济南济西二手车市场
为室内外8万平米的停车场内所有车辆实现精准定位,支持车辆位置监控,车辆区域化管控,非法出场预警,客户智能找车等功能。该案例成为二手车市场及工业叉车监控领域的开创性案例,标志着室内定位全面进军工业4.0的巨大市场。
贵州医科大学附属医院
通过室内定位网络系统的部署,对医院手术室一层楼进行定位试点,总面积6000多平,对其中30多个手术室内的设备实现定位监控,在后台系统可查看主要设备的详细位置、使用数据、利用率,解决医疗设备经常不知踪迹,造成寻找麻烦、重复采购、资产浪费的现状,实现医院资产智能化管理,助推智慧医院建设。该试点为同类型定位技术在医院的首个应用案例,效果得到院方高度好评,标志着医院全院范围内的重要资产及人员位置精确监控进入应用阶段。
【iBeacon】iBeacon前沿初探技术备忘的更多相关文章
- 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二
AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound ...
- 游戏音频技术备忘 (三) 集成Wwise到Unreal Engine
当前受众较广的商业游戏引擎有 Unreal Engine.Unity.cocos2d-x等,在音频领域的第三方中间件则有Wwise.FMOD.Criware等,言多且烦,我们首先集成Wwise到 Un ...
- 游戏音频技术备忘 (四) Wwise Unreal Engine 集成代码浅析 (一)
在Engine\Plugins\Wwise\Source下为主要Wwise相关代码,AkAudio文件夹下为运行时相关代码,AudiokineticTools下为编辑器工具相关代码,Audiokine ...
- Nmap备忘单:从探索到漏洞利用(Part 4)
这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...
- Nmap备忘单:从探索到漏洞利用(Part 2)
这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- JVM内存知识备忘
又是一篇备忘... 主要记录一些知识,进行一些资源的汇总. 先来群里liufor大大提供的两张图,清晰易懂: Dockerized Java https://www.youtube.com/watch ...
- 备忘:移植ucos-III到stm32f103c8t6
由于本人对linux系统内核这块比较感兴趣,下一份工作想做linux驱动相关的:于是最近一旦有空都在研究linux内核源码,面对linux内核这个庞然大物,越看越觉得不能太过急躁,且由于还要工作,只能 ...
- CPP-STL:STL备忘
STL备忘(转) 1. string.empty() 不是用来清空字符串,而是判断string是否为空,清空使用string.clear(); 2. string.find等查找的结果要和string ...
随机推荐
- c++设计模式之单例模式下的实例自动销毁(垃圾自动回收器)
关于C++单例模式下m_pinstance指向空间销毁问题,m_pInstance的手动销毁经常是一个头痛的问题,内存和资源泄露也是屡见不鲜,能否有一个方法,让实例自动释放. 解决方法就是定义一个内部 ...
- RandHelper
/// <summary> /// 类说明:RandHelper类,用来实现取随机 /// 编码日期:2015-12-29 /// 编 码 人:里程碑 /// 修改日期:2015-12-2 ...
- U8采购订单联查采购入库单
1.表头rdrecord01,字段ipurorderid(采购订单ID), cOrderCode(采购订单号)要与采购订单表头主键和单号对应 表体rdrecords01,字段cPOID(采购订单号), ...
- NBUT 1457 莫队算法 离散化
Sona Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: Submit Status Practice NBUT 145 ...
- 高通vuforia+Unity3D 制作ar app
很简单就可以用Unity3D做出增强现实的一个小例子 新人第一次写博客,若出现错误望指正^_^ 需要下载de东西: unity3d 5.0 http://unity3d.com/get-unity ...
- phylogeny analysis
Multiple Alignment: MUSCLE ProbCons T-Coffee ClustalW Alignment curation: Gblocks Remove positions w ...
- border:none 和border:0区别差异
border:none与border:0的区别体现为两点:一是理论上的性能差异,二是浏览器兼容性的差异. 性能差异: [border:0;]把border设为“0”像素效果等于border-width ...
- (function($){...}) (jQuery)
这里实际上是匿名函数 function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:(funct ...
- SharePoint Online 申请试用链接地址
SharePoint Online 申请试用链接地址: https://products.office.com/en-us/business/compare-office-365-for-busine ...
- python发送邮件
python发送邮件(无附件) ======================================================= #!/usr/bin/env python#coding ...