物聯網協議比較:MQTT VS MQTT-SN

物聯網協議比較:MQTT VS MQTT-SN

MQTT-SN(Sensor Networks)是MQTT協議的傳感器版本,最早使用在zigBee無線網絡中,主要面對電池供電,有限的處理器能力和存儲能力的設備。基於TCP協議的MQTT對有些傳感器來說還是負載太重了,這些傳感器可能只有幾十個字節的內存,無法運行TCP協議。

MQTT-SN和MQTT的不同點

1 協議運行的層次不同

MQTT運行在TCP層之上,MQTT-SN可以運行在MAC層,IP層和UDP之上。MQTT-SN應用的場景主要是各種低功耗傳感器網絡,需要電池供電,對功耗非常敏感,TCP虛擬長連接需要維持一個定時心跳,對電池來說不是一個好的解決方案。在傳感器網絡中,鏈接可能隨時中斷,TCP連接也要不斷的重新建立連接,這樣對功耗都是大的消耗。

物聯網協議比較:MQTT VS MQTT-SN

2 QOS增加了-1級別或3

QOS -1 級別在設置的時候QOS flag還是要設置3(“0b11” ),-1僅僅是個稱謂,這個級別僅僅適用在非常簡單的應用中,不需要建立連接或者斷開連接,不需要註冊或訂閱,這時客戶端僅僅是發送public消息給網關即可。發佈的消息也不需要得到消息確認。

3 訂閱主題方式

MQTT-SN可以使用MQTT的訂閱主題格式,長名字主題如“/beijing/sen1”,也可以使用只有兩個字符的短名字主題如“s1”,還可以使用預先定義好的主題ID如 "1", 如果不使用長名字主題不能使用通配符。

4 發佈消息

和訂閱主題一樣,可以使用兩個字符的短名字主題或者使用定義好的主題ID。

注意:主題ID的內容對不同客戶端來說可能一樣也可能不一樣。比如A傳感器訂閱了主題ID 1 內容是/beijing/sen1,B傳感器也訂閱了主題ID1內容是/beijing/sen2,他們的內容是不一樣的。

5 網絡架構

物聯網協議比較:MQTT VS MQTT-SN

MQTT-SN多了一種節點,就是MQTT-SN網關。網關的作用主要是協議轉換,把底層的MQTT-SN協議轉換為MQTT的協議格式。

物聯網協議比較:MQTT VS MQTT-SN

如上圖所示,網關有兩種,一種透明網關,僅僅是起透傳作用做簡單的拆包組包,另一個是聚合網關,把多個節點聚合到一起傳給消息代理。

6 網關發現

在MQTT-SN中,客戶端不用去記憶網關的地址,網關會定期的廣播ADVERTISE信息,裡面有自己的地址,客戶端接收地址,當有多個網關時候,網關需要帶上自己的網關ID,由客戶端來決定連接哪一個,任何時候,一個客戶端只能連接一個網關。客戶端也可以發送網關查詢(SEARCHGW信息),這時候網關將回應GWINFO

信息。防止產生廣播風暴有兩個參數,網關查詢報文的發送需要等待一個隨機時間,發送的網關查詢經過的網關條數一般設為1,也就是說SEARCHGW信息不能跨網關傳輸。 這樣網關可以靈活配置,不需要固定某一個網關。

7 支持設備睡眠

如果設備睡眠,則MQTT-SN網關先把消息存儲起來,等設備醒來再下發。這個有點像手機短信,手機關機後,短信存儲在運營商的短信交換中心,手機開機後再下發。


分享到:


相關文章: