蓝牙Mesh LPN节点

2023-11-12

选择LPN模式的原因:能有效的降低产品功耗。

比如:一个温湿度传感器产品,需要超过设定阈值才会从上送数据,这样就没有长时间唤醒时间,就无法接收到网关下发的设置数据,这时候就需要LPN模式。LPN的节点正常还是超过阈值才会上报数据,然后会过一段时间唤醒去访问他对应的Friend节点,去询问是否有对应的设置数据。这样就保证低功耗的同时又可以保证功能的完整性。

由此引出了两个概念:LPN节点与Friend节点。

111de785b6984ca58a26fc73dc32f4a7.png

如图所示:

其中Friend节点P与低功耗节点 I、J和K为“友谊”关系,寻址到节点I、J或 K的消息将被好友节点P存储并转发,好友节点的转发仅在低功耗节点轮询好友节点以获得等待传送的消息时才会发生。所以Friend节点一般都是为长供电设备,用于一直接收数据。

问题点:如果在蓝牙 Mesh 网络中,Friend 节点和发送者是同一个节点是否可以会有什么影响?

解答:如果 Friend 节点和发送者是同一个节点,该节点需要同时处理发送和中继的任务,可能会增加其能耗和负担。这可能会导致 Friend 节点在中继数据给 LPN 节点时的性能受到一定程度的影响,例如延迟可能会增加。因此,如果可能的话,将 Friend 节点和发送者设置为不同的节点可能更有利于性能和可靠性。

LPN节点与Friend节点连接

57bbbedd77f742328b2ed10d4e017449.png

597324a7447f404d94c57aa623d49cd9.png

Friend建立的基本数据:

  1. Friend Request:“好友请求”消息通过低功率节点发送到全好友组,以开始查找好友
  2. Receive Delay:接收延迟是指低功耗节点发送请求和侦听响应之间的时间。此延迟允许朋友节点的时间来准备响应。
  3. Receive Window:接收窗口是低功耗节点侦听响应的时间。当低功耗节点收到来自其“朋友”节点的消息时,它可以停止侦听其他消息。
  4. Friend Offer:由朋友节点发送,允许建立友谊。
  5. Friend Poll:消息由低功耗节点发送,请求好友节点发送已为低功耗节点存储的消息。
  6. Friend Update:消息由好友机节点发送到低功耗节点,以通知低功耗节点网络的安全参数(给定NetKey的IV索引、IV更新标志和key刷新标志的值被称为安全参数)已更改或正在更改,或好友队列(这是为低功率节点订阅的组和虚拟地址的集合。此列表允许“好友”节点存储低功耗节点所订阅的消息。)为空。

基本数据参数结构:

  1. Friend Request消息参数:消息的op为0x03,TTL字段设置为0,目的地址为0xFFFF或OxFFFD。

字段

大小

注释

Criteria

1byte

friend节点为了参与友谊谈判而应该支持的标准

Receive Delay

1byte

LPN节点接收请求响应的延迟

Poll Timeout

3byte

由低功耗节点设置的超时定时器的初始值

Previous Address

2byte

前一个朋友的主要元素的单播地址

Num Elements

1byte

LPN节点中的元素数

LPN Counter

2byte

低功耗节点已发送的好友请求消息数

消息中Criteria的含义:

字段

大小

注释

RFU

1bit

保留

RSSI Factor

2bit

friend节点进行延迟计算中使用的RSSI

Receive Window Factor

2bit

friend节点进行延迟计算中使用的Receive Window

Min Queue Size Log

3bit

friend节点可以存储在其好友队列中的最小消息数

Delay = Receive Window Factor * Receive Window – RSSI Factor * RSSI

2. Friend Offer消息参数:消息的op为0x04, TTL字段设置为0,目的地址为接收到的请求节点的源地址。

字段

大小

注释

Receive Window

1byte

Friend节点支持的接收窗口大小

Queue Size

1byte

Friend节点支持的队列大小

Subscription List Size

3byte

LPN节点的朋友节点可以支持的订阅列表的大小

RSSI

2byte

Friend节点的RSSI

Friend Counter

1byte

friend节点已发送的offer消息数

