通信是物聯(lián)網(wǎng) (IoT) 應(yīng)用中不可或缺的一部分,而針對(duì)不同的應(yīng)用場(chǎng)景,通信需求也不盡相同,從中也能捕捉到這些場(chǎng)景對(duì)網(wǎng)絡(luò)環(huán)境的特殊要求。在如今的工業(yè) 4.0 時(shí)代下,工廠生產(chǎn)線(xiàn)設(shè)備需要實(shí)時(shí)響應(yīng)中央控制器的命令,這就促使該應(yīng)用場(chǎng)景對(duì)超低網(wǎng)絡(luò)延遲有著更高的要求。另一方面,土壤狀況檢測(cè)遠(yuǎn)程傳感器一般都是由電池供電,但由于傳感器在較長(zhǎng)時(shí)間內(nèi)都處于待機(jī)狀態(tài),為了減少能耗延長(zhǎng)使用周期,傳感器僅在傳送數(shù)據(jù)包時(shí)才允許被喚醒。
如今,蜂窩網(wǎng)絡(luò)、無(wú)線(xiàn)連接技術(shù)(比如 Wi-Fi和藍(lán)牙)、有線(xiàn)以太網(wǎng),以及衛(wèi)星等通信技術(shù)廣泛應(yīng)用于各類(lèi)IoT設(shè)備中,但通信協(xié)議則是所有 IoT技術(shù)棧的關(guān)鍵構(gòu)成,唯有通過(guò)特定的通信協(xié)議,IoT設(shè)備才能進(jìn)行數(shù)據(jù)傳輸與交換。
為了滿(mǎn)足當(dāng)下IoT 應(yīng)用的多樣化需求,市面上開(kāi)放了包括 CoAP、XMPP 和 DDS 在內(nèi)的多種協(xié)議,可供各個(gè)應(yīng)用場(chǎng)景按需選擇。其中,消息隊(duì)列遙測(cè)傳輸 (MQTT) 及其衍生協(xié)議 MQTT-SN 正廣泛應(yīng)用在日益普遍的低功耗廣域 (LPWA) 網(wǎng)絡(luò)中。
MQTT協(xié)議
作為一種輕量級(jí)協(xié)議,MQTT 擁有簡(jiǎn)單緊湊的架構(gòu)和較小的代碼占用空間,適用于低成本、低功耗的IoT微控制設(shè)備。MQTT 可在 TCP/IP 協(xié)議上兼容運(yùn)行,專(zhuān)攻延遲較高、質(zhì)量不佳的網(wǎng)絡(luò)環(huán)境。該協(xié)議適用于具有以下通信需求的應(yīng)用:使用極小帶寬 無(wú)線(xiàn)網(wǎng)絡(luò)通信 低功耗 必要時(shí)保證高可靠性 對(duì)處理和內(nèi)存資源的需求很低
MQTT 在 IoT 多種應(yīng)用中都備受青睞,如智能表計(jì)、資產(chǎn)追蹤工具和工業(yè)設(shè)備的互聯(lián)傳感器。憑借對(duì)有限帶寬的高效利用,因此MQTT非常適用于網(wǎng)絡(luò)成本高、功耗大的應(yīng)用場(chǎng)景,例如遠(yuǎn)程傳感器陣列就需要在現(xiàn)場(chǎng)自主運(yùn)行數(shù)年且期間無(wú)需維修。MQTT是多個(gè)客戶(hù)端通過(guò)一個(gè)中央服務(wù)器傳遞信息的多對(duì)多協(xié)議,能高效地將信息分發(fā)給一個(gè)或多個(gè)訂閱者,加之其代碼占用空間小,便使得MQTT成為移動(dòng)應(yīng)用通信的理想之選。
MQTT功能概述
MQTT 基于發(fā)布和訂閱模型,而非“客戶(hù)端-服務(wù)器”模型,它具有兩個(gè)功能實(shí)體——MQTT 服務(wù)器和 MQTT 客戶(hù)端。IoT 網(wǎng)絡(luò)上的任何“事物”,無(wú)論是硬件設(shè)備還是軟件程序,都可以視為 MQTT的 客戶(hù)端。所有的客戶(hù)端并非直接向彼此發(fā)布或訂閱消息,而是向MQTT 服務(wù)器所管理的“主題”來(lái)發(fā)布或訂閱消息。“主題”可理解為電子郵件的收件箱;客戶(hù)端向主題發(fā)布消息,訂閱該主題的其他客戶(hù)端都將收到該消息。
MQTT 服務(wù)器負(fù)責(zé)接收所有已發(fā)布的消息,并需要確保將其傳輸?shù)剿杏嗛喌目蛻?hù)端。消息根據(jù)多個(gè)商定的 QoS 級(jí)別進(jìn)行發(fā)布(見(jiàn)下文)。服務(wù)器還將對(duì)網(wǎng)絡(luò)上的所有 IoT 設(shè)備進(jìn)行驗(yàn)證,進(jìn)而管理連接、會(huì)話(huà)和訂閱。
圖 1:什么是 MQTT
MQTT-SN
MQTT-SN 是 MQTT 的優(yōu)化版本,專(zhuān)為需要提高數(shù)據(jù)傳輸效率和功耗效率的大規(guī)模無(wú)線(xiàn)傳感器網(wǎng)絡(luò)而設(shè)計(jì)。MQTT-SN 主要通過(guò)縮短主題 ID 的長(zhǎng)度來(lái)提升數(shù)據(jù)傳輸效率。這些經(jīng)過(guò)縮短處理的 ID 會(huì)編程到客戶(hù)端和服務(wù)器中,從而減少信息傳遞數(shù)量。
MQTT-SN 中的“鏈路保持機(jī)制”允許設(shè)備進(jìn)入睡眠模式,并在被喚醒時(shí)才可檢索任何排隊(duì)消息。
MQTT核心概念
除了服務(wù)器和客戶(hù)端實(shí)體,MQTT 和 MQTT-SN 運(yùn)行還涉及到如下核心概念:
1.MQTT主題(MQTT Topics)
主題是 MQTT 實(shí)現(xiàn)對(duì)帶寬高效利用的基礎(chǔ),它具有多級(jí)結(jié)構(gòu),如圖 2 所示。MQTT 客戶(hù)端只會(huì)訂閱其所關(guān)注的主題,并且可以使用通配符條目來(lái)訪(fǎng)問(wèn)多個(gè)主題。
圖 2:MQTT 主題(來(lái)源:u-blox)
由于設(shè)備僅接收已訂閱的主題消息,MQTT 主題通過(guò) IoT 網(wǎng)絡(luò)將更加高效地組織數(shù)據(jù)流,從而實(shí)現(xiàn)大規(guī)模應(yīng)用。
2.連接(Connections)
MQTT 客戶(hù)端必須與服務(wù)器建立連接才能發(fā)布或訂閱消息??蛻?hù)端在發(fā)送連接請(qǐng)求時(shí)會(huì)提供其客戶(hù)ID、用戶(hù)名和密碼,隨后服務(wù)器會(huì)確認(rèn)該項(xiàng)請(qǐng)求。而連接請(qǐng)求也可使用如下參數(shù)加以限定:
2.1.MQTT會(huì)話(huà)(Clean Session)- 請(qǐng)求連接并刪除訂閱隊(duì)列中已存儲(chǔ)的任何消息。
2.2.鏈路保持(Keep Alive)- 當(dāng)服務(wù)器或客戶(hù)端未發(fā)送消息時(shí),鏈路保持功能將優(yōu)先確保設(shè)備連接的最長(zhǎng)時(shí)間,從而為處于睡眠模式下的其他電池供電設(shè)備提供支持。在此期間,客戶(hù)端接收到的任何消息都會(huì)由服務(wù)器存儲(chǔ),直到指定時(shí)間結(jié)束。
2.3.睡眠(僅限MQTT-SN)- 在設(shè)備告知服務(wù)器即將進(jìn)入睡眠模式時(shí),服務(wù)器會(huì)在設(shè)備告知的時(shí)間段內(nèi)將設(shè)備訂閱的所有消息排入隊(duì)列。此模式與“鏈路保持”模式的主要區(qū)別在于,服務(wù)器會(huì)無(wú)視QoS 級(jí)別,將所有消息進(jìn)行存儲(chǔ),而在“鏈路保持”模式中則僅存儲(chǔ) QoS 1 和 QoS 2 消息。在睡眠模式時(shí),客戶(hù)端還能在不需要喚醒的情況下刷新其消息隊(duì)列。
3.訂閱
客戶(hù)端可請(qǐng)求訂閱一個(gè)或多個(gè)主題,該請(qǐng)求支持兩種不同的通配符設(shè)置,如圖 3a 和 3b 所示。
單級(jí) (+) 通配符用于替換一個(gè)主題級(jí)別,因此“sensors/+/out”將訂閱以下主題:
sensors/soil/out(傳感器/土壤/輸出)
sensors/water/out(傳感器/水/輸出)
sensors/light/out(傳感器/光/輸出)
圖 3a:?jiǎn)渭?jí)通配符
多級(jí) (#) 通配符用于替換多個(gè)主題級(jí)別,因此這個(gè)通配符可以訂閱以下主題:
sensors/soil/out(傳感器/土壤/輸出)
sensors/soil/in(傳感器/土壤/輸入)
sensors/temperature/out(傳感器/溫度/輸出)
圖 3b:多級(jí)通配符
4.消息服務(wù)質(zhì)量QoS
MQTT 和 MQTT-SN 兩者規(guī)定了消息服務(wù)質(zhì)量 (QoS) 模式,讓發(fā)布者能夠自行定義消息質(zhì)量。我們針對(duì)這些模式進(jìn)行匯總(見(jiàn)表 1),并分享了如何根據(jù)特定應(yīng)用的限制條件來(lái)采用不同的模式。
5.QoS在發(fā)布與訂閱中的區(qū)別
在MQTT 發(fā)布與訂閱操作中, QoS 代表了不同的含義,發(fā)布時(shí)的 QoS 表示消息發(fā)送到服務(wù)端時(shí)使用的 QoS,訂閱時(shí)的 QoS 則表示服務(wù)端向自己轉(zhuǎn)發(fā)消息時(shí)可以使用的最大 QoS。
當(dāng)客戶(hù)端 A 的發(fā)布 QoS 大于客戶(hù)端 B 的訂閱 QoS 時(shí),服務(wù)端向客戶(hù)端 B 轉(zhuǎn)發(fā)消息時(shí)使用的 QoS 為客戶(hù)端 B 的訂閱 QoS。
當(dāng)客戶(hù)端 A 的發(fā)布 QoS 小于客戶(hù)端 B 的訂閱 QoS 時(shí),服務(wù)端向客戶(hù)端 B 轉(zhuǎn)發(fā)消息時(shí)使用的 QoS 為客戶(hù)端 A 的發(fā)布 QoS。
結(jié)論
現(xiàn)如今,MQTT 已廣泛應(yīng)用于包括汽車(chē)、能源、制造業(yè)及電信等多個(gè)關(guān)鍵領(lǐng)域,尤其適用于更窄帶寬的網(wǎng)絡(luò)環(huán)境和更低功耗IoT設(shè)備。為簡(jiǎn)化IoT的開(kāi)發(fā)流程,技術(shù)人員還可根據(jù)自身需求,選擇包括服務(wù)器端與客戶(hù)端在內(nèi)的MQTT測(cè)試工具。
要記住“通信不僅僅是建立連接”。以 u-blox 物聯(lián)網(wǎng)通信即服務(wù)產(chǎn)品組合為例(見(jiàn)圖 4),u-blox MQTT Anywhere、MQTT Here 和 MQTT Now三款產(chǎn)品基于可擴(kuò)展的高性能MQTT服務(wù)器與數(shù)據(jù)流管理器,彼此相輔相成且互為補(bǔ)充,能有效幫助您縮短產(chǎn)品開(kāi)發(fā)周期,簡(jiǎn)化物聯(lián)網(wǎng)設(shè)備與企業(yè)間的數(shù)據(jù)通信。
圖 4:u-blox 物聯(lián)網(wǎng)通信即服務(wù)產(chǎn)品組合
ublox簡(jiǎn)介
瑞士 ublox 公司 (SIX:UBXN) 是為汽車(chē)、工業(yè)和消費(fèi)市場(chǎng)提供定位和無(wú)線(xiàn)通信技術(shù)的領(lǐng)先供應(yīng)商。其解決方案能準(zhǔn)確進(jìn)行人員、車(chē)輛和機(jī)器的定位,并通過(guò)蜂窩網(wǎng)絡(luò)和短程通信網(wǎng)絡(luò)實(shí)現(xiàn)無(wú)線(xiàn)通信。憑借廣泛及多樣化的芯片、模塊和日益擴(kuò)大的產(chǎn)品支持?jǐn)?shù)據(jù)服務(wù)生態(tài)系統(tǒng),ublox 公司在幫助其客戶(hù)針對(duì)物聯(lián)網(wǎng)快速而成本高效地開(kāi)發(fā)創(chuàng)新解決方案方面具有得天獨(dú)厚的優(yōu)勢(shì)。u-blox 公司總部設(shè)在瑞士塔爾維爾,目前在歐洲、亞洲和美國(guó)都設(shè)有辦事處。
請(qǐng)關(guān)注u-blox中國(guó)區(qū)官方微信號(hào)
作者:Eric Heiser,u-blox 高級(jí)副總裁兼產(chǎn)品中心服務(wù)主管
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )