Skip to main content

reTerminal DM MQTT 与 Node-RED

note

本文档由 AI 翻译。如您发现内容有误或有改进建议,欢迎通过页面下方的评论区,或在以下 Issue 页面中告诉我们:https://github.com/Seeed-Studio/wiki-documents/issues

关于 MQTT 的简要信息

pir


MQTT 与 Node-RED

MQTT(消息队列遥测传输)是一种轻量级的消息协议,旨在实现设备之间在机器对机器(M2M)或物联网(IoT)环境中的通信。MQTT 于 1999 年由 IBM 开发,后来成为一个开放标准。MQTT 设计为一种简单高效的方式,用于在设备之间发送小数据包。它采用发布/订阅的消息模式,消息发布到一个代理(broker),然后分发给订阅了特定主题的所有订阅者。这使得设备之间可以通信,而无需知道彼此的 IP 地址或其他网络细节。MQTT 特别适用于设备通过不可靠网络(如低带宽或高延迟网络)连接的情况,因为它使用的带宽很小且开销低。它还支持服务质量(QoS)级别,从而允许不同级别的消息传递可靠性。由于其简单性和高效性,MQTT 已成为 IoT 和 M2M 应用的热门选择,并且被广泛的设备和平台支持。

MQTT 代理是一个服务器,在基于 MQTT 的 IoT 或 M2M 网络中充当设备之间交换 MQTT 消息的中心点。它接收设备发布的消息,并将其分发给订阅了相同主题的其他设备。

MQTT 是 Node-RED 支持的众多协议之一,这使得它成为构建基于 MQTT 的 IoT 应用的绝佳工具。Node-RED 提供了内置的 MQTT 节点,允许用户连接到 MQTT 代理并发布或订阅消息。MQTT 节点可以通过 Node-RED 界面轻松配置,用户可以指定代理地址、端口、客户端 ID、用户名和密码。这些节点还支持 MQTT 的 QoS 级别,可以设置以确保消息传递的可靠性。在 Node-RED 中,用户可以创建处理传入 MQTT 消息的流程,并根据消息的有效负载执行各种操作。例如,一个流程可以订阅温度传感器的 MQTT 主题,解析温度值,然后在温度超过某个阈值时发送警报。Node-RED 还提供了各种节点,用于与其他 IoT 服务和设备集成,例如 HTTP 端点、数据库和云服务。这使得用户可以轻松构建复杂的 IoT 应用,这些应用可以与各种设备和服务通信。

总的来说,得益于其内置的 MQTT 节点以及对其他 IoT 服务和设备的支持,Node-RED 提供了一种简单直观的方式来构建基于 MQTT 的 IoT 应用。

在 reTerminal DM 上开始使用 MQTT 节点

由于 MQTT 节点已内置于 Node-RED 中,因此您可以直接使用 MQTT 节点,而无需额外安装节点。然而,您需要一个 MQTT Broker 来向主题发布或订阅消息。因此,以下步骤将包括如何在 reTerminal DM 上安装本地 MQTT Broker,然后利用该 MQTT Broker 发送和接收消息。

前置条件

硬件

  • 1 x reTerminal DM
  • 1 x 主机电脑
note

主机电脑需要能够与 reTerminal DM 建立互联网连接,以执行以下设置步骤。

软件

安装 MQTT Broker Eclipse Mosquitto

在本节中,我们将安装 Eclipse Mosquitto,它是一个开源的 MQTT Broker,广泛应用于物联网 (IoT) 和机器对机器 (M2M) 应用。它由 Eclipse 基金会开发,并在 Eclipse 公共许可证下发布。Mosquitto 设计轻量高效,非常适合在低功耗设备和网络带宽有限的环境中使用。它支持最新的 MQTT 5.0 协议以及早期版本(如 MQTT 3.1.1)。

首先,请复习通过 SSH 访问 reTerminal DM 的知识,具体步骤请参考这里

一旦通过 SSH 访问了 reTerminal DM,您可以按照以下步骤操作:

步骤 1:通过运行以下命令更新软件包列表:

sudo apt-get update

步骤 2:通过运行以下命令安装 Mosquitto:

sudo apt-get install mosquitto

步骤 3:通过运行以下命令安装 Mosquitto 客户端工具:

sudo apt-get install mosquitto-clients

步骤 4:安装完成后,您可以通过运行以下命令启动 Mosquitto 服务:

sudo systemctl start mosquitto

步骤 5:要检查 Mosquitto 是否正在运行,可以运行以下命令:

sudo systemctl status mosquitto

默认情况下,Mosquitto 配置为监听 端口 1883 的 MQTT 流量。您可以通过使用 Mosquitto 客户端工具订阅主题来测试安装,如下所示:

打开一个新的 SSH 会话并运行以下命令订阅一个主题:

mosquitto_sub -h localhost -t test

在另一个 SSH 会话中,运行以下命令向同一主题发布消息:

mosquitto_pub -h localhost -t test -m "Hello, world!"

您应该会在运行 mosquitto_sub 命令的第一个 SSH 会话窗口中看到消息 "Hello, world!"。

