乐鑫技术交流
直播中

fejlkel

8年用户 1046经验值
擅长:制造/封装
私信 关注
[问答]

BLE Mesh的node如何暂时退出配网状态?

各位大佬好,请教一个问题,我们目前在开发的一款产品需要实现如下一个功能:某些node角色的设备本来是provisioned,并且持久化配置存储选项CONFIG_BLE_MESH_SETtiNGS设置为了1,我们希望通过对这些设备重新进行快速配网操作,现在我们的处理过程是通过调用esp_ble_mesh_node_local_reset,清除掉本地配网信息后,再调用esp_ble_mesh_node_prov_enable使能配网,即可进行后续的快速配网操作了。我们的问题在于,我们在调用完esp_ble_mesh_node_prov_enable使能配网后,后续的快速配网操作可能因为其他原因取消掉了,这个时候,我们希望这些设备能够重新用原来的配网信息回到provisioned状态,但是在前面调用了esp_ble_mesh_node_local_reset方法后,本地存储的配网信息都删除掉了,导致通过重启芯片也没法重新进入原来网络里的provisioned状态了,请问下可有其他的代替esp_ble_mesh_node_local_reset的方法或者方式,可以实现node暂时退出配网状态,后续如果没有新配网操作的话,可以继续用原来的配网信息维持provisoned状态吗?

我们使用的芯片是esp32-C3
IDF版本版本:2.8.1
Build id:20230207-1119

回帖(1)

Arvinhw

2024-6-11 17:00:42
在这种情况下,您可以使用以下方法来暂时退出配网状态:

1. 首先,确保您已经调用了`esp_ble_mesh_node_local_reset`来清除本地配网信息。

2. 然后,调用`esp_ble_mesh_node_prov_enable`使能配网。

3. 如果您需要暂时退出配网状态,可以调用`esp_ble_mesh_node_prov_disable`函数来禁用配网功能。这将使设备回到非配网状态,但不会清除已存储的配网信息。

4. 当您需要重新进行快速配网操作时,再次调用`esp_ble_mesh_node_prov_enable`使能配网。

示例代码如下:

```c
// 清除本地配网信息
esp_ble_mesh_node_local_reset();

// 使能配网
esp_ble_mesh_node_prov_enable();

// ... 进行快速配网操作 ...

// 如果需要暂时退出配网状态
esp_ble_mesh_node_prov_disable();

// ... 其他操作 ...

// 当需要重新进行快速配网操作时
esp_ble_mesh_node_prov_enable();
```

这样,您可以在需要时暂时退出配网状态,而不影响设备的其他功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分