ESP-BLE-MESH 完整指南:ESP32 蓝牙 Mesh 从入网到固件升级的四条能力线
【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf
ESP-BLE-MESH 是 ESP-IDF 内置的蓝牙 Mesh 协议栈组件,面向多对多大规模组网,支持 Proxy、Relay、低功耗等节点特性。本文按一台设备"入网—组网—模型应用—v1.1 进阶—固件升级"的生命周期展开,每个能力点给出源码文件与官方示例锚点,帮助首次接触 BLE Mesh 的开发者十分钟建立全景。
能力总览:四条能力线一张表
| 能力线 | 解决什么问题 | 源码位置 |
|---|---|---|
| 核心协议(Mesh Core) | 配网流程、Relay/SAR 组网传输、Friend/LPN、Proxy、密钥更新 | core/ |
| 标准模型 | Foundation 模型 + Generic/Sensor/Time-Scene/Lighting 四大域,Client/Server 成对齐全 | models/ |
| BLE Mesh v1.1 新特性 | 远程配网、定向转发、私有信标、子网桥接、操作码聚合、大容量 Composition Data | v1.1/ |
| OTA 预览(Preview) | Firmware Update 与 Firmware Distribution 两套模型,明确标注预览 | v1.1/dfu/ |
🔑 入网篇:蓝牙 Mesh 配网流程走一遍
三种配网承载怎么选:PB-ADV、PB-GATT、PB-Remote
配网(Provisioning)是把未配网设备(Unprovisioned Device)通过身份认证安全纳入网络的过程。ESP-BLE-MESH 提供三种承载:
- PB-ADV:走 BLE 广播信道,无需建立连接,适合近距离批量配网;
- PB-GATT:走 GATT 连接,常与 Proxy 搭配,适合手机 App 配网场景;
- PB-Remote:Mesh v1.1 引入,由已入网节点替远处设备完成配网,remote_provisioning 示例有完整演示。
节点侧逻辑在core/prov_node.c,Provisioner 侧在core/prov_pvnr.c,公共部分在prov_common.c,pvnr_mgmt.c负责 Provisioner 自身的管理。
配网认证:OOB、证书与 v1.1 增强
认证等级按需选择:No OOB(无认证,仅限开发)、Static OOB(预置静态值)、Output/Input OOB(设备屏幕/按键交互),用于抵御中间人攻击。需要强身份验证的场景可启用基于证书的配网(Certificate-based Provisioning);Mesh v1.1 还提供增强型入网认证(Enhanced Provisioning Authentication)。
重启免配网:NVS 持久化
配网成功后,节点的单播地址、密钥与配置信息由core/storage/settings_nvs.c写入 NVS。上电后直接读回复原已入网状态,无需重新配对——这是设备量产部署的基础能力。
📡 组网篇:消息如何在 Mesh 网络里流动
- Relay:无线覆盖不够时由节点多跳转发,
net.c与transport.c实现; - SAR(分段重组):消息超过单包 MTU 时拆段发送、目的端重组,长配置消息依赖它;
- Friend / LPN:低功耗节点周期性休眠,消息由 Friend 节点代为缓存(
lpn.c、friend.c),电池供电设备必备; - Proxy Server / Client:不支持 Mesh 广播的设备经 GATT 代理信道接入网络(
proxy_server.c、proxy_client.c); - Key Refresh:密钥泄露后全网滚动更新 NetKey/AppKey,控制受损范围;
- IV Update:周期性更新 IV Index,保证网络长期运行的安全唯一性。
以上能力集中在 core/,增强传输另见transport.enh.c。
⚡ BLE Mesh v1.1 新特性:ESP32 新增的六项进阶能力
v1.1 能力集中在v1.1/目录,每项特性都有对应的公开 API 文件(v1.1/api/core/下的*_model_api.c):
| v1.1 特性 | 用途 |
|---|---|
| Directed Forwarding 定向转发 | 仅路径上节点转发定向消息,降低全网开销,directed_forwarding 示例可跑通 |
| Private Beacon 私有信标 | 信标内容随机化,削弱链路可追踪性,强化隐私 |
| Subnet Bridge 子网桥接 | 跨子网转发消息,把大网络拆成独立安全域 |
| Opcodes Aggregator 操作码聚合 | 批量聚合多个操作码发送,减少报文数量 |
| Large Composition Data | 元素多的设备可分段传输大容量 Composition Data |
| On-Demand Private Proxy 等 | 按需私有代理、SAR 配置、Solicitation PDU RPL 配置(见下节模型矩阵) |
这些都属于 Mesh v1.1 版本属性,与 v1.0 基础能力(Relay、Friend、Proxy 等)并存。
🧩 模型矩阵:Client/Server 支持一表速查
Foundation 模型负责网络管理与设备配置,标准模型承载业务语义。Client 侧按域拆成models/client/下 5 个文件(generic/lighting/sensor/time_scene/client_common),Server 侧对应 4 个域文件加server_common.c:
| 模型 | Client | Server | 一句话说明 |
|---|---|---|---|
| Configuration | ✓ | ✓ | AppKey/NetKey、订阅管理;Server 仅用 DevKey 加密,无需绑 AppKey |
| Health | ✓ | ✓ | 设备健康状态上报与查询 |
| Generic(OnOff/Level/Transition Time/Power OnOff/Power Level/Battery/Location/Property) | ✓ | ✓ | 通用域 8 个子模型全覆盖 |
| Sensor | ✓ | ✓ | 传感器数据上报,配 Sensor Setup Server |
| Time / Scene / Scheduler | ✓ | ✓ | 时钟、场景、定时任务,各配 Setup Server |
| Lighting(Lightness/CTL/HSL/xyL/LC) | ✓ | ✓ | 五大灯效家族,各配 Setup Server |
| v1.1 Foundation 八对(Remote Provisioning/DF Config/Bridge Config/Private Beacon/ODP Proxy/SAR Config/RPL Config/Aggregator/Large CD) | ✓ | ✓ | 对应上节 v1.1 特性的配置面模型 |
| Firmware Update / Distribution(v1.1) | ✓ | ✓ | 预览特性,见下一章 |
Server 侧另有两个横切机制:state_binding.c做跨模型状态联动(如 Generic Level 驱动 Light Lightness),state_transition.c实现过渡时间内的平滑渐变。
注意:Configuration Server 只使用 DevKey 加密上层消息,配网后无需为其绑定 AppKey,这是使用配置客户端时的常见疑问点。
📦 BLE Mesh 固件升级(预览):Firmware Update 与 Distribution
Mesh v1.1 的 OTA 能力在 ESP-BLE-MESH 中为Preview(预览),位于 v1.1/dfu/:
- Firmware Update Client/Server(
dfu_cli.c/dfu_srv.c):设备间直接完成固件升级,dfu_metadata.c管理升级元数据、dfu_slot.c管理写入槽位; - Firmware Distribution Client/Server(
dfd_cli.c/dfd_srv.c):固件经多个节点接力分发,适合全网批量升级。
预览特性不做量产级稳定性承诺,启用前请核对所用 ESP-IDF 版本的发布说明与后续更新。
🛠 动手篇:ESP32 BLE Mesh 示例导读,最快 60 秒配 100 台
- Node(onoff_models):含
onoff_client与onoff_server,Server 演示 Configuration Server + Generic OnOff Server 驱动 RGB LED,两端均附逐步 walkthrough 教程; - Provisioner(provisioner):一台设备充当 Provisioner 配网他机,组合 Configuration Client 与 Generic OnOff Client,附教程;
- Fast Provisioning(fast_provisioning 示例):效率卖点最突出——60 秒内完成多达 100 台设备配网,client/server 两种角色均附教程;
- Wi-Fi 共存(wifi_coexist):演示 Wi-Fi 与蓝牙 Mesh 同板共存,附 walkthrough。
另有sensor_models(Sensor Client/Server)、vendor_models(厂商自定义模型)、remote_provisioning(远程配网 + 定向转发)等补充示例,全部在 esp_ble_mesh 示例目录下可直接构建。
选型与延伸:文档入口、API 位置与方案区分
- 文档入口:ble-mesh-index.rst 是主入口,同目录还有架构、FAQ、术语与功能清单文档,其中 ble-mesh-feature-list.rst 可作为能力核对表;
- API Reference:公开 API 头文件在 esp_ble_mesh 组件的
api/子目录,按api/core/与api/models/分域组织; - 方案区分:要的是蓝牙 Mesh 协议栈选 ESP-BLE-MESH;要的是基于 Wi-Fi 的 Mesh 组网方案则看乐鑫的 ESP-WIFI-MESH,两者是互不相关的独立方案。
下一步
从 Mesh v1.0 的基础配网、Relay、Friend/LPN、Proxy 与全量标准模型,到 v1.1 的远程配网、定向转发、私有信标与子网桥接,再到预览版固件升级,ESP-BLE-MESH 覆盖了从原型验证到量产部署的主要需求。建议先跑通 onoff_models 节点 + provisioner 这条最短链路,再按业务需要叠加 Fast Provisioning 与 v1.1 特性;对协议细节有疑问时,回到功能清单与架构文档逐条核对是最省时的路径。
【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考