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