news 2026/9/20 14:01:42

ESP-BLE-MESH 全量功能清单:从入网到远程运维,一文对照源码与示例定位全部能力

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ESP-BLE-MESH 全量功能清单:从入网到远程运维,一文对照源码与示例定位全部能力

ESP-BLE-MESH 全量功能清单:从入网到远程运维,一文对照源码与示例定位全部能力

【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf

本文以 ESP-IDF 的 esp_ble_mesh 组件官方功能清单为线索,对照源码拆解 ESP-BLE-MESH 的蓝牙 Mesh 能力:支持哪些特性、哪些处于预览(Preview)阶段、每项特性的源码与可运行示例在哪里,帮助快速完成选型与上手。

📋 能力总览:功能域 × 源码落点对照表

先给结论:ESP-BLE-MESH 实现了 Mesh 1.0.1 的全部标准能力(配网、中继、Friend/低功耗、Proxy、全量标准模型),并向前兼容了 Mesh v1.1 的远程配网、定向转发等特性;其中仅设备固件升级(Device Firmware Update, DFU)四项模型标注为预览。协议栈基于 Zephyr Bluetooth Mesh 主机协议栈移植(底层抽象集中在 common/ 目录),对外 API 按 core、models、v1.1 三层暴露。

功能域关键能力状态源码落点参考示例
配网PB-ADV、PB-GATT、PB-Remote 三种配网承载(Provisioning Bearer)已实现core/prov_node.c、core/prov_pvnr.cprovisioner
配网OOB 认证(No/Static/Output/Input OOB)、基于证书的配网、增强型配网认证(EPA)已实现core/prov_common.cprovisioner
配网远程配网(Remote Provisioning,Mesh v1.1)已实现v1.1/api/core/remote_provisioning
配网快速配网(Fast Provisioning,60 秒内配网 100 台设备)已实现core/fast_prov.cfast_provisioning
组网中继(Relay)已实现core/net.conoff_models
组网分段与重组(Segmentation and Reassembly, SAR)、密钥刷新(Key Refresh)、IV 更新(IV Update)已实现core/transport.c、core/local.cprovisioner
组网好友节点(Friend)、低功耗节点(Low Power Node, LPN)已实现core/friend.c、core/lpn.c
组网代理服务/客户端(Proxy Server/Client)已实现core/proxy_server.c、core/proxy_client.conoff_models
组网定向转发(Directed Forwarding)、私有信标(Private Beacon)、子网桥接(Subnet Bridge)、小型增强项,均为 Mesh v1.1已实现core/beacon.c、v1.1/api/core/directed_forwarding
组网设备固件升级(DFU)预览v1.1/dfu/
并发多个 Client Model 同时向不同节点发包,Client 与 Server 互不阻塞已实现models/client/、models/server/ 与 btc/ 解耦onoff_models
持久化配网与配置信息存入 NVS,重启免重新配网已实现core/storage/
基础模型Foundation 全系 24 个模型(Server/Client 各 12,见下文矩阵)已实现core/ 与 v1.1/api/core/provisioner
标准模型Generic、Sensor、Time/Scenes、Lighting 四域 Client 共 17 个、Server 共 34 个已实现models/client/、models/server/onoff_models、sensor_models
标准模型DFU Client/Server 模型(Firmware Update、Firmware Distribution)预览v1.1/dfu/dfu_cli.c、dfu_srv.c、dfd_cli.c、dfd_srv.c
官方示例节点、Provisioner、快速配网、Wi-Fi 共存、传感器、厂商模型、远程配网、定向转发examples/bluetooth/esp_ble_mesh/ 下 9 个目录

🔗 生命周期深挖:入网、通信、持久化、运维各环节如何定位

首次入网:Provisioner 如何把设备安全带进 Mesh

入网环节要解决的问题是:一台没有网络密钥(NetKey)的未配网设备,如何安全地获得身份并加入网络。官方示例中,手机 App 扫描到未配网节点、发起配网、完成组配置的全过程可参见下图:

  • PB-ADV(Provisioning over Advertising):走广播信道完成配网,无需建立 GATT 连接,是最常用的方式(佐证:core/prov_node.c)。
  • PB-GATT(Provisioning over GATT):走 GATT 连接完成配网,适配 Proxy 场景(佐证:core/prov_pvnr.c)。
  • PB-Remote(远程配网承载):Mesh v1.1 新增,Provisioner 借助已入网的 Remote Provisioning Server 触达远处设备(佐证:v1.1/api/core/rpr_model_api.c)。
  • OOB 认证(Out-of-Band Authentication):支持 No OOB、Static OOB、Output/Input OOB,用于防中间人攻击(佐证:core/prov_common.c)。
  • 基于证书的配网(Certificate-based Provisioning):以证书完成强身份验证(佐证:Kconfig 项 BLE_MESH_CERT_BASED_PROV)。
  • 增强型配网认证(Enhanced Provisioning Authentication, EPA):Mesh v1.1 的更强认证模式(佐证:Kconfig 项 BLE_MESH_PROV_EPA)。
  • 快速配网(Fast Provisioning):乐鑫私有扩展,官方口径为 60 秒内配网多达 100 台设备(佐证:core/fast_prov.c)。

关键开关集中在 Kconfig.in,例如:

CONFIG_BLE_MESH_PB_ADV=y CONFIG_BLE_MESH_PROV_EPA=y CONFIG_BLE_MESH_V11_SUPPORT=y

源码上,节点侧逻辑在 core/prov_node.c,Provisioner 侧在 core/prov_pvnr.c,公共的密钥派生与认证流程在 core/prov_common.c,多 Provisioner 实例管理在 core/pvnr_mgmt.c。要验证这条链路,直接跑 provisioner 示例,按配套教程逐步执行 PB-ADV 配网即可。

组网通信:Relay、Friend/低功耗与 Proxy 的转发路径

组网环节回答的问题是:一条消息如何低成本、可靠地从某个节点到达另一个节点,尤其是当两端相距多跳或一方处于深睡时。

  • 中继(Relay):入网节点对组播消息做多跳转发,扩展网络覆盖(佐证:core/net.c)。
  • 分段与重组(SAR):超过单包 MTU 的长消息自动拆分、在对端重组(佐证:core/transport.c,参数见 Kconfig 项 BLE_MESH_TX_SEG_MSG_COUNT)。
  • 密钥刷新(Key Refresh):怀疑网络密钥泄露后刷新 NetKey 的完整流程(佐证:core/prov_node.c)。
  • IV 更新(IV Update):周期性更新 IV Index,保证网络长期运行的消息新鲜性(佐证:core/local.c)。
  • 好友节点(Friend):常电节点为低功耗节点缓存消息(佐证:core/friend.c)。
  • 低功耗节点(LPN):周期性休眠,唤醒后主动向 Friend 取消息(佐证:core/lpn.c,总开关 BLE_MESH_LOW_POWER)。
  • Proxy Server / Proxy Client:把 GATT 连接域与 Mesh 广播域打通,让不支持 Mesh 广播的 BLE 设备接入(佐证:core/proxy_server.c、core/proxy_client.c)。
  • 定向转发(Directed Forwarding):Mesh v1.1 特性,仅路径上的节点转发定向消息,其余节点不参与,降低无关节点的功耗(佐证:directed_forwarding 示例)。
  • 私有信标(Private Beacon):Mesh v1.1 特性,信标内容随机化以增强隐私(佐证:core/beacon.c)。
  • 子网桥接(Subnet Bridge):Mesh v1.1 特性,跨子网转发消息,上限由 Kconfig 项 BLE_MESH_SUBNET_COUNT 控制(佐证:Kconfig.in)。
  • 小型增强项(Minor Enhancements):规范中其余零星增强点的合集(佐证:core/ 目录整体)。

这些路径的公共入口在 core/net.c(入网/转发决策)与 core/transport.c(分段、访问控制与转发控制)中,v1.1 的转发增强通过 BLE_MESH_V11_SUPPORT 统一开启。想亲手观察定向转发的行为差异,参考 directed_forwarding 示例中 df_client 与 df_server 的对照结果。

本地持久化:重启后从 NVS 恢复已入网状态

持久化环节解决"断电重启后是否要重新配网"的问题:答案是否定的,配网结果与网络配置会被写回 NVS。

  • NVS 存储(NVS Storing):节点配网信息(NetKey、地址、Elements)与模型配置信息全部落盘,上电自动恢复(佐证:core/storage/settings_nvs.c)。
  • 节点唯一标识生成:为节点生成并持久化 UID(佐证:core/storage/settings_uid.c)。
  • 容量上限配置:子网数、AppKey 数、模型键数、组地址数等均有独立 Kconfig 上限(佐证:BLE_MESH_SUBNET_COUNT、BLE_MESH_APP_KEY_COUNT 等项)。

实现集中在 core/storage/ 目录下的 settings.c(统一读写接口)、settings_nvs.c(NVS 后端)与 settings_uid.c(UID 后端)三个文件,API 侧对应 api/core/ 下的 esp_ble_mesh_local_data_operation_api.h。整体分层与数据流向在 ble-mesh-architecture.rst 中有图示说明,可配合 provisioner 示例中反复删档重配的实验观察落盘行为。

远程运维:v1.1 新特性与固件升级从哪里入手

运维环节解决的是"设备已批量入网后,如何不改现场就能调整网络行为、更新固件"的问题,Mesh v1.1 把这部分能力做成了独立模型。

  • 多 Client Model 并发运行:多个 Client Model 同时向不同节点发包,Client 与 Server 模型之间互不阻塞(佐证:models/ 目录与 btc/ 的模型公共层 btc_ble_mesh_model_common.c)。
  • Remote Provisioning Server/Client:通过已入网节点远程给远处设备配网(佐证:v1.1/api/core/rpr_model_api.c)。
  • Directed Forwarding / Bridge / Private Beacon / On-Demand Private Proxy / SAR / SRPL / Opcodes Aggregator / Large Composition Data 配置模型:八组 v1.1 配置类模型的 Server/Client 成对提供(佐证:v1.1/api/core/ 下 df_model_api.c、brc_model_api.c、prb_model_api.c、odp_model_api.c、sar_model_api.c、srpl_model_api.c、agg_model_api.c、cm_data_api.c)。
  • 设备固件升级(DFU,预览):Firmware Update Client/Server 负责升级流程,Firmware Distribution Client/Server 支持经多个节点接力分发固件镜像(佐证:v1.1/dfu/ 目录)。

配置类模型的 API 统一放在 v1.1/api/core/ 下按模型一文件一模块,与 1.0 的 api/ 目录并列;DFU 的底层状态机独立在 v1.1/dfu/。完整链路可在 remote_provisioning 示例中验证,它提供 rpr_client、rpr_server、unprov_dev 三个角色的完整配网与转发演示。

🧩 模型与子系统支持矩阵

Foundation 模型、标准模型的 Client 与 Server 合并登记如下(模型总数以官方功能清单为准,合计 Foundation 24 个、标准 Client 17 个、标准 Server 34 个、DFU 4 个预览模型):

模块角色说明实现文件备注
基础模型Server + ClientConfiguration(模型订阅/发布、AppKey/NetKey 管理)、Health(健康状态上报与查询)core/cfg_srv.c、core/cfg_cli.c、core/health_srv.c、core/health_cli.cConfiguration Server 仅用 DevKey 加密,配网后无需绑定 AppKey
基础模型Server + ClientRemote Provisioning、Directed Forwarding Config、Bridge Config、Mesh Private Beacon、On-Demand Private Proxy、SAR Config、Solicitation PDU RPL Config、Opcodes Aggregator、Large Composition Data,各 2 个v1.1/api/core/ 下 rpr、df、brc、prb、odp、sar、srpl、agg、cm_data 对应的 _model_api.c均为 Mesh v1.1 模型
GenericClientOnOff、Level、Default Transition Time、Power OnOff、Power Level、Battery、Location、Property,共 8 个models/client/generic_client.c开关控制类示例最常用
GenericServerOnOff、Level、Default Transition Time、Power OnOff/Setup、Power Level/Setup、Battery、Location/Setup、User/Admin/Manufacturer/Client Property,共 14 个models/server/generic_server.cSetup 类模型承担参数配置
SensorClient + ServerSensor Client、Sensor Server、Sensor Setup Servermodels/client/sensor_client.c、models/server/sensor_server.c传感器数据上报/订阅
Time and ScenesClientTime、Scene、Scheduler,共 3 个models/client/time_scene_client.c时间同步与场景调用
Time and ScenesServerTime/Time Setup、Scene/Scene Setup、Scheduler/Scheduler Setup,共 6 个models/server/time_scene_server.c场景与定时计划管理
LightingClientLight Lightness、CTL、HSL、xyL、LC,共 5 个models/client/lighting_client.c五套调色空间
LightingServerLight Lightness/Setup、CTL/CTL Temperature/Setup、HSL/Hue/Saturation/Setup、xyL/Setup、LC/Setup,共 12 个models/server/lighting_server.c配套 models/server/state_binding.c(状态绑定)与 models/server/state_transition.c(过渡时间内的平滑迁移)
厂商模型Client + Server自定义 Vendor Model(自定义 Opcode 与属性)vendor_models 示例未列入官方功能清单,以示例代码为准
DFUClientFirmware Update Client、Firmware Distribution Clientv1.1/dfu/dfu_cli.c、v1.1/dfu/dfd_cli.c预览(Preview)
DFUServerFirmware Update Server、Firmware Distribution Serverv1.1/dfu/dfu_srv.c、v1.1/dfu/dfd_srv.c预览(Preview)
MBT BlobClient + ServerMedia Blob Transfer,大文件分片传输,为 DFU 提供底座v1.1/mbt/未列入官方功能清单,源码存在

