乐鑫技术交流
直播中

laisvl

8年用户 1027经验值
私信 关注
[问答]

ESP-WIFI-MESH子节点在连接根节点后,根节点重启后改变信道,子节点不能重新组网怎么解决?

根节点是指定的,并且连接到外部路由器。然后所有的子节点使用了esp_mesh_fix_root(true);放弃投票。

现在出现一个问题:在正常路由器,根节点,子节点都连接的情况下,路由器和根节点同时断电,路由器开机后改变信道,再给根节点上电。这个时候子节点和根节点无法连接了。

如果路由器信道不改变,一切正常。

如果子节点未上电,根节点切换信道,子节点上电,也能正常连接。

观察event发现,子节点在未连接根节点的时候,会查找所有信道,查找到后会有一个MESH_EVENT_FIND_NETWORK。
或者如果在mesh连接中改变信道,会有MESH_EVENT_CHANNEL_SWITCH。
但如果mesh失去连接,根节点切换信道后,子节点就不再扫描所有信道了。

不知道问题描述清楚没有,这个问题应该如何去解决?

注:使用的是ESP-WIFI-MESH,非MDF
            

回帖(1)

h1654155275.5669

2024-7-1 15:24:20
在ESP-WIFI-MESH网络中,子节点在连接根节点后,如果根节点重启并改变信道,子节点可能无法重新组网。这是因为子节点在连接过程中可能已经记录了根节点的信道信息,当信道发生变化时,子节点无法自动适应新的信道。

为了解决这个问题,可以采取以下几种方法:

1. **信道同步**:在根节点重启之前,可以通过某种机制通知所有子节点即将发生的信道变化。这样,子节点可以在根节点重启之前或之后立即切换到新的信道。

2. **动态信道检测**:子节点可以定期检测信道变化。如果发现根节点的信道发生变化,子节点可以自动切换到新的信道。这可以通过监听MESH_EVENT_CHANNEL_CHANGE事件来实现。

3. **使用固定信道**:如果可能,可以设置根节点和所有子节点使用固定的信道。这样,即使根节点重启,信道也不会发生变化,从而避免了子节点无法连接的问题。

4. **信道扫描**:如果子节点无法连接到根节点,可以尝试让子节点进行信道扫描,以找到根节点当前所在的信道。这可以通过设置子节点在连接失败后自动进行信道扫描来实现。

5. **重新初始化MESH网络**:在根节点重启并改变信道后,可以重新初始化整个MESH网络。这将导致所有子节点重新加入网络,并自动适应新的信道。

6. **使用外部控制机制**:如果根节点和子节点的信道变化是由外部因素(如路由器)引起的,可以考虑使用外部控制机制来同步信道信息。例如,可以通过智能家居系统或其他网络设备来控制信道变化,并通知所有子节点。

7. **优化MESH_EVENT_FIND_NETWORK事件处理**:在子节点收到MESH_EVENT_FIND_NETWORK事件后,可以优化事件处理逻辑,使其能够更灵活地处理信道变化。例如,可以设置子节点在收到此事件后,尝试连接到所有可能的信道,直到找到根节点为止。

8. **使用MESH_EVENT_CHANNEL_CHANGE事件**:如果MESH连接中发生了信道变化,可以通过监听MESH_EVENT_CHANNEL_CHANGE事件来通知子节点进行信道切换。这样,子节点可以在信道变化时立即适应新的信道。

总之,解决ESP-WIFI-MESH子节点在根节点重启后无法重新组网的问题,需要综合考虑信道同步、动态信道检测、固定信道使用、信道扫描、重新初始化MESH网络、外部控制机制、优化事件处理和使用特定事件等多种方法。根据具体应用场景和需求,可以选择一种或多种方法来实现。
举报

更多回帖

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