蓝牙Mesh规范版本为1.0和1.0.1的Friend Queue的最大大小通常被限制在16个数据报文左右。MinQueueSizeLog是指整个好友队列(Friend Queue)的大小,而不是消息的数量。QueueSize指的是整个好友队列(Friend Queue)的大小,而不是消息的数量。

3. Friend Poll消息参数:消息的op为0x01, TTL字段设置为0, 目的地址为friend的地址。

字段

大小

注释

Padding

7bit

0b0000000.禁止使用所有其他值。

FSN

1bit

Friend序列号

4. Friend Update消息参数:消息的op为0x02, TTL字段设置为0,目的地址为LPN节点的源地址。

字段

大小

注释

Flags

1byte

包含IV更新标志和密钥刷新标志

IV Index

4byte

Friend节点已知的当前IV索引值

MD

1byte

指示该好友队列是否为空。0表示为空,1表示不为空

LPN节点更换Friend节点:

6937c0b98cd94ea4873d7c5f0835b1ad.png

PollTimeout:设定了LPN发送给其好友节点的两个连续请求之间可能经过的最长时间。如果在PollTimeout计时器到时之前,好友节点未能收到LPN的请求,则友谊关系将被终止。

在建立友谊后,如果“好友请求”消息的“前地址”字段包含一个有效的单播地址,而该地址不是朋友节点自己的单播地址,则“朋友”节点应按照以下程序开始向该单播地址发送好友清除信息:

  1. TTL应设置为最大有效值。
  2. 友谊建立后,立即发送第一个friend清除提示信息,时间设置为1秒,friend清除计时器。
  3. 如果为响应friend clear消息而收到friend clear confirm消息,则应取消两个计时器,且程序已完成。
  4. 如果朋友清除重复计时器过期,将发送新的朋友清除消息,并重新启动计时器,其时间段是之前的朋友清除重复时间段的两倍。如第一次到期后,周期设置为2秒,下一次到期时,设置为4秒,以此类推。
  5. 如果朋友清除计时器过期,则应取消朋友清除重复计时器,并且该过程已完成。
  1. Friend Clear消息参数:消息的op为0x05 ,目的地址为之前friend节点的源地址。

字段

大小

注释

LPN Address

2byte

LPN节点的地址

LPN Counter

2byte

用于建立Friend关系的最新好友请求中的LPN Counter值

  1. Friend Clear Confirm消息参数:消息的op为0x06, 如果收到的TTL为0,确认也应使用TTL为0,目的地址为新friend节点的源地址。

字段

大小

注释

LPN Address

2byte

正在删除的LPN节点的单播地址

LPN Counter

2byte

对应的friend clear消息的LPN counter的值

LPN节点消息传递:

856ea20ca51e45478c4b273c49388bdf.png

  • 低功耗消息传递操作由低功耗节点执行,以接收从朋友节点存储的消息和安全更新。
  • 该操作包括从低功耗节点到朋友节点的异步请求,以及从朋友节点到低功耗节点的定时响应。
  • 与朋友节点对应的低功耗节点应在轮询超时计时器到期前向朋友节点发送朋友轮询消息。
  • 在“朋友轮询”消息中,TTL字段应设置为0。
  • 低功耗节点应继续发送“朋友轮询”消息,直到收到将MD字段设置为0的“朋友更新”消息为止。
  • 低功耗节点可以通过发送朋友清除来终止与朋友的友谊。朋友清除消息应该使用TTL为0来发送。
  • FSN字段应设置为朋友序列号的值,如果低功耗节点接收到友节点的响应,则切换友序列号。
  • 如果低功率节点在接收窗口中没有收到响应,它应该重新发送朋友轮询消息。建议重新发送此消息3次,以确保可靠性和功耗之间的良好平衡。
  • 如果低功耗节点接收到好友更新消息,它应使用相同的规则处理标志和IV索引字段,就像在安全网络信标中接收到它们一样。

LPN节点的好友订阅列表添加/删除/确认:

  1. Friend Subscription List Add消息参数:消息的op为0x07, TTL为0,目的地址为friend节点的源地址。

好友订阅列表添加消息由低功率节点发送到好友节点,以指示要存储消息的组地址和虚拟地址的列表。

字段

大小

注释

Transaction Number

1byte

“交易编号”字段用于区分每个单独的事务

Address List

2 * N byte

组地址和虚拟地址的列表,其中N是此消息中的组地址和虚拟地址的数量

