MESH中普通節(jié)點通信問題

很疑惑,普通節(jié)點自身不存儲整個網(wǎng)絡(luò)里其他節(jié)點的信息,那么如何使一個普通節(jié)點向其他節(jié)點發(fā)送消息呢?

又或者說,這種需求不大,沒有相應(yīng)的功能,需要用戶自行編寫邏輯.

您好,mesh網(wǎng)絡(luò)的數(shù)據(jù)包都走廣播,本身就支持普通節(jié)點之間互相傳數(shù)據(jù),前提是普通節(jié)點知道向某個地址發(fā)包。

如果目標(biāo)地址是單播地址,那么發(fā)包方需要先知道收包方的地址,那需要中心節(jié)點轉(zhuǎn)達(dá),或是其他手段比如說組播和全體廣播來得知收包方地址;

如果目標(biāo)地址是組播地址,那么可以利用地址訂閱的功能來實現(xiàn),訂閱地址一般由管理員或是代碼里預(yù)先配置好,比如說ABC三個節(jié)點都訂閱了組播地址X,那么節(jié)點D可以直接向地址X發(fā)包,ABC三個節(jié)點都可以收到。


最近在使用MESH中,發(fā)現(xiàn)不同于BLE連接, 走廣播層的MESH網(wǎng)絡(luò)在配網(wǎng)節(jié)點RESET后,網(wǎng)絡(luò)中的普通節(jié)點該怎樣識別配網(wǎng)者掉線問題呢?想到一種使用心跳包的機制,但是通過廣播層這種多對多的機制,并不適用。請問有更好的解決方案么,還是說在常見的方案中,需求并不大


心跳包可以加,不過鑒于mesh網(wǎng)絡(luò)的小吞吐量,心跳包的頻次不可太高,故判斷掉線的實時性不會很好,要根據(jù)實際節(jié)點數(shù)量和發(fā)包頻次來安排,比如說100個普通節(jié)點+一個中心節(jié)點,安排每個普通節(jié)點1s一次心跳包,那么中心節(jié)點承載不了的,可以考慮5分鐘一次心跳包或者更久的間隔;中心節(jié)點收到心跳包給普通節(jié)點回包,普通節(jié)點沒有拿到回包則判斷中心節(jié)點異常或是通信異常。

對于目標(biāo)節(jié)點有周期性發(fā)包的情況,本節(jié)點也可以讀LPR來間接判斷目標(biāo)節(jié)點有沒有掉線。比如說A節(jié)點會收到B節(jié)點周期性的包,已經(jīng)記錄在A節(jié)點的RPL中;A節(jié)點可以每隔一段時間查看RPL中B節(jié)點的包序列號是否有增長來間接判斷B節(jié)點的在線情況。中心節(jié)點一般使用0x01作為網(wǎng)絡(luò)地址;RPL獲取接口函數(shù):bt_mesh_rpl_list_get。


好的,感謝大佬



CH57X有沒有heartbeat模型


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频