使用手机配网例程中,如果直接本地复位mesh网络后,再次配网有可能会分配相同的地址,如果不允许网络中存在相同地址就会导致通信不上,需要断电重新上电一次,允许相同地址分包功能又不开用,请问删除节点的后怎么删除另一个节点上保存的信息而不是需要掉电重启?
复位mesh网络重新是想要改变某些参数吗?
当MCU收到命令要用同一地址复位mesh网络时,配网接口bt_mesh_provision()的几个参数,可以先本地记录下来到falsh中。如果各个Key不变,那么注意iv index和seq num这两个参数要提前保存记录。
bt_mesh_iv_index_get() 、bt_mesh_seq_get()接口用于查询数值。
bt_mesh_seq_set()接口用于在配网后恢复seq num,可以+60个单位恢复。
现在做的MESH网络是用WCH Mesh APP来配网的,有时候需要删除设备重新配网,直接设备上通过按键去调用删除mesh配网信息,下一次再用WCH Mesh APP来使用原来的地址配网就会跟其他设备通信不上,两个设备断电重启一下才能正常。
bt_mesh_seq_set()是在bt_mesh_provision()之前使用还是之后设置?
调用bt_mesh_provision默认是配置iv index为0,当网络中的iv index更新后,需要新配网的节点接收到安全广播,同步iv index,才可以向其他节点发包。
复位前记录一下iv index/seq num,使用同一个mesh地址复位mesh网络时,在bt_mesh_provision()之后恢复复位前的iv index/seq num。
bt_mesh_seq_set()是在bt_mesh_provision()之后调用。
“两个设备断电重启一下才能正常” 检查一下RPL是否被保存在flash中。判断seq num是否过期的记录在RPL队列中,可能是因为RPL只存储于ram中,复位后ram丢失,故收包方可以通过seq num判断而上报数据到应用层。