MQTT?通信協(xié)議案例
1?案例說(shuō)明
案例功能:使用?node-red?工具與?libmosquitto(MQTT version 3.1.1 client library) 的?API?通過(guò)?MQTT?代理服?務(wù)器通信?;?MQTT?通信協(xié)議,實(shí)現(xiàn)發(fā)布和訂閱消息功能。
程序流程圖如下
圖
2?案例測(cè)試
本案例使用設(shè)備?node-red?工具與上位機(jī) Ubuntu Mosquitto 工具通信。請(qǐng)通過(guò)網(wǎng)線將設(shè)備?ETH1、上位機(jī)連接至?公網(wǎng),確??烧TL問(wèn)互聯(lián)網(wǎng)。
下表提供了可用的在線公共 MQTT 服務(wù)器,可根據(jù)需要自行切換。
表?2
服務(wù)器名稱 | Broker地址 | TCOPP端口 | web?socket |
HiveMQ | broker.hivemq.com | 1883 | 8000 |
Mosquitto | test.mosquitto.org | 1883 | 80 |
Eclipse | mqtt.eclipseprojects.io | 1883 | 80/443 |
EMQX(國(guó)內(nèi)) | Broker-cn.e mqx.io | 1883 | 8083/8084 |
1 )Mosquitto ??工具安裝
Mosquitto 是一款開(kāi)源的 MQTT 消息代理(服務(wù)器)軟件,提供輕量級(jí)的、支持可發(fā)布/可訂閱的的消息推送模?式。本文?node_mqtt.json?案例采用?node-red?與?Mosquitto 工具演示 MQTT 通信協(xié)議的通信功能。由于上位機(jī) Ubun?tu?系統(tǒng)作為通信對(duì)象,因此需在 Ubuntu 終端執(zhí)行如下命令安裝 Mosquitto 工具。
Host#????sudo apt-get install mosquitto-clients
?
圖
2)?設(shè)備發(fā)布/上位機(jī)訂閱
設(shè)備啟動(dòng),執(zhí)行?node-red?程序,將上位機(jī)登錄到node-red?部署系統(tǒng)。?node-red 自帶?mqtt?通信協(xié)議模塊,執(zhí)行以下操作,啟用mqtt?模塊。
圖
展開(kāi)節(jié)點(diǎn)選項(xiàng),往下拉啟動(dòng)?mqtt?模塊。(默認(rèn)啟動(dòng))
圖
圖
在上位機(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 主題,可自定義命名。
圖
為便于測(cè)試,我司提供的經(jīng)驗(yàn)證的 MQTT?通信協(xié)議為案例“ node-rednode_red_mqtt?”目錄下的 mqtt.json?文件。請(qǐng)參考上方“導(dǎo)入節(jié)點(diǎn)文件?”步驟導(dǎo)入對(duì)應(yīng)節(jié)點(diǎn)文件。
導(dǎo)入文件成功后,點(diǎn)擊右上角部署按鈕,啟動(dòng)程序。
圖
成功連接上設(shè)備后,顯示設(shè)備已連接。
圖
執(zhí)行以下操作,發(fā)布消息至 MQTT 服務(wù)器。
圖??設(shè)備發(fā)布
消息發(fā)布成功后,上位機(jī)將從 MQTT 服務(wù)器接收到對(duì)應(yīng)的消息。
圖??上位機(jī)訂閱
3)?上位機(jī)訂閱/設(shè)備發(fā)布
在上位機(jī)執(zhí)行如下命令發(fā)布消息至 MQTT 服務(wù)器。
Host#????mosquitto_pub ?-h ?broker.hivemq.com ?-p ?1883 ?-t??test/data2??-m ?beilai
備注:訂閱主題更改為?test/data2。
圖??上位機(jī)發(fā)布
消息發(fā)布成功后,node-red?將從 MQTT 服務(wù)器接收到對(duì)應(yīng)消息。
圖??設(shè)備訂閱