Esp32-ble-mesh
ESP-BLE-MESH 基于 Zephyr 蓝牙 Mesh 协议栈的顶端,其实现支持设备配网和节点控制,同时也实现了代理、中继、低功耗和朋友等节点功能。Ble-mesh组网是需要人为配置的,对比于wifi-mesh,蓝牙组网并不具备完全自组网和自愈合的功能。蓝牙组网的核心在于节点的配置。以下图为例
图中已经配置好了每个节点的模式,他们在蓝牙mesh中具有自己的特定功能,以下为乐鑫官方技术文档的功能定义:
补充:
好友节点在组网中需要更大的内存来帮助低功耗设备存储指令。
每个节点可以配置多种模式,但是配置低功耗以后就不能配置其他模式。
中继节点的传输类似于普通蓝牙的广播式的传递消息指令。
以下问题为乐鑫技术文档的回答
蓝牙Mesh网络中的数据包TTL最大值是127。TTL(Time to Live)字段用于控制消息在网络中的生存时间或转发次数。它是一个7位的字段,数值范围从0到127。当一个节点接收到带有TTL的消息时,它会将该TTL值减1,并决定是否继续转发该消息。如果TTL值为1,那么这是最后一次转发机会;如果TTL值为0,则不再转发该消息,并将该数据包丢弃.
在以上乐鑫技术的回答文档中,表示ble-mesh并不具备自己选择最短路径选择的功能,是以广播传递的。
Ble-mesh的组网和配网过程
配网器Provisioner用于发现与配置未配网设备,使其加入mesh网络,成为mesh网络的节点设备,然后才能进行其余的配置操作。
在配网流程中较为关键的是地址的配置,这里的地址并不仅限于单播地址的配置,,地址用于定义消息的来源(源)和去向(目的地)
Ble-Mesh地址,由用户统一管理和分配,设备入网时通过provisioning流程分配,地址不得重复,是设备在网络中分配设置的唯一标识,同一设备可能有多个ble-mesh地址,用于区分不同的功能模块
Mesh地址分类:
未分配地址(默认地址)0x0000,类似与蓝牙耳机在重新配对时的情况
单播地址0x0001-0x7FFF; 可以为节点每个元素分配单播地址以便于控制和收发指令。
0x8000-0xbfff 虚拟地址,由label uuid生成
0xc000-0xffff 组地址
0xc000-0xfeff 自由分配组地址
0xff00-0xffff 固定组地址
在入网和配网的过程乐鑫idf中提供了一些标准例程,以下展示了部分例程
![]() |
根据官方手册,组成网络的需要有一个配网的角色(Provisioner),他负责将搜索到mesh设备配置节点。一些client例程刚好就有配网的操作,可以以下载client例程的esp32作为配网器,下载server例程的多个esp32作为节点使用,让多个esp32的mesh互传消息。当然乐鑫也提供了手机APP来作为Provisioner来进行蓝牙的配网和入网。
节点入网后的配置流程如下图:
通常一个蓝牙芯片对应一个节点。
元素(Element)通常用于指定一个节点下多个被控的设备。比方说,一块ESP32芯片控制了三个灯,那我们可以设定三个元素分别对应这三个灯。
模型(Model)是描述每个元素所具有的功能。以上面的灯为例,灯可以被控制,所以它带有一个Onoff Server Model,表明该模型是可以被控制的
消息
BLE MESH网络通过消息进行通信。消息可以被称为控制消息或接入消息。
控制消息与BLE MESH网络操作有关的消息。示例包括心跳和好友请求消息。
访问消息允许客户端模型在服务器模型中检索或设置状态值的值,或者它们被服务器用于报告状态值。
每个BLE MESH网络消息都使用 NetKeys 和 AppKeys 来加密和验证消息。NetKeys 用于网络层通信。假设BLE MESH网络没有子网,该MESH网络内的所有通信都使用相同的网络密钥。AppKeys 用于应用程序数据。网络中的某些节点可能具有特定的应用程序,并且在这些应用程序中,具有需要有限访问的潜在敏感数据。此类节点具有特定的 AppKey 并与特定的应用程序相关联
消息交换
BLE MESH网络使用发布/订阅模型进行消息传输。生成消息的节点被称为发布消息。对接收消息感兴趣的节点订阅他们感兴趣的地址。消息可以发布到单播、组或虚拟地址。
消息可以作为对其他消息的回复发送,也可以是未经请求的消息。当模型发送回复消息时,它使用消息发起者的源地址作为目标地址。发送未经请求的消息时,它使用模型的发布地址作为目标地址。节点中的每个模型都有一个发布地址。
订阅消息的模型使用模型的订阅列表来定义它们可以从中接收消息的有效地址。当模型接收到消息时,模型会检查其订阅列表。当订阅列表上的地址设置为模型的元素单播地址或属于节点的固定组地址时,它被认为是匹配的。下图显示了访问消息的有效源地址和目标地址。由于BLE MESH实体会发布各个节点的状态,因此整个BLE MESH网络中的系统都可以订阅此数据,而不管传输节点的位置是否接近。这允许网络一侧的设备通过低功率无线消息与设施中其他地方的管理员交谈。
总结
在esp-ble-mesh的组网网络中他是基于蓝牙的广播方式来进行数据传输,在其中设置了有特殊功能的几种节点来防止洪泛引起的一系列问题和传输资源浪费的问题。蓝牙mesh网络并不具备路劲选择的功能而是通过不停的广播转发得以数据交互实现功能,配置网络都需要人为的一些操作,没有自组网的功能,配置较为繁琐。