🧪 预览与实验特性:使用前先核对版本

  • DFU 四项模型(预览 Preview):Firmware Update Client/Server 与 Firmware Distribution Client/Server 在官方功能清单中均明确标注 (Preview),源码位于 v1.1/dfu/,正式使用前请核对 ESP-IDF 版本说明与发布注记。
  • Mesh v1.1 特性集整体:由 Kconfig 项 BLE_MESH_V11_SUPPORT 统一开关,默认开启,其 help 文本同样带 (Preview) 标记;远程配网、定向转发、私有信标、子网桥接等 v1.1 能力都在此开关之下。
  • 实验性广播选项:BLE_MESH_USE_BLE_50、BLE_MESH_EXT_ADV、BLE_MESH_LONG_PACKET 均依赖 BLE_MESH_EXPERIMENTAL(实验性总开关)才可见;BLE_MESH_HCI_5_0 的说明中自称是 temporary solution(临时方案)。
  • 提醒:预览与实验特性的 API、行为可能随版本调整,接入量产项目前请以官方版本说明为准。

🚀 上手路径:按目标选示例

  • 体验最基础的开关控制→ onoff_models(onoff_server 演示 Configuration Server + Generic OnOff Server 组合,onoff_client 演示客户端控制),配套教程见 BLE_Mesh_Node_OnOff_Client_Example_Walkthrough.md。
  • 自己写一个配网端→ provisioner 示例(含 Configuration Client 与 Generic OnOff Client),教程在示例目录的 tutorial/ 下。
  • 工厂批量配网→ fast_provisioning(fast_prov_client + fast_prov_server,官方口径 60 秒配 100 台),参考 BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md。
  • 上报传感器数据→ sensor_models(sensor_client 配在 Provisioner 上,sensor_server + Sensor Setup Server 配在节点上)。
  • 定义私有 Opcode 与属性→ vendor_models;若要对接天猫精灵生态,另有 aligenie_demo 示例。
  • 体验 v1.1 远程配网与定向转发→ remote_provisioning(rpr_client/rpr_server/unprov_dev 三角色)与 directed_forwarding(df_client/df_server),两个示例共用 BLE_MESH_V11_SUPPORT 开关。
  • 同一设备跑 Wi-Fi 与 Mesh→ wifi_coexist(esp32h2 不支持,其余芯片可用)。

📚 选型提示与延伸阅读

  • ble-mesh-feature-list.rst:官方功能清单原文,本文能力总览表的核对基准。
  • ble-mesh-index.rst:总览页,含快速入门、示例索引与 FAQ 入口。
  • ble-mesh-architecture.rst:架构说明,理解分层与数据流向后再读源码效率更高。
  • ble-mesh-faq.rst:配网失败、低功耗异常、Wi-Fi 共存等问题排查优先查这里。
  • ble-mesh-terminology.rst:术语表,Element、Model、NetKey 等概念的标准定义。
  • api/core/include:对外 API 头文件目录,配网、组网、低功耗、本地数据操作、Proxy 五大组接口都在这里。

结语

ESP-BLE-MESH 的能力面覆盖了三条主线:Mesh 1.0.1 的基础配网、中继、Friend/低功耗、Proxy 与全量标准模型;Mesh v1.1 的远程配网、定向转发、私有信标、子网桥接等九组新模型;以及预览阶段的设备固件升级链路。配合 NVS 持久化、多 Client 并发与快速配网扩展,它适合作为照明控制、传感组网与带 Wi-Fi 共存的边缘网关场景的选型基础。对预览特性与实验性广播选项保持版本核对习惯,即可从原型验证平滑走到量产。

【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 14:01:39

GPT-5-Codex 多智能体任务,走 TaoToken 通道行不行?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 14:01:33

React Native多环境多渠道打包实战指南

1. 项目概述:RN多环境多渠道打包到底在解决什么问题?React Native项目上线前,几乎每个团队都会卡在“打包”这道关上。不是打不出来,而是打出来的包没法用——测试环境连的是测试API,发到生产环境却还带着测试域名&…

作者头像 李华
网站建设 2026/9/20 14:00:35

MATLAB GUI音频去噪:FIR滤波器设计与实现全解析

简介:一套基于MATLAB GUI的数字信号处理音频FIR去噪滤波器毕业设计资源,面向信号处理、电子信息类本科生以及需要完成音频去噪课设/毕设的开发者。资源以窗函数法为核心,支持梯形窗、三角窗、海明窗、汉宁窗、布莱克曼窗、凯塞窗等多种窗函数…

作者头像 李华
网站建设 2026/9/20 14:00:26

微波电子线路课后题解析:Smith圆图与S参数核心考点全攻略

简介:西电《微波电子线路》课后习题答案解析,面向电子信息类本科生、考研复习者及微波电路初学者,覆盖平衡混频器、电流成分、混频器与上变频器、微带平衡混频器、参放稳定性、倍频器等核心章节。资源为单一PDF文档,约139KB&#…

作者头像 李华