Transaction Number:增加每个新的好友订阅列表添加或好友订阅列表删除的交易编号,使交易编号与好友订阅列表确认消息的“交易编号”字段相匹配。

  1. Friend Subscription List Remove消息参数:消息的op为0x08, TTL为0,目的地址为friend节点的源地址。

“好友订阅列表删除”消息由低功耗节点发送到好友节点,以指示要从好友订阅列表中删除的组地址和虚拟地址。

字段

大小

注释

Transaction Number

1byte

“交易编号”字段用于区分每个单独的事务

Address List

2 * N byte

组地址和虚拟地址的列表,其中N是此消息中的组地址和虚拟地址的数量

  1. Friend Subscription List Confirm消息参数:消息的op为0x09, TTL为0,目的地址为LPN节点的源地址。

“好友订阅列表确认”消息由好友节点发送到低功率节点,以响应“好友订阅列表添加”消息或“好友订阅列表删除”消息。

字段

大小

注释

Transaction Number

1byte

“交易编号”字段用于区分每个单独的事务

LPN节点与Friend节点的消息交互的安全性:

主安全资料(Master Security Material):由网络密钥(NetKey)派生,可被同一网络中的其他节点使用。使用主安全资料加密的消息可被同一网络中的任何节点解码。

好友安全资料(Friend Security Material):由网络密钥(NetKey)、以及由低功耗节点(LPN)和好友节点生成的额外计数器号码派生而来。使用好友安全资料加密的消息只能由处理该消息的好友节点和LPN解码。

使用好友安全资料加密的友谊消息:轮训(Friend Poll)、好友更新(Friend Update)、好友订阅列表(Friend Subscription List)添加/删除/确认好友节点发送至LPN的“被存储的消息”。

使用主安全资料加密的相应友谊消息:好友清除(Friend Clear)、好友清除确认(Friend Clear Confirm)。

