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