一、MQTT通信協議和工具包簡介
1、MQTT通信等定義:
消息隊列遙測傳輸( 英語:Message Queuing Telemetry Transport , MQTT )是 ISO 標準 (ISO/IEC PRF 20922) 下基于 發布(Publish)/訂閱(Subscribe) 范式的消息協議,可 視為“資 料 傳遞 的 橋梁” 。----摘錄維基百科
2、MQTT通訊示意圖
上圖是MQTT的實際使用案例
將上圖簡化后的系統結構圖如下圖:
3、MQTT系統組成
系統包含兩個部分:
客戶端(Client):需要發布或訂閱消息的終端,可以是智能終端,傳感器,或者是數據庫,主要功能如下:
(1)發布其他客戶端需要訂閱的信息;
(2)訂閱其它客戶端發布的消息;
(3)退訂或刪除應用程序的消息;
(4)斷開與服務器連接。
服務器:(Server/Broker):專門用于進行設備注冊和消息轉發,稱為"消息代理"(Broker),具體有如下功能:
(1)接受來自客戶的網絡連接;
(2)接受客戶發布的應用信息;
(3)處理來自客戶端的訂閱和退訂請求;
(4)向訂閱的客戶轉發應用程序消息。
4、MQTT通信方式:
Client之間的通訊可以是一對一,一對N,也可以是N對一。
二、MQTT通信范例
1、MQTT通訊底層方式
范例提供了2種通訊方式,TCP/IP和websocket,底層都是TCP/IP,不過websocket是對TCP/IP的封裝。
2、MQTT所需工具包
具體安裝包如下圖,在VIPM里面安裝相應的工具包和附加工具包,共享的代碼也包含離線安裝包。
上面工具包里包含了Client和Broker,通過依賴注入的形式,改變通信類型,提供的范例是TCP/IP和websocket兩套通信模式。
其中還可以使用通用的mqtt 調試軟件mosquito調試TCP/IP,但是這個不能調試websocket客戶端。打開命令為 mosquito -d -v.這個調試工具在代碼的共享,也可到網上下載。
三、MQTT通信范例
1、軟件擴展
為了監聽底層通信報文,在項目中創建了兩個類TCP Pro和WebSocket Pro分別繼承Connect Tcp和WebSocketsConnect,分別添加一個Name屬性并重寫Read incoming Bytes和Write Incoming Biytes,使用了我上一章介紹的工具,Consol FGV對實時報文進行監控。
重寫讀者類,監聽報文
重寫后通信接口UML關系圖:
2、為客戶端添加自動斷開后自動停止事件,這里將庫里的私有方法設置成公共方法,然后使用Close Seccion事件來自動停止,如果不想改變工具包,可以刪除相應的代碼不影響整體功能。
將私有文件夾設置乘公共文件夾
3、TCP MQTT范例演示
注意先啟動服務器再啟動客戶端
啟動Broker
啟動Clent1
啟動Clent2
服務端可以看到已經啟動了兩個客戶端。
發布V1消息,訂閱消息V2
發布V2消息,訂閱消息V1
同時訂閱V1,V2兩個消息
可以自行嘗試下取消訂閱相關消息
4、websocket MQTT范例演示
注意先啟動服務器再啟動客戶端
啟動client1
啟動client2
websocketBroker
?
?可以嘗試訂閱和取消訂閱相關消息
5、練習:
是否可以使用這個工具包,開發一個建議的局域網聊天軟件,這樣可以更好的學習這個工具包的用法:)。
四、MQTT通訊原理簡介
1、MQTT啟動和連接
1.1、首先啟動服務器,服務器啟動后會啟動一個異步線程監聽是否有客戶端連接到服務器端口
1.2、啟動客戶端,鏈接到服務器后向服務發送鏈接信息,服務端檢測服務信息正確后返回連接信息,如果不正確就會斷開連接。
1.3、客戶端長期沒有給服務發數據時需要向服務器發送心跳消息,如果不發送超時,服務器會斷開客戶端。
LabVIEW的范例中的服務器沒有這個功能,mosquito服務器有這個功能,需要了解的讀者可以自行嘗試
2、MQTT通信方式
1.1、客戶端需要某個主題A消息時向服務器訂閱主題A,當客戶端0向服務器發送主題A時,訂閱了主題A的客戶端都會收到客戶端0的主題,沒有訂閱的客戶端不會收到主題A。
1.2、當某個客戶端不需要主題A時可取消訂閱主題A。
五、需要安裝的軟件、工具包和庫
1、LabVIEW2015中文版
2、mqtt工具包集合
3、mosquitto服務器安裝包
審核編輯:湯梓紅
-
傳感器
+關注
關注
2548文章
50740瀏覽量
752140 -
通信協議
+關注
關注
28文章
861瀏覽量
40274 -
客戶端
+關注
關注
1文章
290瀏覽量
16662 -
MQTT
+關注
關注
5文章
649瀏覽量
22439
原文標題:LabVIEW的編程之道-MQTT工具包使用詳解
文章出處:【微信號:LabVIEW的編程之道,微信公眾號:LabVIEW的編程之道】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論