一、什么是MQTT
物聯網(IoT)發展迅猛,傳感器、網關、云平臺之間如何高效通信成了核心問題。MQTT(Message Queuing Telemetry Transport)作為一種輕量級的消息傳輸協議,近年來被廣泛應用于智能家居、工業控制、車聯網等場景。
MQTT 是一種基于發布/訂閱(Pub/Sub)模式的輕量級消息協議,設計初衷是為低帶寬、不穩定網絡環境下的設備通信而生。它更像是廣播電臺:你訂閱頻道,誰在頻道里發布了消息你就能收到,中間由一個叫做 Broker 的中間人來轉發消息。
二、MQTT 的三大角色
Broker(消息代理)
Broker 就是 MQTT 網絡的大腦。客戶端不互相通信,所有消息都通過 Broker 中轉。主流 Broker 有
Mosquitto(輕量、適合嵌入式開發)
EMQX(高性能、支持百萬連接)
HiveMQ、RabbitMQ(企業級)
Publisher(發布者)
發布消息的人,比如你家的溫濕度傳感器,每隔 5 秒發布一次環境數據。
Subscriber(訂閱者)
對某類消息感興趣的接收者,比如你手機里的 APP 訂閱了“家里客廳/溫度”,只要 Broker 收到這個主題的消息,就會推送給你。
三、核心機制-主題、保留消息
主題(Topic)
MQTT 的消息沒有標題,靠的是主題(Topic)分類。
保留消息(Retained Message)
比如你家的空調狀態是“開啟”,訂閱者上線時希望立刻知道當前狀態,可以發布一條“保留消息”,Broker 會記住它,并在有人訂閱時立刻推送。
四、GraniStudio是否支持MQTT
GraniStudio平臺是蘇州格拉尼視覺科技有限公司推出的對標Labview的零代碼工控開發平臺,該平臺支持MQTT服務器,客戶端,發送文本,接收文本和關閉MQTT通信。這幾個工具算子的介紹如下:
MQTT服務器
MQTT服務器屬于資源管理器算子部分,歸屬于資源管理器通用工具
通過主界面可配置IP地址和端口號.然后選配高級設置是否啟用密碼功能,連接時是否需要驗證賬號密碼,并在列表中支持顯示客戶端連接列表和主題列表,消息列表方便用戶調試使用。
操作示例
步驟一、創建IP地址和端口號,一定要注意IP格式如:127.0.0.1 默認端口號:1883
步驟二、如輸入IP地址格式不正確將出現彈窗提示。
步驟三、如需要客戶端連接時需要輸入正確的賬號和密碼,就需要開啟高級設置,設置連接驗證,用戶名和密碼。
步驟四、設置完畢后點擊開啟服務即可。
步驟五、打開MQTT客戶端測試工具。注意客戶端IP為自動分配
步驟六、點擊連接
連接不成功原因是因為服務器那邊開啟了連接驗證,所以需要輸入正確的驗證信息才能連接成功。
步驟七、服務器列表中已顯示該客戶端的連接
步驟八、再次開啟客戶端連接該服務器
列表中已顯示兩個客戶端的連接,
步驟九、客戶端1訂閱主題,客戶端2發布主題
步驟十、客戶端1顯示客戶端2發布主題。
從上圖可看出 MQTT服務器是一個代理服務,不同客戶端之間的通信。
一個客戶端可訂閱多個主題,。
MQTT客戶端
MQTT客戶端屬于資源管理器算子部分,歸屬于資源管理器通用工具
算子內部自動分配客戶端ID,通過主界面輸入MQTT服務器IP地址和端口號可連接MQTT服務器,然后選配高級設置是否啟用密碼功能,連接時是否需要驗證賬號密碼,并支持顯示接收消息列表,通過界面可訂閱主題和發布主題,實現與MQTT服務器與MQTT其他客戶端的通信。
操作示例
步驟一、打開客戶端算子后將默認配分客戶端ID,無法修改
步驟二、配置IP和端口號,IP格式:127.0.0.1 端口號:1883 默認端口號:1883
步驟三、是否開啟高級設置,開啟高級設置需輸入用戶名和密碼,,未開啟將無需輸入, 默認未開啟。如果服務器開啟用戶名驗證將開啟。
步驟四、點擊連接按鈕
即可在連接列表中顯示該客戶端連接信息
步驟五、點擊斷開按鈕
點擊斷開連接后服務器列表那會刷新,當前客戶端處于未連接狀態
步驟六、訂閱主題
服務器將顯示客戶端訂閱列表。
使用客戶端2發布該主題
客戶端2發布主題并附加消息Test
步驟七、發布主題消息
客戶端2訂閱T1主題, 客戶端1發布主題T1
MQTT發送文本
MQTT發送文本屬于主任務設計器算子部分,歸屬于主任務設計器通用工具
算子內部無需連接操作,通過引用依賴引用MQTT客戶端對象即可,實現代理客戶端對象發布主題消息功能,通過界面配置可配置主題,可引用主題和手動輸入主題,也可引用消息和手動輸入消息兩種方式。
需要發送消息必須有主題,需要發布主題必須消息,如用戶輸入主題當前客戶端未發布將自動發布該主題消息。
操作示例
創建服務器調試工具。
GS MQTT客戶端連接該服務器
創建兩個客戶端,模擬兩個客戶端之間通信
步驟一、引用MQTT 客戶端 對象
步驟二、使用自定義主題方式,輸入文本 R1
步驟三、使用自定義消息方式,輸入消息 Test
步驟四、注意事項主題和消息兩者均不可為空。
步驟五、點擊執行按鈕
服務器已接收到MQTT客戶端發布主題和消息
客戶端2訂閱R1主題,與 GS MQTT客戶端建立連接
訂閱主題成功, 將剛GS MQTT客戶端發布主題和消息發送至該客戶端中
步驟六、使用引用方式
使用局部變量定義兩個變量,一個主題一個消息變量 均是GString類型
步驟七、引用主題方式
步驟八、引用消息方式
因為客戶端2訂閱R1主題,發送文本發送的主題為R1 消息為GRaniTest。正常發送主題消息
MQTT接收文本
MQTT接收文本屬于主任務設計器算子部分,歸屬于主任務設計器通用工具
算子內部無需連接操作,通過引用依賴引用MQTT服務器或客戶端對象即可,實現代理接收MQTT服務器或客戶端消息功能,通過界面選配項可配置接收超時功能,如在設置時長內未接收文本消息將視為超時,如未打開超時功能將默認持續不斷等待接收,直到接收到文本即可。
時長單位設置以毫秒為單位。
接收到文本將設置為本算子輸出項,輸出結果字符串類型未字符串類型,字節類型未Byte字節類型。
操作示例
步驟一、訂閱客戶端主題 T1
步驟二、接收文本選擇引用對象
步驟三、是否打開高級設置,默認 未打開
未打開高級設置將一直等待文本接收
步驟四、是否打開高級設置,打開超時設置需要設置一個時長,如在規定時間內為未接收到文本消息,則視為超時,否則將接收文本顯示到輸出界面
打開高級設置將在規定時間段內接收文本
3000毫秒內未接收到文本
步驟五、主動和被動觸發,當引用一個MQTT通信對象時,內部已為此通信建立起一個接收事件,如果用戶點擊執行按鈕為主動觸發等待接收功能,如果是程序在流程中正常執行到此處為被動觸發等待接收功能,一般主動觸發適用于調試階段的使用,被動出發適用于在自動流程中接收信號的使用。
主動執行接收
被動接收
被動接收
MQTT關閉
MQTT關閉屬于主任務設計器算子部分,歸屬于主任務設計器通用工具
MQTT關閉算子將代理MQTT服務器或客戶端關閉通信功能,可通過引用依賴配置MQTT服務器或客戶端,如內部引用MQTT服務器將停止監聽,禁止發送消息和客戶端的連接.如為MQTT客戶端將停止需MQTT服務器的連接,停止發送消息。
操作示例
步驟一、使用拖拉拽方式在主任務設計器工具箱中將關閉MQTT通信算子創建在畫布中。
步驟二、選擇引用依賴框配置一個MQTT類相關算子如:GMQTT服務器,GMQTT客戶端。暫時支持類型(GMQTTClient,GMQTTServer)),兩種數據類型。
步驟三、算子執行成功,可繼續使用初始化算子再次初始化方可繼續使用標刻功能。
五、為什么選擇GraniStudio MQTT通信協議?
保持 ClientID 唯一,防止連接互踢
合理規劃主題命名,避免混亂
連接長時間保持,不必頻繁重連
消息機制更靈活,低功耗設備友好
更適合物聯網中“一對多”或“多對多”的場景
審核編輯 黃宇
-
物聯網
+關注
關注
2930文章
46219瀏覽量
392198 -
MQTT
+關注
關注
5文章
682瀏覽量
23706
發布評論請先 登錄
精通 MQTT:消息隊列遙測傳輸指南!

在 MQTT 回調處理程序中遇到了隨機 MQTT 斷開連接的問題,怎么解決?
如何在MQTT中發布和訂閱實體
MQTT為何成為物聯網協議
MQTT物聯網平臺有哪些?有哪些功能?

基于MQTT協議的車云通信設計

低功耗4G模組:MQTT通信功能
白嫖篇:4G 模組 MQTT 通信功能!

MQTT物聯網云平臺有什么功能
MQTT智能網關接入物聯網平臺:實現高效連接與數據交互
MQTT協議網關的工作原理及功能特性

MQTT網關:物聯網中的關鍵橋梁

基于MQTT協議云平臺的Modbus轉MQTT網關

評論