一、什么是MQTT
物聯(lián)網(wǎng)(IoT)發(fā)展迅猛,傳感器、網(wǎng)關(guān)、云平臺之間如何高效通信成了核心問題。MQTT(Message Queuing Telemetry Transport)作為一種輕量級的消息傳輸協(xié)議,近年來被廣泛應用于智能家居、工業(yè)控制、車聯(lián)網(wǎng)等場景。
MQTT 是一種基于發(fā)布/訂閱(Pub/Sub)模式的輕量級消息協(xié)議,設(shè)計初衷是為低帶寬、不穩(wěn)定網(wǎng)絡環(huán)境下的設(shè)備通信而生。它更像是廣播電臺:你訂閱頻道,誰在頻道里發(fā)布了消息你就能收到,中間由一個叫做 Broker 的中間人來轉(zhuǎn)發(fā)消息。
二、MQTT 的三大角色
Broker(消息代理)
Broker 就是 MQTT 網(wǎng)絡的大腦。客戶端不互相通信,所有消息都通過 Broker 中轉(zhuǎn)。主流 Broker 有
Mosquitto(輕量、適合嵌入式開發(fā))
EMQX(高性能、支持百萬連接)
HiveMQ、RabbitMQ(企業(yè)級)
Publisher(發(fā)布者)
發(fā)布消息的人,比如你家的溫濕度傳感器,每隔 5 秒發(fā)布一次環(huán)境數(shù)據(jù)。
Subscriber(訂閱者)
對某類消息感興趣的接收者,比如你手機里的 APP 訂閱了“家里客廳/溫度”,只要 Broker 收到這個主題的消息,就會推送給你。
三、核心機制-主題、保留消息
主題(Topic)
MQTT 的消息沒有標題,靠的是主題(Topic)分類。
保留消息(Retained Message)
比如你家的空調(diào)狀態(tài)是“開啟”,訂閱者上線時希望立刻知道當前狀態(tài),可以發(fā)布一條“保留消息”,Broker 會記住它,并在有人訂閱時立刻推送。
四、GraniStudio是否支持MQTT
GraniStudio平臺是蘇州格拉尼視覺科技有限公司推出的對標Labview的零代碼工控開發(fā)平臺,該平臺支持MQTT服務器,客戶端,發(fā)送文本,接收文本和關(guān)閉MQTT通信。這幾個工具算子的介紹如下:
MQTT服務器
MQTT服務器屬于資源管理器算子部分,歸屬于資源管理器通用工具



通過主界面可配置IP地址和端口號.然后選配高級設(shè)置是否啟用密碼功能,連接時是否需要驗證賬號密碼,并在列表中支持顯示客戶端連接列表和主題列表,消息列表方便用戶調(diào)試使用。
操作示例
步驟一、創(chuàng)建IP地址和端口號,一定要注意IP格式如:127.0.0.1 默認端口號:1883

步驟二、如輸入IP地址格式不正確將出現(xiàn)彈窗提示。

步驟三、如需要客戶端連接時需要輸入正確的賬號和密碼,就需要開啟高級設(shè)置,設(shè)置連接驗證,用戶名和密碼。

步驟四、設(shè)置完畢后點擊開啟服務即可。

步驟五、打開MQTT客戶端測試工具。注意客戶端IP為自動分配

步驟六、點擊連接

連接不成功原因是因為服務器那邊開啟了連接驗證,所以需要輸入正確的驗證信息才能連接成功。
步驟七、服務器列表中已顯示該客戶端的連接

步驟八、再次開啟客戶端連接該服務器

列表中已顯示兩個客戶端的連接,
步驟九、客戶端1訂閱主題,客戶端2發(fā)布主題

步驟十、客戶端1顯示客戶端2發(fā)布主題。

從上圖可看出 MQTT服務器是一個代理服務,不同客戶端之間的通信。

一個客戶端可訂閱多個主題,。
MQTT客戶端
MQTT客戶端屬于資源管理器算子部分,歸屬于資源管理器通用工具



算子內(nèi)部自動分配客戶端ID,通過主界面輸入MQTT服務器IP地址和端口號可連接MQTT服務器,然后選配高級設(shè)置是否啟用密碼功能,連接時是否需要驗證賬號密碼,并支持顯示接收消息列表,通過界面可訂閱主題和發(fā)布主題,實現(xiàn)與MQTT服務器與MQTT其他客戶端的通信。
操作示例
步驟一、打開客戶端算子后將默認配分客戶端ID,無法修改

步驟二、配置IP和端口號,IP格式:127.0.0.1 端口號:1883 默認端口號:1883

步驟三、是否開啟高級設(shè)置,開啟高級設(shè)置需輸入用戶名和密碼,,未開啟將無需輸入, 默認未開啟。如果服務器開啟用戶名驗證將開啟。

步驟四、點擊連接按鈕


即可在連接列表中顯示該客戶端連接信息
步驟五、點擊斷開按鈕


點擊斷開連接后服務器列表那會刷新,當前客戶端處于未連接狀態(tài)
步驟六、訂閱主題

服務器將顯示客戶端訂閱列表。
使用客戶端2發(fā)布該主題

客戶端2發(fā)布主題并附加消息Test
步驟七、發(fā)布主題消息

客戶端2訂閱T1主題, 客戶端1發(fā)布主題T1

MQTT發(fā)送文本
MQTT發(fā)送文本屬于主任務設(shè)計器算子部分,歸屬于主任務設(shè)計器通用工具



算子內(nèi)部無需連接操作,通過引用依賴引用MQTT客戶端對象即可,實現(xiàn)代理客戶端對象發(fā)布主題消息功能,通過界面配置可配置主題,可引用主題和手動輸入主題,也可引用消息和手動輸入消息兩種方式。
需要發(fā)送消息必須有主題,需要發(fā)布主題必須消息,如用戶輸入主題當前客戶端未發(fā)布將自動發(fā)布該主題消息。
操作示例

創(chuàng)建服務器調(diào)試工具。

GS MQTT客戶端連接該服務器

創(chuàng)建兩個客戶端,模擬兩個客戶端之間通信
步驟一、引用MQTT 客戶端 對象

步驟二、使用自定義主題方式,輸入文本 R1

步驟三、使用自定義消息方式,輸入消息 Test

步驟四、注意事項主題和消息兩者均不可為空。
步驟五、點擊執(zhí)行按鈕


服務器已接收到MQTT客戶端發(fā)布主題和消息

客戶端2訂閱R1主題,與 GS MQTT客戶端建立連接

訂閱主題成功, 將剛GS MQTT客戶端發(fā)布主題和消息發(fā)送至該客戶端中
步驟六、使用引用方式

使用局部變量定義兩個變量,一個主題一個消息變量 均是GString類型
步驟七、引用主題方式

步驟八、引用消息方式


因為客戶端2訂閱R1主題,發(fā)送文本發(fā)送的主題為R1 消息為GRaniTest。正常發(fā)送主題消息
MQTT接收文本
MQTT接收文本屬于主任務設(shè)計器算子部分,歸屬于主任務設(shè)計器通用工具



算子內(nèi)部無需連接操作,通過引用依賴引用MQTT服務器或客戶端對象即可,實現(xiàn)代理接收MQTT服務器或客戶端消息功能,通過界面選配項可配置接收超時功能,如在設(shè)置時長內(nèi)未接收文本消息將視為超時,如未打開超時功能將默認持續(xù)不斷等待接收,直到接收到文本即可。
時長單位設(shè)置以毫秒為單位。
接收到文本將設(shè)置為本算子輸出項,輸出結(jié)果字符串類型未字符串類型,字節(jié)類型未Byte字節(jié)類型。
操作示例
步驟一、訂閱客戶端主題 T1

步驟二、接收文本選擇引用對象

步驟三、是否打開高級設(shè)置,默認 未打開

未打開高級設(shè)置將一直等待文本接收
步驟四、是否打開高級設(shè)置,打開超時設(shè)置需要設(shè)置一個時長,如在規(guī)定時間內(nèi)為未接收到文本消息,則視為超時,否則將接收文本顯示到輸出界面

打開高級設(shè)置將在規(guī)定時間段內(nèi)接收文本

3000毫秒內(nèi)未接收到文本
步驟五、主動和被動觸發(fā),當引用一個MQTT通信對象時,內(nèi)部已為此通信建立起一個接收事件,如果用戶點擊執(zhí)行按鈕為主動觸發(fā)等待接收功能,如果是程序在流程中正常執(zhí)行到此處為被動觸發(fā)等待接收功能,一般主動觸發(fā)適用于調(diào)試階段的使用,被動出發(fā)適用于在自動流程中接收信號的使用。


主動執(zhí)行接收


被動接收

被動接收
MQTT關(guān)閉
MQTT關(guān)閉屬于主任務設(shè)計器算子部分,歸屬于主任務設(shè)計器通用工具



MQTT關(guān)閉算子將代理MQTT服務器或客戶端關(guān)閉通信功能,可通過引用依賴配置MQTT服務器或客戶端,如內(nèi)部引用MQTT服務器將停止監(jiān)聽,禁止發(fā)送消息和客戶端的連接.如為MQTT客戶端將停止需MQTT服務器的連接,停止發(fā)送消息。
操作示例
步驟一、使用拖拉拽方式在主任務設(shè)計器工具箱中將關(guān)閉MQTT通信算子創(chuàng)建在畫布中。

步驟二、選擇引用依賴框配置一個MQTT類相關(guān)算子如:GMQTT服務器,GMQTT客戶端。暫時支持類型(GMQTTClient,GMQTTServer)),兩種數(shù)據(jù)類型。

步驟三、算子執(zhí)行成功,可繼續(xù)使用初始化算子再次初始化方可繼續(xù)使用標刻功能。

五、為什么選擇GraniStudio MQTT通信協(xié)議?
保持 ClientID 唯一,防止連接互踢
合理規(guī)劃主題命名,避免混亂
連接長時間保持,不必頻繁重連
消息機制更靈活,低功耗設(shè)備友好
更適合物聯(lián)網(wǎng)中“一對多”或“多對多”的場景
審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2948文章
47988瀏覽量
417232 -
MQTT
+關(guān)注
關(guān)注
5文章
734瀏覽量
25221
發(fā)布評論請先 登錄
基于LuatOS的MQTT物聯(lián)網(wǎng)通信全解
MQTT網(wǎng)關(guān)支持5G通信嗎
北向MQTT工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)是什么
ESP32-C3 mqtt操作實踐
使用paho-mqtt里例程連接服務器失敗怎么解決?
物聯(lián)網(wǎng)MQTT網(wǎng)關(guān)是什么
GraniStudio :MQTT 協(xié)議的深度剖析
MQTT網(wǎng)關(guān)具備邊緣計算功能嗎?有什么功能?
精通 MQTT:消息隊列遙測傳輸指南!
MQTT介紹
評論