1 MQTT 通信協(xié)議簡(jiǎn)介
1.1 概述
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基
于發(fā)布/訂閱(Publish/Subscribe)模式的“輕量級(jí)”通訊協(xié)議,該協(xié)議構(gòu)建于 TCP/IP 協(xié)議上,
由 IBM 在 1999 年發(fā)布。MQTT 最大優(yōu)點(diǎn)在于,可以極少的代碼和有限的帶寬,為連接遠(yuǎn)
程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)。
MQTT 是輕量、簡(jiǎn)單、開(kāi)放和易于實(shí)現(xiàn)的,同時(shí)作為一種低開(kāi)銷、低帶寬占用的即時(shí)
通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動(dòng)應(yīng)用等方面有較廣泛的應(yīng)用。
MQTT 具有如下特點(diǎn):
(1) 輕量可靠:MQTT 的報(bào)文格式精簡(jiǎn)、緊湊,可在嚴(yán)重受限的硬件設(shè)備和低帶寬、
高延遲的網(wǎng)絡(luò)上實(shí)現(xiàn)穩(wěn)定傳輸。
(2) 發(fā)布/訂閱模式(Publish/Subscribe):發(fā)布/訂閱模式的優(yōu)點(diǎn)在于發(fā)布者與訂閱者的
解耦,實(shí)現(xiàn)異步協(xié)議。即訂閱者與發(fā)布者無(wú)需建立直接連接,亦無(wú)需同時(shí)在線。
(3) 為物聯(lián)網(wǎng)而生:提供心跳機(jī)制、遺囑消息、QoS 質(zhì)量等級(jí) + 離線消息、主題和
安全管理等全面的物聯(lián)網(wǎng)應(yīng)用特性。
(4) 生態(tài)更完善:覆蓋范圍廣,已成為眾多云廠商物聯(lián)網(wǎng)平臺(tái)的標(biāo)準(zhǔn)通信協(xié)議
1.2 應(yīng)用場(chǎng)景
MQTT 作為一種低開(kāi)銷,低帶寬占用的即時(shí)通訊協(xié)議,可以極少的代碼和帶寬為聯(lián)網(wǎng)
設(shè)備提供實(shí)時(shí)可靠的消息服務(wù),適用于硬件資源有限的設(shè)備及帶寬有限的網(wǎng)絡(luò)環(huán)境。常
見(jiàn)的應(yīng)用場(chǎng)景如下:
(1) 物聯(lián)網(wǎng) M2M 通信,物聯(lián)網(wǎng)大數(shù)據(jù)采集。
(2) 移動(dòng)即時(shí)消息及消息推送。
(4) 車聯(lián)網(wǎng)通信,電動(dòng)車站樁采集。
(5) 智慧城市、遠(yuǎn)程醫(yī)療、遠(yuǎn)程教育。
(6) 電力能源、石油能源。
1.3 Mosquitto 工具安裝
Mosquitto 是一款開(kāi)源的 MQTT 消息代理(服務(wù)器)軟件,提供輕量級(jí)的、支持可發(fā)
布/可訂閱的的消息推送模式。我司提供的評(píng)估板文件系統(tǒng)已支持 Mosquitto 工具,本文
mqtt_client 案例采用 Mosquitto 工具演示 MQTT 通信協(xié)議的通信功能。由于上位機(jī) Ubuntu
系統(tǒng)作為通信對(duì)象,因此需在 Ubuntu 終端執(zhí)行如下命令安裝 Mosquitto 工具。
Host# sudo apt-get install mosquitto-clients
2 mqtt_client 案例
2.1 案例說(shuō)明
案例功能:使用 libmosquitto(MQTT version 3.1.1 client library)的 API 與 MQTT 代理服
務(wù)器通信?;?MQTT 通信協(xié)議,實(shí)現(xiàn)發(fā)布和訂閱消息功能。
程序流程圖如下圖所示。
2.2 案例測(cè)試
本案例使用公網(wǎng) MQTT HiveMQ 服務(wù)器與上位機(jī) Ubuntu Mosquitto 工具通信。請(qǐng)通過(guò)
網(wǎng)線將評(píng)估板千兆網(wǎng)口 ETH0 RGMII 和上位機(jī)連接至公網(wǎng),確保可正常訪問(wèn)互聯(lián)網(wǎng)。
下表提供了可用的在線公共 MQTT 服務(wù)器,可根據(jù)需要自行切換。
評(píng)估板啟動(dòng),將案例 bin 目錄下 mqtt_client 可執(zhí)行文件拷貝至評(píng)估板文件系統(tǒng)的任意
目錄下,執(zhí)行如下命令查看程序參數(shù)說(shuō)明。
Target#
./mqtt_client --help
2.2.1
評(píng)估板發(fā)布/上位機(jī)訂閱
在上位機(jī)執(zhí)行如下命令,使用 mosquitto_sub 工具訂閱 MQTT 主題。
Host# mosquitto_sub -h broker.hivemq.com -p 1883 -t test/data
參數(shù)解析:
-h:指定 MQTT 服務(wù)器;
-p:指定 MQTT 服務(wù)器 TCP 端口;
-t:定義 MQTT 主題,可自定義命名。
=
在評(píng)估板文件系統(tǒng)執(zhí)行如下命令發(fā)布消息至 MQTT 服務(wù)器。
Target#
./mqtt_client -h broker.hivemq.com -p 1883 -M publish -t test/data -m
'www.tronlong.com'
2.3 案例編譯
將案例 src 文件夾拷貝至 Ubuntu 工作目錄下,請(qǐng)先確保已參考 Linux 系統(tǒng)使用手冊(cè)編
譯過(guò) LinuxSDK,構(gòu)建 T507 處理器對(duì)應(yīng)的 GCC 編譯器。進(jìn)入 src 目錄執(zhí)行如下命令,使用
LinuxSDK 開(kāi)發(fā)包目錄下的 GCC 編譯器進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成
可執(zhí)行文件。
Host# CC=/home/tronlong/T507/LinuxSDK/out/t507/tlt507-evm/longan/buildroot/host/usr
/bin/aarch64-linux-gnu-gcc make
2.4 關(guān)鍵代碼
(1) 創(chuàng)建 Mosquitto 實(shí)例。
(2) 設(shè)置回調(diào)函數(shù)。
(3) 連接 MQTT 服務(wù)器。
(4) 發(fā)布消息。
(5) 訂閱主題
3 mqtt_sinewave_pub 案例
3.1 案例說(shuō)明
案例功能:使用 libmosquitto(MQTT version 3.1.1 client library)的 API 與 MQTT 代理服
務(wù)器通信。評(píng)估板生成正弦波數(shù)據(jù),每秒發(fā)送 512 個(gè)采樣點(diǎn)的數(shù)據(jù)至 MQTT 服務(wù)器;上
位機(jī)通過(guò) Web 頁(yè)面從 MQTT 服務(wù)器接收到數(shù)據(jù)后,將會(huì)繪制波形。
程序流程圖如下圖所示。
3.2 案例測(cè)試
本案例使用公網(wǎng) MQTT HiveMQ 服務(wù)器與上位機(jī) Ubuntu Web 程序通信。請(qǐng)通過(guò)網(wǎng)線
將評(píng)估板千兆網(wǎng)口 ETH0 RGMII 和上位機(jī)連接至公網(wǎng),確??烧TL問(wèn)互聯(lián)網(wǎng)。
評(píng)估板啟動(dòng),將案例 bin 目錄下 mqtt_sinewave_pub 可執(zhí)行文件拷貝至評(píng)估板文件系
統(tǒng)的任意目錄下,執(zhí)行如下命令查看程序參數(shù)說(shuō)明。
Target#
./mqtt_sinewave_pub --help
執(zhí)行如下命令運(yùn)行程序,連接 MQTT 服務(wù)器,并發(fā)送正弦波數(shù)據(jù)至 MQTT 服 務(wù)器。
Target#
./mqtt_sinewave_pub -h broker.hive
mq.com -p 1883
評(píng)估板程序運(yùn)行后,將案例"toolsweb_mqtt_sub"目錄下 index.html 文件,使用上位
機(jī)瀏覽器打開(kāi)。在彈出的 Web 頁(yè)面(如下圖),依次輸入 MQTT 服務(wù)器:broker.hivemq.com,
端口號(hào):8000,最后點(diǎn)擊連接,Web 頁(yè)面將會(huì)從 MQTT 服務(wù)器獲取正弦波數(shù)據(jù)并進(jìn)行波
形繪制。
備注:ARM 端 MQTT 通信協(xié)議基于 TCP 協(xié)議,Web 端 MQTT 通信協(xié)議基于 WebSocket 協(xié)
議,因此使用的端口號(hào)不同。
3.3 案例編譯
將案例 src 文件夾拷貝至 Ubuntu 工作目錄下,請(qǐng)先確保已參考 Linux 系統(tǒng)使用手冊(cè)編
譯過(guò) LinuxSDK,構(gòu)建 T507 處理器對(duì)應(yīng)的 GCC 編譯器。進(jìn)入 src 目錄執(zhí)行如下命令,使用
LinuxSDK 開(kāi)發(fā)包目錄下的 GCC 編譯器進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成
可執(zhí)行文件。
Host# CC=/home/tronlong/T507/LinuxSDK/out/t507/tlt507-evm/longan/buildroot/host/usr
/bin/aarch64-linux-gnu-gcc make
3.4 關(guān)鍵代碼
(1) 創(chuàng)建 Mosquitto 實(shí)例。
(2) 設(shè)置回調(diào)函數(shù)。
(3) 連接 MQTT 服務(wù)器。
(4) 發(fā)送數(shù)據(jù)。
審核編輯 黃宇
-
通信協(xié)議
+關(guān)注
關(guān)注
28文章
883瀏覽量
40309 -
MQTT
+關(guān)注
關(guān)注
5文章
651瀏覽量
22507
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論