就这样!您已经成功在 reTerminal DM 上安装了 Mosquitto,并使用 Mosquitto 客户端工具进行了测试。现在让我们深入了解使用 Node-RED 进行 MQTT 通信的方法。

在 reTerminal DM 上使用 MQTT 节点

在 Node-RED 中,有 MQTT in 和 MQTT out 节点,分别表示订阅和发布。

编辑流程

note

以下步骤仅用于教程目的,我们将使用 mqtt-in 从 mqtt-out 发布的消息中订阅相同主题的消息。

步骤 1:将 mqtt in 节点拖到 流程编辑器 面板

步骤 2:配置 Modbus Servermqtt in 节点

步骤 2-1:双击 mqtt in 节点以打开 节点编辑器面板

步骤 2-2:点击 铅笔 图标以进入服务器配置选项

点击 铅笔 图标后,您应该会看到 添加新 mqtt-broker 配置节点 配置面板

步骤 2-3:在 连接 选项卡中,请按以下字段进行配置

note

目前您可以保持 安全性消息 选项卡不变。

步骤 2-4:设置要订阅的主题,这里我们使用 test-mqtt,其他设置保持默认,然后点击 完成 按钮。

步骤 2-5:以下步骤将介绍 debug 节点,在本例中,它用于查看和调试从 mqtt in 节点订阅的主题输出,如下图所示:

步骤 2-5-1:请将一个 debug 节点拖到 流程编辑器 面板

步骤 2-5-2:将 debug 节点与 mqtt in 节点连接

步骤 2-5-3:点击 选项和配置面板 中的 小虫子按钮 打开 调试控制台

步骤 2-5-4:点击 部署 按钮以部署流程

note

由于我们尚未设置任何 MQTT 主题发布者,因此 调试控制台 中不会显示任何消息。

步骤 3:设置 mqtt out 节点

步骤 3-1:双击 mqtt out 节点以打开 节点编辑器面板

步骤 3-1:请将一个 mqtt out 节点拖到 流程编辑器 面板,如下图所示

步骤 3-1-1:您应该选择我们在 步骤 2-3 中设置的相同服务器,即 localhost:1883

步骤 3-1-2:您必须设置与 步骤 2-4 中主题设置相同的主题名称,即 test-mqtt

STEP 3-1-3: 同样地,QoS 应与 mqtt in 设置保持一致,设置为 2

STEP 3-1-4: 点击 Done 完成设置

STEP 4: 设置 inject 节点

STEP 4-1: 将 inject 节点拖动到 Flow Editor 面板

STEP 4-2: 双击 inject 节点以打开 Node editor panel,您将看到 inject 节点的默认设置

STEP 4-2-1: 点击 msg.topic 行的 x 以将其移除

STEP 4-2-2: 点击 msg.payload 行的 timestamp 选项以打开下拉列表

STEP 4-2-3: 在下拉列表中选择 string 选项

STEP 4-2-4: 在消息框中输入 this is the message 作为我们将发送到 test-mqtt 主题的消息,然后点击 Done

STEP 4-2-5: 将 inject 节点与 mqtt out 节点连接起来,然后点击 Deploy

最终结果

恭喜您,现在您已经成功体验并学习了如何使用 MQTT 协议与 reTerminal DM 和 Node-RED,您的最终结果应类似于下图所示:

您可以复制以下 JSON 代码以导入节点:

[
{
"id": "8d317d539464f080",
"type": "tab",
"label": "MQTT",
"disabled": false,
"info": "",
"env": []
},
{
"id": "128fa85f993944d6",
"type": "mqtt in",
"z": "8d317d539464f080",
"name": "",
"topic": "test-mqtt",
"qos": "2",
"datatype": "auto-detect",
"broker": "b6a7c986cb61ea54",
"nl": false,
"rap": true,
"rh": 0,
"inputs": 0,
"x": 300,
"y": 220,
"wires": [
[
"a022e0bf3404fdd9"
]
]
},
{
"id": "a022e0bf3404fdd9",
"type": "debug",
"z": "8d317d539464f080",
"name": "debug 2",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 500,
"y": 220,
"wires": []
},
{
"id": "9d0098383c96ee8b",
"type": "mqtt out",
"z": "8d317d539464f080",
"name": "",
"topic": "test-mqtt",
"qos": "2",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "b6a7c986cb61ea54",
"x": 520,
"y": 320,
"wires": []
},
{
"id": "3c967b7d5cc112fc",
"type": "inject",
"z": "8d317d539464f080",
"name": "",
"props": [
{
"p": "payload"
}
],
"repeat": "3",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "this is the message",
"payloadType": "str",
"x": 340,
"y": 320,
"wires": [
[
"9d0098383c96ee8b"
]
]
},
{
"id": "b6a7c986cb61ea54",
"type": "mqtt-broker",
"name": "",
"broker": "localhost",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
}
]

在 reTerminal DM 上探索更多节点与 Node-RED

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供多种支持,确保您使用我们的产品时能够获得尽可能顺畅的体验。我们提供了多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...