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前沿初探技术备忘的更多相关文章

  1. 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二

    AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound  ...

  2. 游戏音频技术备忘 (三) 集成Wwise到Unreal Engine

    当前受众较广的商业游戏引擎有 Unreal Engine.Unity.cocos2d-x等,在音频领域的第三方中间件则有Wwise.FMOD.Criware等,言多且烦,我们首先集成Wwise到 Un ...

  3. 游戏音频技术备忘 (四) Wwise Unreal Engine 集成代码浅析 (一)

    在Engine\Plugins\Wwise\Source下为主要Wwise相关代码,AkAudio文件夹下为运行时相关代码,AudiokineticTools下为编辑器工具相关代码,Audiokine ...

  4. Nmap备忘单:从探索到漏洞利用(Part 4)

    这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...

  5. Nmap备忘单:从探索到漏洞利用(Part 2)

    这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...

  6. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  7. JVM内存知识备忘

    又是一篇备忘... 主要记录一些知识,进行一些资源的汇总. 先来群里liufor大大提供的两张图,清晰易懂: Dockerized Java https://www.youtube.com/watch ...

  8. 备忘:移植ucos-III到stm32f103c8t6

    由于本人对linux系统内核这块比较感兴趣,下一份工作想做linux驱动相关的:于是最近一旦有空都在研究linux内核源码,面对linux内核这个庞然大物,越看越觉得不能太过急躁,且由于还要工作,只能 ...

  9. CPP-STL:STL备忘

    STL备忘(转) 1. string.empty() 不是用来清空字符串,而是判断string是否为空,清空使用string.clear(); 2. string.find等查找的结果要和string ...

随机推荐

  1. svn自动update到指定目录

    对于开发和测试环境来说,可以使用svn自动update 到指定目录,这样就省去每次提交代码都要去服务器上手动update.对于团队来说,省时省力. 看下怎么做吧,在服务器svnserver安装 目录下 ...

  2. QQ传输协议分析

    2015-06-16 16:27:07 一. 实验目的: 在虚拟机下NAT模式下通过Wireshark抓包,分析QQ的传输模式.了解QQ在传输信息过程中用到的协议.分析在Nat模式下,信息传输的穿透性 ...

  3. MongoDBDao 工具类(包含分页取数据)

    mongdb工具类 package e16wifi.statistic.com.mongodb; import java.util.ArrayList; import java.util.List; ...

  4. U8采购订单联查采购入库单

    1.表头rdrecord01,字段ipurorderid(采购订单ID), cOrderCode(采购订单号)要与采购订单表头主键和单号对应 表体rdrecords01,字段cPOID(采购订单号), ...

  5. 一次kibana服务失败的排查过程

    公司在kubernetes集群上稳定运行数月的kibana服务于昨天下午突然无法正常提供服务,访问kibana地址后提示如下信息: 排查过程: 看到提示后,第一反应肯定是检查elasticsearch ...

  6. 命令行工具aspnet_regiis.exe实现加密和解密web.config

    命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...

  7. mac搭建测试服务器

    代码可以参考: https://github.com/BigShow1949/MyServe  这里也有jar包 一.下载一个jar包 点击链接下载服务器端[moco服务端] https://repo ...

  8. eclipse报错“Undefined variable from import: ...”解决方案

    环境 eclipse + pydev2.8.2 + python 3.5.1/python 2.7.11 + wxpython3.0 出现原因:原先默认解释器设置为python2,重装了pydev之后 ...

  9. PHP获取接口数据(模拟Get)

    当我们在做PHP开发的时候,很多时候需要对接口进行测试,或者更方便的调用一些已有模块的接口,取到结果并进行后续操作,我们可以通过curl进行模拟提交post和get请求,来去实现这些功能. 之后就可以 ...

  10. 无法执行 FunctionImport“entitys.xx”,因为未将它映射到存储函数。EF

    EF突然报了一个这样的错误: 无法执行 FunctionImport"entitys.xx",因为未将它映射到存储函数.EF 其中xx是存储过程: 可能是因为我在.edmx文件中& ...