Skip to main content

使用 Node-Red 和 MQTT 的 Edge Box RPi 200

note

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

简介

MQTT(消息队列遥测传输) 是一种轻量级的消息协议,非常适合物联网(IoT)应用,因为它高效且对带宽需求低。它通过发布-订阅模型促进设备之间的通信,允许在不可靠的网络上实现实时数据交换。结合 Node-RED,集成 MQTT 可以实现边缘设备与中央服务器或其他设备之间的无缝连接,从而提高数据传输和处理的效率。EdgeBox 边缘控制器通过原生支持 MQTT,无需额外的硬件网关即可直接在 EdgeBox 上安装 MQTT broker。这减少了复杂性,最小化了延迟,并增强了可靠性,因为数据可以在边缘处理和响应,而无需依赖外部中介,从而优化了物联网系统架构。

入门指南

在开始此项目之前,您需要按照以下说明提前准备好硬件和软件。

硬件准备

Edge Box RPi 200

软件准备

Edge Box-200 随附预装的 Raspberry Pi OS。如果您是第一次启动此设备,请阅读我们的 入门指南 Wiki。
我们还准备了一份 Node-RED 入门指南。建议您在继续阅读本 Wiki 之前先查看该指南。

将 EdgeBox 设置为 MQTT Broker

  • 步骤 01:通过 SSH 或 VNC 连接到 EdgeBox RPi 200,并更新 Raspberry Pi OS:
sudo apt update
  • 步骤 02:然后,在设备上安装 Mosquitto。打开终端并执行以下命令:
sudo apt-get install mosquitto 
  • 步骤 03:接下来,通过执行以下命令在终端中安装 Mosquitto 命令行客户端:
sudo apt-get install mosquitto-clients -y
  • 步骤 04:完成 MQTT broker 的安装后,需要调整其配置文件。默认的配置文件位于 /etc/mosquitto/mosquitto.conf。要访问并修改此文件,请在终端中执行以下命令:
sudo nano /etc/mosquitto/mosquitto.conf

在配置文件中,我们将通过以下行禁用默认配置设置:

include_dir /etc/mosquitto/conf.d

修改为:

#include_dir /etc/mosquitto/conf.d

接下来,我们将添加一条策略,禁止匿名用户连接到 broker,添加以下行:

allow_anonymous false

为了安全存储密码,我们将指定一个文件位置,添加以下行:

password_file /etc/mosquitto/pwfile

然后,为了将监听端口设置为 1883,我们将添加以下行:

listener 1883

按下 Ctrl+S 保存修改,然后按 Ctrl+X 退出编辑器。

  • 步骤 05:为了创建用户名和密码以授予 MQTT 客户端访问权限,或重置现有密码,请在终端中使用以下命令:
sudo mosquitto_passwd -c /etc/mosquitto/pwfile <username>

生成用户名和密码后,重启 EdgeBox:

sudo reboot

您可以通过在终端中输入以下命令启动 Mosquitto broker:

sudo systemctl start mosquitto

sudo systemctl status mosquitto 检查 Mosquitto broker 是否正在运行

sudo systemctl stop mosquitto 停止 Mosquitto broker

sudo systemctl restart mosquitto 重启 Mosquitto broker

sudo systemctl enable mosquitto 确保 Mosquitto broker 在系统启动时自动运行

测试连接

  • 步骤 01:打开一个新的 SSH 会话或终端,并运行以下命令以订阅一个主题
mosquitto_sub -h localhost -t test -u <USER> -P <PASSWORD>
  • 步骤 02:在另一个 SSH 会话或终端中,运行以下命令向相同的主题发布一条消息。请确保正确输入用户名和密码。
mosquitto_pub -h localhost -t test -m "Hello, world!" -u <USER> -P <PASSWORD>

您应该会在运行 mosquitto_sub 命令的第一个 SSH 会话窗口中看到消息 "Hello, world!"。请确保正确输入用户名和密码。

编辑流程

MQTT 输入节点

MQTT 输入节点订阅 MQTT 主题并从代理接收消息。当某个已订阅的主题收到消息时,MQTT 输入节点会激活,并将接收到的消息转发到流程中的后续节点以进行进一步处理。

  • 步骤 01 从 Node-RED 的节点面板中拖放一个 MQTT 输入节点到画布上。

  • 步骤 02 双击 MQTT 输入节点以打开其配置对话框。

  • 步骤 03 在配置对话框中,配置以下字段:

    • 服务器:确保代理的详细信息已预填充。如果没有,点击铅笔图标添加代理的 IP 地址、用户名和密码。

    • 操作:选择是订阅单个主题还是使用动态订阅。对于动态订阅,可以通过函数节点或其他处理节点从消息负载中提取所需的 MQTT 主题。在这里,我们将订阅一个单一主题。

    • 主题:输入您想要订阅的 MQTT 主题。

    • QoS:选择消息传递的服务质量(QoS)级别(0、1 或 2)。

    • 名称:可选,为您的节点分配一个有意义的名称。

  • 步骤 04 点击“完成”以保存配置。

MQTT 输出节点

MQTT 输出节点(MQTT output)用于向 MQTT 主题发布消息。您可以配置要发布的主题和消息的负载,这些负载可以是静态的,也可以是基于流程中其他节点的数据动态生成的。

  • 步骤 01 从 Node-RED 的节点面板中拖放一个 MQTT 输出节点到画布上。

  • 步骤 02 双击 MQTT 输出节点以打开其配置对话框。

  • 步骤 03 在配置对话框中,点击服务器字段旁边的铅笔图标以创建一个新的代理配置。

  • 步骤 04 编辑 MQTT 代理设置,在服务器字段中添加代理地址、端口以及任何必要的身份验证凭据(例如用户名和密码)。

  • 步骤 05 点击“完成”以保存代理设置。

  • 步骤 06 在配置对话框中,配置以下字段:

    • 主题:输入您想要发布消息的 MQTT 主题。

    • QoS:选择消息传递的服务质量(QoS)级别(0、1 或 2)。

    • 保留:选择是否在代理上保留已发布的消息(true 或 false)。

    • 名称:可选,为您的节点分配一个有意义的名称。

  • 步骤 07 点击“完成”以保存配置。

我们使用注入节点以一定的时间间隔注入消息,同时使用调试节点检查已发布的消息。

您可以查看以下图形化表示,以了解如何连接和配置 MQTT 输入节点、MQTT 输出节点、调试节点和注入节点。

技术支持与产品讨论

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

Loading Comments...