从LPN发送至好友节点的消息将根据应用设置,通过主安全资料或好友安全资料进行加密。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝牙Mesh LPN节点 的相关文章

  • [BLE]CC2640之定时器(Clock)事件

    一 定时器 xff08 Clock xff09 所谓定时器本质上递减计数器 xff0c 当计数器减到零时可以触发某种动作的执行 这种动作可以通过回调函数来实现 xff0c 当定时器计时完成后 xff0c 自定义的回调函数会立即被调用 回调函
  • BLE Mesh(六)配网流程

    配网流程 概述配网协议配网承载层 Provisioning Bearer 配网协议 Provisioning Protocol 流程详解发送Beacon信号邀请交换公共密钥认证输出带外 xff08 Output OOB xff09 输入带外
  • 蓝牙5.1的ble那些事儿

    到这里 对于非连接状态应该有一些新的认识了 接下来 顺其自然当然就是连接了 你谈对象 忙活半天 当然是想干点什么事情了 当然也有老司机翻车 连接上后 一端要主动向另一端发起问候 否则长时间不联系 那么就断开好了 主动问候的一端我们称之为ma
  • ESP32-C3 学习测试 蓝牙 篇(四、GATT Server 示例解析)

    了解了蓝牙 GATT 相关概念 趁热打铁 分析一下官方示例 GATT Server 的应用程序架构 目录 前言 一 GATT Server 示例分析 1 1 初始化 1 2 回调函数 gatts event handler gap even
  • 【BLE】蓝牙抓包器 Ellisys 使用说明

    BLE 蓝牙抓包器 Ellisys 使用说明 常用功能 设备过滤 抓包的类型 添加观察的项目 协议解析 连接过程 Connection Indication LLCP Feature Request Response LLCP Length
  • 蓝牙Mesh协议三 设备配网

    前言 蓝牙Mesh配网就是通过配网器配置未配网设备 将未配网设备加入网络中 使其成为蓝牙mesh网络的节点 配网数据中包括分发网络密钥 network key 元素单播地址 unicast address 和IV Index 为了提高配网效
  • Telink泰凌微TLSR8258蓝牙开发笔记(一)

    一 开发环境搭建 1 1 软件开发环境 1 1 1 开发的IDE IDE下载链接 1 1 2 烧录工具 DBT下载地址 1 1 3 蓝牙SDK 蓝牙SDK下载地址 1 2 硬件开发环境 8258开发板 烧录工具一套 二 运行例程 并使能打印
  • BLE低功耗蓝牙协议栈

    目录 一 BLE低功耗蓝牙协议栈 1 蓝牙核心协议 Bluetooth Core 2 蓝牙应用层协议 Bluetooth Application 3 BLE低功耗蓝牙核心协议层详解 Bluetooth Core 物理层 PHY 链路层 LL
  • ST-BlueNrg-lp蓝牙芯片OTA升级过程

    1 无线 固件升级的概念 空中下载 OTA 固件升级是一种协议 它允许低功耗蓝牙从设备通过空中接收来自低功耗蓝牙主设备的固件映像并将其写入闪存 为了将事情置于低功耗蓝牙技术的正确环境中 OTA 固件升级框架定义了一项暴露其自身特征的服务 该
  • 基于富芮坤fr8016 蓝牙5.0 芯片设计的BLE HID Joystick 游戏摇杆设备

    文章目录 ble hid 学习笔记 HID报告描述符与BLE HID profile之间关系 1 HID报告描述符 富芮坤fr8016 设计Joystick例子 1 描述X轴Y轴Z轴 2 描述按钮 3 Joystick 报告描述符 4 程序
  • Ble Mesh的Generic Model ID&Opcode

    MODEL ID 标准的为16为 自定义的Vendor Model ID为32位 Model Group Model Name SIG Model ID Generic Generic OnOff Server 0x1000 Generic
  • 蓝牙Mesh中的Heartbeat和Heartbeat Publication

    Heartbeat 在蓝牙Mesh网络中 Heartbeat 心跳 是一种用于监测设备在线状态和网络连通性的机制 它是由每个设备定期发送的小型消息组成 用于指示设备的存在和活动状态 Heartbeat的主要目的是确保网络中的设备处于活动状态
  • 蓝牙协议介绍

    1 广播 ADV Advertising 1 1 BLE 报文结构 BLE引入access address 概念 用来指明接收者身份 概 其中 0x8E89BED6 这个access address 比较特殊 它表示要发给周边所有设备 即广
  • ESP32的WIFI的STA模式&调控ESP32蓝牙和WIFI发射功率

    以下相关API接口的定义可进入l乐鑫官方查看 Wi Fi 库 ESP32 ESP IDF 编程指南 v4 4 文档 STA模式配置过程 include
  • BLE学习(4):蓝牙地址类型和设备的隐私

    蓝牙地址也被称为蓝牙MAC地址 它能唯一标识一个蓝牙设备的48位的值 在蓝牙规范中 它被称为BD ADDR 蓝牙的地址类型可以分为两种 public addresses和random addresses 其中random addresses
  • BLE MESH在配网广播中的Service UUID:1827与1828

    Mesh Provisioning UUID 1827 是一种服务的UUID 一般在广播包中中代表设备为未配网设备 也用于给配网器进行识别 在该服务下还有两个UUID 0x2ADB 用于写 0x2ADC 用于上报 在使用GATT配网阶段的数
  • 使用Arduino开发ESP32(22):蓝牙作为客户端使用

    文章目录 目的 基础准备 搜索蓝牙设备 搜索设备 信息查询 连接与交互 总结 目的 ESP32的蓝牙除了作为服务器 从设备 使用还可以作为客户端 主机 使用 这篇文章将对相关内容做个简单说明 基础准备 这篇文章中测试需要先准备一个蓝牙服务器
  • 解密蓝牙mesh系列

    转载自 蓝牙技术联盟 蓝牙mesh网络 友谊篇 低功耗蓝牙 Bluetooth Low Energy 是全球最具节能性的短距离无线通信技术之一 其低功耗的特性广受开发者和消费者赞誉 随着蓝牙mesh网络的推出 开发者可能想知道蓝牙mesh网
  • Telink BLE MESH开发

    一 前言 官网资料介绍建议采用DMA传输 串口数据的接收是放到了fifo中 但是串口发送也是采用的DMA 问题在于串口发送并没有建立缓冲器 而是判断当前DMA是否忙 如果忙数据直接丢弃 这样做显然不合理 如果发送时DMA忙应该将数据放到缓冲
  • 蓝牙设备中的Device UUID 与 Service UUID

    Device UUID也可以被称作为DeviceID Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址 相对固定 iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间

随机推荐