MQTT 通信协议案例
1 案例说明
案例功能:使用 node-red 工具与 libmosquitto(MQTT version 3.1.1 client library) 的 API 通过 MQT T 代理服 务器通信。基于 MQTT 通信协议,实现发布和订阅消息功能。
程序流程图如下
图
2 案例测试
本案例使用设备 node-red 工具与上位机 Ubuntu Mosqui tto 工具通信。请通过网线将设备 ETH1、上位机连接至 公网,确保可正常访问互联网。
下表提供了可用的在线公共 MQTT 服务器,可根据需要自行切换。
表 2
|
服务器名称 |
Broker地址 |
T COPP端口 |
web socket |
|
HiveMQ |
broker.hivemq.com |
1883 |
8000 |
|
Mosquitto |
test.mosquitto.org |
1883 |
80 |
|
Eclipse |
mqtt.eclipseprojects.io |
1883 |
80/443 |
|
EMQX (国内) |
Broker-cn.e mqx.io |
1883 |
8083/8084 |
1 ) Mosquitto 工具安装
Mosquitto 是一款开源的 MQTT 消息代理(服务器)软件,提供轻量级的、支持可发布/可订阅的的消 息推送模 式。本文 node_mqtt.json 案例采用 node-red 与 Mosquitto 工具演示 MQTT 通信协议的通信功能。由于上位机 Ubun tu 系统作为通信对象,因此需在 Ubuntu 终 端执行如下命令安装 Mosquitto 工具。
Host# sudo apt-get i nstall mosquitto-clients
图
2 ) 设备发布/上位机订阅
设备启动,执行 node-red 程序,将上位机登录 到 node-red 部署系统。 node-red 自带 mqtt 通信协议 模块,执行以下操作,启用mqtt 模块。
图
展开节点选项,往下拉启动 mqtt 模块。(默认启动)
图
图
在上位机执行如下命令,使用mosquitto_sub 工具订阅 MQTT 主题。
Host# mosquitto_sub -h broker.hivemq.com - p 1883 -t test/data
参数解析:
-h: 指定 MQTT 服务器;
-p: 指定 MQTT 服务器 TCP 端口;
-t: 定义 MQTT 主题,可自定义命名。
图
为便于测试,我司提供的经验证的 MQTT 通信协议为 案例 “ node-red\node_red_mqtt\ ”目录下的 mqtt.json 文件。请参考上方 “导入节点文件 ”步骤导入 对应节点文件。
导入文件成功后,点击右上角部署按钮,启动程序。
图
成功连接上设备后,显示设备已连接。
图
执行以下操作,发布消息至 MQTT 服务器。
图 设备发布
消息发布成功后,上位机将从 MQTT 服务器接收到对应的消息。
图 上位机订阅
3 ) 上位机订阅/设备发布
在上位机执行如下命令发布消息至 MQTT 服务器。
Host# mosquitto_pub -h broker.hivemq.com -p 1883 -t test /data2 -m beilai
备注: 订阅主题更改为 test/data2。
图 上位机发布
消息发布成功后,node-red 将从 MQTT 服务器接收到对应消息。
图 设备订 阅