蓝牙信标——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

相关文章

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协议的相关知识,但是在传输层,还有

DNS协议基础笔记

1.定义 DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 2.域名解析过程 当用户在浏览器中输入一个域名,浏览器首先会检查自己的缓存中是否有该域名对应的 IP 地址。本地 DNS 服务器收到查询请求后,首先会检查自己的缓存中是否有该域名对应的 IP 地址。根域名服务器收到查询请