
ESP-BLE-MESH如何从单颗 BLE 设备到完整 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 协议栈组件面向多节点组网与低功耗 BLE 设备开发者。本文回答一个问题每项 Mesh 能力对应哪个源码文件、哪个可运行示例。能力地图按开发者心智分组的完整清单按入网与密钥安全 / 组网与消息可达 / 低功耗与代理接入 / 节点管理与升级四个开发者最常关心的问题分组能力与源码的对应关系如下分组能力一句话说明解决什么问题源码位置相关示例入网与密钥安全标准配网PB-ADV / PB-GATT / PB-Remote让未配网设备Unprovisioned Device安全入网三种承载分别为广播信道、GATT 连接、已入网节点中继core/ 的 prov_node.c、prov_pvnr.c、prov_common.cprovisioner入网与密钥安全OOB 带外认证入网时防中间人攻击可选 No / Static / Output / Input OOB同上同上入网与密钥安全基于证书的配网需要强身份验证场景的证书级校验同上同上入网与密钥安全快速配网60 秒内批量配网多达 100 台设备core/fast_prov.cfast_provisioning入网与密钥安全远程配网Mesh v1.1已入网节点替远处的未配网设备完成入网v1.1/ 的 esp_ble_mesh_rpr_model_api.cremote_provisioning入网与密钥安全Key Refresh 密钥刷新网络疑似被入侵后整体更换 NetKey网络密钥core/ 的 prov_pvnr.c、cfg_cli.cprovisioner入网与密钥安全IV Index 更新加密计数器随网络运行递增保证长期唯一性并防重放core/ 的 net.c、beacon.c同上组网与消息可达Relay 中继每个节点替别的节点转发 PDU让消息多跳跨越无线覆盖盲区core/net.c、core/transport.conoff_models组网与消息可达SAR 分段与重组长消息超过单包 MTU 时切段传输、对端重组core/net.conoff_models组网与消息可达Directed Forwarding 定向转发v1.1仅路径上的节点转发定向消息其余节点不处理v1.1/ 的 esp_ble_mesh_df_model_api.cdirected_forwarding组网与消息可达Subnet Bridge 子网桥v1.1跨子网转发消息v1.1/ 的 esp_ble_mesh_brc_model_api.c—经 v1.1 API 调用组网与消息可达Wi-Fi 共存同一射频上 Wi-Fi 与 Mesh 分时共享esp_coex 配合 core/wifi_coexist低功耗与代理接入Friend 好友节点替低功耗节点缓存消息节点醒着时再取走core/friend.conoff_models低功耗与代理接入LPN 低功耗节点周期性休眠经 Friend 收发消息省电台时间core/lpn.conoff_models低功耗与代理接入Proxy Server / Client只会 BLE GATT、不懂 Mesh 广播的设备经连接接入网络core/ 的 proxy_server.c、proxy_client.cprovisioner手机应用经 Proxy 连接节点低功耗与代理接入Private Beacon 私有信标v1.1随机化信标内容降低被被动跟踪的可能v1.1/ 的 esp_ble_mesh_prb_model_api.c—经 v1.1 API 调用低功耗与代理接入On-Demand Private Proxyv1.1按需建立的私有代理链路v1.1/ 的 esp_ble_mesh_odp_model_api.c—经 v1.1 API 调用节点管理与升级Configuration Server / Client管理模型订阅/发布、AppKey 与 NetKey 绑定core/ 的 cfg_srv.c、cfg_cli.conoff_models、provisioner节点管理与升级Health Server / Client设备健康状态上报与查询core/ 的 health_srv.c、health_cli.c—经 API 调用节点管理与升级NVS 持久化配网信息与配置写入 NVS重启后免配网恢复core/storage/ 的 settings_nvs.conoff_models节点管理与升级Firmware Updatev1.1Preview经 Mesh 网络升级节点固件v1.1/dfu/ 的 dfu_cli.c、dfu_srv.c、dfu_metadata.c—预览能力无官方示例节点管理与升级Firmware Distribution / MBTv1.1Preview固件经多个节点接力分发单节点带宽不足也能传完v1.1/dfu/ 的 dfd_cli.c、dfd_srv.cv1.1/mbt/ 的 blob_cli.c、blob_srv.c—预览能力无官方示例注标 — 的能力在 examples/bluetooth/esp_ble_mesh/ 中没有独立示例工程验证方式是对应 API 头文件api/core/ 与 v1.1/api/。高频能力拆解设备入网Provisioning从广播发现到密钥写入问题场景新设备手里没有任何密钥如何证明身份并入网Provisioner把未入网设备配入 Mesh 网络的节点如何防止中间人把伪造节点塞进网络。原理入网走三种承载之一——广播信道PB-ADV、GATT 连接PB-GATT或经已入网节点中继PB-Remote过程中双方做身份互验可按需启用 OOB 带外认证或基于证书的配网。成功后节点拿到 NetKey、单播地址等全部密钥并写入 NVS 持久化。源码节点侧 prov_node.cProvisioner 侧 prov_pvnr.c公共逻辑 prov_common.cProvisioner 管理 pvnr_mgmt.c远程配网模型见 esp_ble_mesh_rpr_model_api.c。验证烧录 onoff_server 与 provisioner用手机上的第三方 Mesh 应用经 Proxy 连接节点依次执行 Identify标识目标设备与 Provision配网。现象应用展示节点初始组配置数据Composition Data串口打印配网成功断电重启后节点仍保持入网状态无需再次配网。消息传输与密钥维护Relay、SAR 与 Key Refresh / IV Update问题场景两个节点不在彼此无线电直连范围内消息如何到达一条长消息超过单包 MTU 如何传完网络长期运行后密钥如何轮换、如何抵抗重放。原理Relay 让入网节点为其他节点转发 PDU消息因此可以多跳SARSegmentation and Reassembly分段与重组把长消息切成多个分段、由对端重组Key Refresh 由 Provisioner 向全网分发新 NetKeyIV Index 周期性递增维持网络加密的唯一性。源码net.c 负责 Relay 与 SARtransport.c 处理传输层分段prov_pvnr.c 与 cfg_cli.c 承载密钥刷新与 IV 更新的触发beacon.c 维护 IV Index 相关的 Beacon 信息。验证在 onoff_models 中让两个节点超出直连距离并开启 Relay消息仍可达用 provisioner内含 Configuration Client发起密钥刷新后全节点在新旧 NetKey 切换过程中保持正常收发。BLE 设备接入与低功耗Proxy、Friend 与 LPN问题场景手机只有 BLE GATT 能力、不解析 Mesh 广播如何参与网络电池供电的传感器不可能全天候监听信道。原理Proxy Server 在节点上开放 GATT 通道Proxy Client如手机经连接收发消息不依赖广播信道Friend 节点为名下 LPNLow Power Node低功耗节点缓存消息LPN 周期性唤醒从 Friend 取消息后继续休眠。源码proxy_server.c、proxy_client.c、friend.c、lpn.c低功耗 API 入口在 esp_ble_mesh_low_power_api.c。验证provisioner 示例中手机经 Proxy 连接节点后直接下发指令串口可见消息处理日志节点侧在工程配置中开启 LPN 选项后日志呈周期性 Poll 取消息行为其余时间保持休眠。Client/Server 模型全景标准模型成对提供的能力矩阵蓝牙 Mesh 的能力由 Model模型承载每个模型按 Client / Server 成对提供Client 发起操作Server 持有状态并响应。ESP-BLE-MESH 的标准模型实现位于 models/client/ 与 models/server/API 入口在 api/models/。按功能域分组如下功能域模型Client / Server一句话用途源码位置相关示例GenericOnOff、Level、Default Transition Time开关、等级值、全局过渡时间的设置与读取generic_client.c、generic_server.conoff_modelsGenericPower OnOff含 Setup、Power Level含 Setup上电开关状态与功率等级同上—GenericBattery、LocationLocation 含 Setup电量读取、物理位置读写同上—GenericProperty ClientUser / Admin / Manufacturer Property Server设备属性读写models/server/ 的 generic_server.c—LightingLight Lightness含 Setup绝对亮度调节lighting_client.c、lighting_server.c—LightingLight CTL、Light CTL Temperature含 Setup色温调节同上—LightingLight HSL、Hue、Saturation含 SetupHSL 色彩空间调节同上—LightingLight xyL含 SetupCIE 1931 色坐标与亮度同上—LightingLight LC含 Setup逻辑级别到物理级别映射同上—SensorSensor ClientSensor、Sensor Setup Server传感器数据订阅与属性配置sensor_client.c、sensor_server.csensor_modelsTime and ScenesTime、Scene、SchedulerServer 侧各含 Setup时间同步、场景切换与定时任务time_scene_client.c、time_scene_server.c—两个配套机制state_binding.c 做状态绑定让多个模型共享同一份状态并同步变化例如 Light Lightness 与 Generic Level 联动state_transition.c 做状态迁移在过渡时间内对目标值平滑插值输出渐变而非跳变。Foundation Models系统级模型Foundation 模型负责网络管理与设备配置同样按 Client / Server 成对提供。其中 Configuration Server 的上层消息使用 DevKey 加密而非 AppKey配网完成后无需再为其绑定 AppKey。能力一句话用途源码位置相关示例Configuration Server / Client模型订阅/发布、AppKey 与 NetKey 管理core/ 的 cfg_srv.c、cfg_cli.conoff_models、provisionerHealth Server / Client健康状态上报与查询core/ 的 health_srv.c、health_cli.c—Remote Provisioning Server / Client远程入网Mesh v1.1v1.1/ 的 esp_ble_mesh_rpr_model_api.cremote_provisioningrpr_client / rpr_server / unprov_dev 三角色Directed Forwarding Config Server / Client配置定向转发v1.1v1.1/ 的 esp_ble_mesh_df_model_api.cdirected_forwardingBridge Config Server / Client子网桥接配置v1.1v1.1/ 的 esp_ble_mesh_brc_model_api.c—Private Beacon Server / Client私有信标配置v1.1v1.1/ 的 esp_ble_mesh_prb_model_api.c—On-Demand Private Proxy Server / Client按需私有代理v1.1v1.1/ 的 esp_ble_mesh_odp_model_api.c—SAR Config Server / Client分段重组参数配置v1.1v1.1/ 的 esp_ble_mesh_sar_model_api.c—Solicitation PDU RPL Config Server / Client请求 PDU 重放保护列表配置v1【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考