【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 ...
随机推荐
- sql server 中隐藏掉无关数据库
先贴上我实际测试的效果 方法一: Problem I have a SQL Server instance that has hundreds of databases. Navigating th ...
- linux 常见命令
redhat 1.获取apt软件列表 sudo apt-cache search all 2.添加用户并创建目录 sudo useradd -m username -s /sbin/bash 3.vs ...
- jdbc读取数据库,表相关信息(含注释)
读取数据库中的所有的表名 private Set<String> getTableNameByCon(Connection con) { Set<String> set = n ...
- 手机GUI自动化测试工具选择
(Graphical User Interface,简称 GUI,又称图形用户接口) 我们需要针对自身产品的需求,从中选取一款合适的工具来实现自动化.对于移动客户端GUI的自动化而言,需要保证选取的工 ...
- git的详细说明文档
http://www.ihref.com/read-16369.html fork 后如何保持同步 http://www.tuicool.com/articles/6vayqen git clone ...
- javascript 容易忽略的小知识点 new到底做了什么?
问题:平时我们经常写 var ss = new Person():ss就是一个由'Person类'生成的对象了,可是我们的Person方法里却没有写 return: (var ss= Person() ...
- The common Linux Commands
Linux的命令总结 1. man:在线请求系统帮助 例:man mkdir NAME:这个命令的完整全名 mk(make directories) SYNOPSIS:这个命令的基本语法 mkdir ...
- [转] mysql 存储引擎
最常用的存储引擎 innodb MyISAM MyISAM,这种效率高,不支持事务,不支持外键,每个表有单独的存储文件(多个),方便管理. innodb,一般默认的都是innodb,效率也不低,支持事 ...
- 第八章 交互技术,8.1 VR电商购物(作者:宋五)
8.1 VR电商购物 前言 GM LAB在2016年3月成立,是一个旨在探索最新电商购物体验的实验室.在探索VR购物的过程中,有两个需要核心解决的问题:一个是VR购物的产品形态是什么,另一个是VR环境 ...
- 以冒泡排序为例--malloc/free 重定向stdin stdout
esort.c 代码如下,可关注下mallloc/free,freopen重定向的用法,排序为每轮将最小的数放在最前面: #include<stdio.h> #include<mal ...