使用手機配網(wǎng)例程中,如果直接本地復位mesh網(wǎng)絡(luò)后,再次配網(wǎng)有可能會分配相同的地址,如果不允許網(wǎng)絡(luò)中存在相同地址就會導致通信不上,需要斷電重新上電一次,允許相同地址分包功能又不開用,請問刪除節(jié)點的后怎么刪除另一個節(jié)點上保存的信息而不是需要掉電重啟?
復位mesh網(wǎng)絡(luò)重新是想要改變某些參數(shù)嗎?
當MCU收到命令要用同一地址復位mesh網(wǎng)絡(luò)時,配網(wǎng)接口bt_mesh_provision()的幾個參數(shù),可以先本地記錄下來到falsh中。如果各個Key不變,那么注意iv index和seq num這兩個參數(shù)要提前保存記錄。
bt_mesh_iv_index_get() 、bt_mesh_seq_get()接口用于查詢數(shù)值。
bt_mesh_seq_set()接口用于在配網(wǎng)后恢復seq num,可以+60個單位恢復。
現(xiàn)在做的MESH網(wǎng)絡(luò)是用WCH Mesh APP來配網(wǎng)的,有時候需要刪除設(shè)備重新配網(wǎng),直接設(shè)備上通過按鍵去調(diào)用刪除mesh配網(wǎng)信息,下一次再用WCH Mesh APP來使用原來的地址配網(wǎng)就會跟其他設(shè)備通信不上,兩個設(shè)備斷電重啟一下才能正常。
bt_mesh_seq_set()是在bt_mesh_provision()之前使用還是之后設(shè)置?
調(diào)用bt_mesh_provision默認是配置iv index為0,當網(wǎng)絡(luò)中的iv index更新后,需要新配網(wǎng)的節(jié)點接收到安全廣播,同步iv index,才可以向其他節(jié)點發(fā)包。
復位前記錄一下iv index/seq num,使用同一個mesh地址復位mesh網(wǎng)絡(luò)時,在bt_mesh_provision()之后恢復復位前的iv index/seq num。
bt_mesh_seq_set()是在bt_mesh_provision()之后調(diào)用。
“兩個設(shè)備斷電重啟一下才能正常” 檢查一下RPL是否被保存在flash中。判斷seq num是否過期的記錄在RPL隊列中,可能是因為RPL只存儲于ram中,復位后ram丟失,故收包方可以通過seq num判斷而上報數(shù)據(jù)到應(yīng)用層。
1、復位前保存iv index/seq num值。
2、執(zhí)行bt_mesh_provision()進行重新配網(wǎng)。
3、執(zhí)行bt_mesh_seq_set(),恢復之前保存的seq num值。
執(zhí)行的流程是這樣嗎?現(xiàn)在好像還是不行。另一個設(shè)備可以向這個設(shè)備發(fā)數(shù)據(jù),但是重新執(zhí)行配網(wǎng)的這個設(shè)備不能向另一臺設(shè)備發(fā)送數(shù)據(jù)。RPL是保存在ram中的。
沒問題。郵件溝通一下zhaiyw@wch.cn,協(xié)助排查。