1.項目介紹
本項目基于物聯(lián)量平臺遠程的視頻監(jiān)控項目,通過MQTT協(xié)議實現(xiàn)兩個設備間的數(shù)據上報與訂閱。通過這個項目來演示,兩個MQTT設備如何互相訂閱,進行消息流轉。在阿里云服務器上創(chuàng)建2個設備,分為為設備A和設備B;設備A負責采集本地攝像頭畫面上傳,設備B負責接收設備A上傳的數(shù)據然后解析顯示出來。在阿里云服務器上需要配置云產品流轉,讓設備A的數(shù)據上傳后自動發(fā)送給設備B。這樣就完成了視頻畫面數(shù)據的流轉。不過因為阿里云的最大數(shù)據限制,每次最大發(fā)送10240字節(jié)的數(shù)據。
1.1 硬件平臺
操作系統(tǒng):Ubuntu18.04
硬件設備:電腦自帶或USB免驅攝像頭(V4L2框架)
服務器:阿里云物聯(lián)網平臺(基于MQTT協(xié)議)
圖像渲染:GTK2.0
1.2 開發(fā)流程
設備A:獲取攝像頭的數(shù)據–>縮放成240*320–>編碼成JPEG格式—>base64-編碼–>組合成MQTT報文–>發(fā)布到服務器。
??設備B:訂閱設備A上傳的數(shù)據–>base64解碼–>解碼JPEG數(shù)據格式–>GTK圖像渲染。
2.MQTT協(xié)議介紹
MQTT(消息隊列遙測傳輸)是ISO 標準(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議。它工作在 TCP/IP協(xié)議族上,是為硬件性能低下的遠程設備以及網絡狀況糟糕的情況下而設計的發(fā)布/訂閱型消息協(xié)議,為此,它需要一個消息中間件?。
MQTT是一個基于客戶端-服務器的消息發(fā)布/訂閱傳輸協(xié)議。由IBM在1999年發(fā)布。MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中,作為一種低開銷、低帶寬占用的即時通訊協(xié)議,使其在物聯(lián)網、小型設備、移動應用等方面有較廣泛的應用。如:機器與機器(M2M)通信和物聯(lián)網(IoT)。其在通過衛(wèi)星鏈路通信傳感器、偶爾撥號的醫(yī)療設備、智能家居、及一些小型化設備中已廣泛使用。
MQTT最大優(yōu)點在于,用極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。
2.1 MQTT特點
本協(xié)議運行在 TCP/IP,或其它提供了有序、可靠、雙向連接的網絡連接上。MQTT屬于應用層協(xié)議,它有以下特點:
使用發(fā)布/訂閱消息模式,提供了一對多的消息分發(fā)和應用之間的解耦。
消息傳輸不需要知道負載內容。
提供三種等級的服務質量: .
QS0:“最多一次”,盡操作環(huán)境所能提供的最大努力分發(fā)消息。消息可能會丟失。
例如,這個等級可用于環(huán)境傳感器數(shù)據,單次的數(shù)據丟失沒關系,因為不久之后會再次發(fā)送。
QS1:“至少一次”,保證消息可以到達,但是可能會重復。
QS2:“僅一次”,保證消息只到達一次。例如,這個等級可用在一個計費系統(tǒng)中,這里如果消息重復或丟失會導致不正確的收費。很小的傳輸消耗和協(xié)議數(shù)據交換,最大限度減少網絡流量。
在MQTT連接建立時,客戶端需要通過TCP連接到MQTT服務器,并進行握手協(xié)商,包括協(xié)議版本、客戶端標識符、遺囑消息、 QoS級別等信息,以確保雙方能夠正確地交換數(shù)據。一旦握手成功,客戶端和服務器之間就建立了一個持久化的TCP連接,可以隨時進行消息傳輸。
由于TCP協(xié)議本身已經提供了一定程度的可靠性保證,因此MQTT協(xié)議只需要在TCP的基礎上實現(xiàn)發(fā)布/訂閱機制、 QoS級別控制、保留消息等特性即可,從而使得它成為一種輕量級且高效的物聯(lián)網通信協(xié)議。
2.2 MQTT協(xié)議數(shù)據量限制
MQTT協(xié)議本身沒有限制數(shù)據包的大小,但是它需要遵循底層傳輸協(xié)議(TCP/IP)的限制和約束。在實際應用中,MQTT協(xié)議能夠傳輸?shù)挠行?shù)據量是受多種因素影響的,如網絡帶寬、QoS級別、MQTT消息頭部信息等。一般來說,在默認情況下,MQTT協(xié)議對于單個消息的有效載荷有一個限制,即不超過256MB。這個限制主要由MQTT協(xié)議的消息長度字段決定,該字段的最大值是4字節(jié),因此最大能表示2^32-1個字節(jié)的消息長度,即約為4GB。然而,在實際應用中,由于網絡帶寬和設備性能等方面的限制,很難實現(xiàn)傳輸如此巨大的消息。
另外,需要注意的是,如果使用較高級別的QoS,如“至少一次”或“恰好一次”,則MQTT協(xié)議會對每條消息進行確認和重傳,這可能會導致更多的網絡流量和延遲。因此,在選擇QoS級別時,需要根據應用場景和網絡環(huán)境的實際情況進行優(yōu)化和調整,以充分利用MQTT協(xié)議的特點和優(yōu)勢。
3.阿里云物聯(lián)網平臺搭建
3.1 搭建阿里云物聯(lián)網平臺
2.創(chuàng)建產品
3.功能定義, 添加自 定義功能, 發(fā)布上線。
4.添加設備
3.2 設備登錄
MQTT 連接阿里云需要三個參數(shù): 客戶端 id、 用戶名、 密碼。 此信息可直接在設備中獲取。
3.3 消息訂閱與消息發(fā)布
Topic 是消息發(fā)布( Pub) 者和訂閱( Sub) 者之間的傳輸中介。 設備可通過 Topic 實現(xiàn)消息的發(fā)送和接收, 從而實現(xiàn)服務端與設備端的通信。 為方便海量設備基于 Topic 進行通信,簡化授權操作, 物聯(lián)網平臺定義了產品 Topic 類和設備 Topic。
3.4 數(shù)據上報格式
MQTT 上報數(shù)據格式為 JSON 格式。 內容格式如下:
發(fā)布主題: "/sys/{產品 ID}/{設備名 }/thing/service/property/set"
數(shù)據內容格式: {"method":"thing.event.property.post","params":{"image":"hello,world"}}
設備端訂閱消息內容:
訂閱主題: "/sys/{產品 ID}/{設備名 }/thing/event/property/post"
審核編輯黃宇
-
物聯(lián)網
+關注
關注
2913文章
44927瀏覽量
377049 -
服務器
+關注
關注
12文章
9304瀏覽量
86062 -
TCP
+關注
關注
8文章
1378瀏覽量
79302 -
MQTT
+關注
關注
5文章
653瀏覽量
22693
發(fā)布評論請先 登錄
相關推薦
esp8266連接阿里云平臺時mqtt連接超時
MQTT調試助手中文版(物聯(lián)網開發(fā)必備)
MQTT物聯(lián)網云平臺有什么功能
通過鋇錸PLC轉MQTT網關實現(xiàn)PLC數(shù)據上傳至阿里云平臺
![通過鋇錸PLC轉<b class='flag-5'>MQTT</b>網關實現(xiàn)PLC數(shù)據上傳至<b class='flag-5'>阿里</b><b class='flag-5'>云</b><b class='flag-5'>平臺</b>](https://file1.elecfans.com/web2/M00/FF/B6/wKgZomap_wSAbR7LAAJHL2UrwWQ408.png)
鋇錸Modbus轉MQTT網關BL100支持一鍵對接阿里云平臺
![鋇錸Modbus轉<b class='flag-5'>MQTT</b>網關BL100支持一鍵對接<b class='flag-5'>阿里</b><b class='flag-5'>云</b><b class='flag-5'>平臺</b>](https://file1.elecfans.com/web2/M00/00/11/wKgaomanYQ6ARFCfAAAaWpcP9_Y947.png)
MQTT物聯(lián)網平臺是什么
MQTT物聯(lián)網云平臺是什么
STM32、ESP8266與MQTT連接阿里云物聯(lián)網的串口通信異常解析
MQTT物聯(lián)網平臺是什么?MQTT物聯(lián)網平臺的功能
MQTT物聯(lián)網平臺實現(xiàn)設備連接與安全加密
![<b class='flag-5'>MQTT</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網</b><b class='flag-5'>平臺</b>實現(xiàn)設備連接與安全加密](https://file1.elecfans.com//web2/M00/C4/ED/wKgZomX494uAWRz1AAPVgT1WpFg860.png)
云組態(tài)監(jiān)控物聯(lián)網平臺有什么功能
![<b class='flag-5'>云</b>組態(tài)<b class='flag-5'>監(jiān)控</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網</b><b class='flag-5'>平臺</b>有什么功能](https://file1.elecfans.com//web2/M00/C5/3F/wKgaomXyqr6Adxj3AAI2xZ70tNs643.png)
通過MQTT網關快速對接工業(yè)物聯(lián)網云平臺
![通過<b class='flag-5'>MQTT</b>網關快速對接工業(yè)<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網</b><b class='flag-5'>云</b><b class='flag-5'>平臺</b>](https://file1.elecfans.com//web2/M00/C2/25/wKgZomXgSxuAQac_AAAm8j0bvnY314.png)
評論