蓝牙信标——Eddystone协议规范

2024-02-20 20:52

本文主要是介绍蓝牙信标——Eddystone协议规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Eddystone协议规范中记录了Eddystone帧格式的常见帧PDU类型和个别服务数据字节格式。

蓝牙信标——Eddystone协议概述

1. 公共元素

每个Eddystone帧类型必须包含以下PDU数据类型:

  • 由蓝牙核心规范(Bluetooth Core Specification Supplement, CSS, v5)定义的16bit Service UUIDs。Eddystone服务UUID为0xFEAA,增加此UUID允许在iOS设备上进行后台扫描;
  • 服务数据数据类型,16bit UUID服务数据类型也必须是Eddystone服务UUID 0xFEAA。

Eddystone帧的具体类型编码在与服务 UUID 相关联的服务数据的第一个八位字节的高四位中。允许的取值包括:

帧类型高4bit字节值
UID00000x00
URL00010x10
TLM00100x20
EID00110x30
RESERVED01000x40

低4bit预留未来使用,当前必须为0000.

需要注意,虽然蓝牙核心规范中定义为小端字节序,但是在Eddystone的服务数据中是按照大端字节序。

2. Eddystone-UID

Eddystone-UID 帧广播一个不透明、唯一的 16 字节 Beacon ID,该Beacon ID由一个 10 字节的命名空间和一个 6 字节的实例组成。Beacon ID 可能在将设备映射到外部存储中的记录时很有用。ID 的命名空间部分可以用于分组一组特定的信标,而实例 ID 则标识组内的个别设备。将 ID 划分为命名空间和实例组件还可以用于优化BLE扫描策略,例如仅基于命名空间进行过滤。

字节序描述
0帧类型Value = 0x00
1距离数据在0m处校正后的发射功率
2NID[0]10-byte 命名空间
3NID[1]
4NID[2]
5NID[3]
6NID[4]
7NID[5]
8NID[6]
9NID[7]
10NID[8]
11NID[9]
12BID[0]6-byte 实例
13BID[1]
14BID[2]
15BID[3]
16BID[4]
17BID[5]
18RFUReserved for future use, must be0x00
19RFUReserved for future use, must be0x00

3. Eddystone-URL

Eddystone-URL框架使用压缩编码格式广播URL,以便在有限长度的广播数据包中容纳更多信息。

解码之后,任何具有互联网访问权限的客户端都可以使用该URL。例如,如果一个Eddystone-URL信标广播URL为:https://goo.gl/Aq18zF,那么接收到该数据包的任何客户端都可以选择访问该URL。

Eddystone-URL框架是物理网络的核心,旨在实现对周围环境相关网页内容的无摩擦发现。Eddystone-URL整合了从其演化而来的UriBeacon格式的所有经验教训。

字节序描述
0帧类型Value = 0x10
1发射功率在0m处校正后的发射功率
2URL Scheme编码后前缀
3+Encoded URL为加密后的URL,长度1-17不等

关于URL编码规则:

十进制Hex扩展
00x00http://www.
10x01https://www.
20x02http://
30x03https://

4. Eddystone-TLM

Eddystone-TLM框架广播有关信标本身的遥测信息,例如电池电压、设备温度和广播数据包的计数。这些信息对于监控信标群的健康状况和运行情况非常有用。由于Eddystone-TLM帧不包含信标ID,因此必须与提供ID的识别帧(Eddystone-UID或Eddystone-URL类型)配对使用。

TLM帧可以明文广播,就像UID和URL帧一样,或者在信标配置为Eddystone-EID时,使用在EID配置期间设置的身份密钥进行加密。当以明文广播时,没有消息完整性验证,您应该设计您的应用程序以适应此类广播的开放性质。

  • 未加密TLM规范
字节序说明
0Frame TypeValue = 0x20
1VersionTLM version, value = 0x00
2VBATT[0]电池电压, 1 mV/bit
3VBATT[1]
4TEMP[0]Beacon 温度
5TEMP[1]
6ADV_CNT[0]Advertising PDU 计数
7ADV_CNT[1]
8ADV_CNT[2]
9ADV_CNT[3]
10SEC_CNT[0]上电或重启后的时间,单位s
11SEC_CNT[1]
12SEC_CNT[2]
13SEC_CNT[3]
  • 加密TLM规范
字节序说明
0Frame TypeValue = 0x20
1VersionTLM version, value = 0x01
2ETLM[0]12字节加密TLM数据
3ETLM[1]
4ETLM[2]
5ETLM[3]
6ETLM[4]
7ETLM[5]
8ETLM[6]
9ETLM[7]
10ETLM[8]
11ETLM[9]
12ETLM[10]
13ETLM[11]
14SALT[0]16-bit salt
15SALT[1]
16MIC[0]16bit 消息完整性检查
17MIC[1]

5. Eddystone-EID

Eddystone-EID框架广播一个加密的临时标识符,该标识符定期更改,更改速率在与Web服务的初始注册期间确定。广播的临时ID可以由注册的服务远程解析,但对其他观察者来说,它似乎是随机变化的。该框架类型旨在用于具有安全和隐私增强功能的设备。

5.1 帧格式规范

字节顺序描述
0帧类型 Frame Type=0x30
1距离数据在0m处校正后的Tx功率
2EID[0]8字节的临时标识符
3EDI[1]
4EDI[2]
5EDI[3]
6EDI[4]
7EDI[5]
8EDI[6]
9EDI[7]

该帧的长度是固定的,且在EID字节之后进行截断。

由于Eddystone-EID帧的目的在于提供更好的隐私保护,因此在实现时不建议将EID帧的广播与属于同一设备的任何其他帧交错使用。信标应当在旋转周期外旋转BD_ADDR,以防止跟踪。

参考链接:Eddystone协议规范


这篇关于蓝牙信标——Eddystone协议规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/729502

相关文章

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

JavaEE7 Servlet 3.1(JSR 340)规范中文版

http://www.iteye.com/news/27727-jinnianshilongnian     Jave EE 7中的部分规范已正式获得批准通过,其中包括JSR340 Java Servlet 3.1规范,去年翻译了该规范,在此分享出来,希望对某些朋友有所帮助,不足之处请指正。   点击直接下载    在线版目录   Servlet3.1规范翻译

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有