物聯(lián)網(wǎng)協(xié)議之間有什么差異
MQTT-SN(Sensor Networks)是MQTT協(xié)議的傳感器版本,最早使用在zigBee無線網(wǎng)絡中,主要面對電池供電,有限的處理器能力和存儲能力的設備?;赥CP協(xié)議的MQTT對有些傳感器來說還是負載太重了,這些傳感器可能只有幾十個字節(jié)的內(nèi)存,無法運行TCP協(xié)議。
MQTT-SN和MQTT的不同點
1 協(xié)議運行的層次不同
MQTT運行在TCP層之上,MQTT-SN可以運行在MAC層,IP層和UDP之上。MQTT-SN應用的場景主要是各種低功耗傳感器網(wǎng)絡,需要電池供電,對功耗非常敏感,TCP虛擬長連接需要維持一個定時心跳,對電池來說不是一個好的解決方案。在傳感器網(wǎng)絡中,鏈接可能隨時中斷,TCP連接也要不斷的重新建立連接,這樣對功耗都是大的消耗。
2 QOS增加了-1級別或3
QOS -1 級別在設置的時候QOS flag還是要設置3(“0b11” ),-1僅僅是個稱謂,這個級別僅僅適用在非常簡單的應用中,不需要建立連接或者斷開連接,不需要注冊或訂閱,這時客戶端僅僅是發(fā)送public消息給網(wǎng)關即可。發(fā)布的消息也不需要得到消息確認。
3 訂閱主題方式
MQTT-SN可以使用MQTT的訂閱主題格式,長名字主題如“/beijing/sen1”,也可以使用只有兩個字符的短名字主題如“s1”,還可以使用預先定義好的主題ID如 “1”, 如果不使用長名字主題不能使用通配符。
4 發(fā)布消息
和訂閱主題一樣,可以使用兩個字符的短名字主題或者使用定義好的主題ID。
注意:主題ID的內(nèi)容對不同客戶端來說可能一樣也可能不一樣。比如A傳感器訂閱了主題ID 1 內(nèi)容是/beijing/sen1,B傳感器也訂閱了主題ID1內(nèi)容是/beijing/sen2,他們的內(nèi)容是不一樣的。
5 網(wǎng)絡架構
物聯(lián)網(wǎng)協(xié)議比較:MQTT VS MQTT-SN
MQTT-SN多了一種節(jié)點,就是MQTT-SN網(wǎng)關。網(wǎng)關的作用主要是協(xié)議轉換,把底層的MQTT-SN協(xié)議轉換為MQTT的協(xié)議格式。
如上圖所示,網(wǎng)關有兩種,一種透明網(wǎng)關,僅僅是起透傳作用做簡單的拆包組包,另一個是聚合網(wǎng)關,把多個節(jié)點聚合到一起傳給消息代理。
6 網(wǎng)關發(fā)現(xiàn)
在MQTT-SN中,客戶端不用去記憶網(wǎng)關的地址,網(wǎng)關會定期的廣播ADVERTISE信息,里面有自己的地址,客戶端接收地址,當有多個網(wǎng)關時候,網(wǎng)關需要帶上自己的網(wǎng)關ID,由客戶端來決定連接哪一個,任何時候,一個客戶端只能連接一個網(wǎng)關??蛻舳艘部梢园l(fā)送網(wǎng)關查詢(SEARCHGW信息),這時候網(wǎng)關將回應GWINFO
信息。防止產(chǎn)生廣播風暴有兩個參數(shù),網(wǎng)關查詢報文的發(fā)送需要等待一個隨機時間,發(fā)送的網(wǎng)關查詢經(jīng)過的網(wǎng)關條數(shù)一般設為1,也就是說SEARCHGW信息不能跨網(wǎng)關傳輸。 這樣網(wǎng)關可以靈活配置,不需要固定某一個網(wǎng)關。
7 支持設備睡眠
如果設備睡眠,則MQTT-SN網(wǎng)關先把消息存儲起來,等設備醒來再下發(fā)。這個有點像手機短信,手機關機后,短信存儲在運營商的短信交換中心,手機開機后再下發(fā)。
來源:物聯(lián)網(wǎng)電子世界