【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 ...
随机推荐
- 学写js Calender控件
好几个月没写博客了,一直在赶项目.项目现在终于处于稳定的状态,只是修修改改.作为后台程序员的我真是苦逼啊,从web到手机端接口我都得写,杂七杂八的事情...这两天终于闲下来了,没事儿看了一下关于js日 ...
- SQL基础语法(二)
SQL SELECT 语句 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL ...
- Gson将字符串转换成JsonObject和JsonArray
以下均利用Gson来处理: 1.将bean转换成Json字符串: public static String beanToJSONString(Object bean) { return new Gso ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- jQuery-DataTables相关的网址
DataTables 有没有觉得这张图的数据很熟悉,对,他们都是copy来的. 之前用了一个bootstrap的框架,写那个框架的老师,有点抠门,把很多js都合在了一起,不知道怎么去自定义自己的东西, ...
- div的水平和垂直居中
CSS实现div的水平居中 div的水平居中可以通过margin设置为0 auto实现. .myDiv { width: 200px; height: 100px; margin: 0 auto; } ...
- jquery插件——检测DOM元素是否在浏览器可视范围之内
引言 web应用中有很多地方会用到打点,用来检测用户行为,今天就做了个打点相关的需求,为了统计一个广告给用户的展示次数,每次用户请求完成并且渲染完成之后就算一次成功的展示,其实有时候这个广告还没有在用 ...
- django models进行数据库增删查改
在cmd 上运行 python manage.py shell 引入models的定义 from app.models import myclass ##先打这一行 ------这些是 ...
- 发送ajax请求时页面被刷新
浏览器默认会认为 button 的属性是submit.type='submit',会发生提交表单的默认行为,为button添加type="button"即可.
- 使用vlc播放器做rtsp流媒体服务器
可参考: 使用vlc播放器播放rtsp视频 web网页中使用vlc插件播放相机rtsp流视频 使用vlc进行二次开发做自己的播放器 首先需要安装vlc播放器,下载及安装步骤略 使用vlc播放器做rts ...