在 Raspberry Pi 上安装 MQTT 服务器和 Node-RED 以实现家庭自动化

消息队列遥测协议(MQTT)是一种轻量级消息协议,专为低带宽设备和环境设计。 它是一种快速、易于部署且节能的解决方案,用于在多个物联网设备之间连接和交换信息。 它需要一个 MQTT 代理/服务器以及设备或用户发布和订阅消息的主题,以发送或接收信息。

在本指南中,我们将在 Raspberry Pi 上部署 MQTT 代理和 Node-RED 工具,以连接支持 MQTT 的 DIY 智能物联网设备并将其用于家庭自动化。

你需要的东西

要使用 Node-RED 构建和部署 MQTT 服务器,您将需要以下内容:

  • Raspberry Pi 零 W 或更好。 我们建议使用 Raspberry Pi 3 或 4(如果可用)。
  • microSD 卡(8GB 或更高)。
  • microSD 读卡器。
  • Linux PC、Mac 或 Windows PC。
  • 互联网连接 (Wi-Fi)。

第 1 步:安装 Raspberry Pi OS Lite(64 位)

您将需要 64 位 Lite 版本的 Raspberry Pi OS。 在里面 树莓派成像仪 工具在另一台计算机上,单击 选择操作系统 > 树莓派操作系统(其他),然后选择 树莓派操作系统精简版(64 位). 此外,您需要使用 Imager 的高级设置来启用 SSH(我们使用 圆周率覆盆子 作为本指南的用户名和密码)并配置 Wi-Fi 连接。 有关更多详细信息,请查看我们的指南,了解如何在 Raspberry Pi 上安装操作系统。 将操作系统写入卡后,将其弹出并将其插入您的 Raspberry Pi。

第 2 步:通过 SSH 连接并更新软件包

您可以在 Windows 或终端上使用 PuTTY 通过 SSH 连接到您的 Raspberry Pi 在 macOS 和 Linux 上。 但是,您应该知道 Raspberry Pi 的 IP 才能通过 SSH 连接。 要查找,您可以打开无线路由器的 DHCP 设置或使用 Fing 智能手机上的应用程序。

Enter 中的 IP 地址 油灰 并点击 连接. 输入您的用户名和密码以登录。

在 Linux 或 macOS 终端上,键入 你的Pi用户名@IP地址 然后输入密码登录。通过SSH连接后,运行以下命令更新包列表和升级包。

sudo apt update && sudo apt upgrade y

第 3 步:安装 MQTT 代理

要安装和启用 MQTT 代理 (Mosquitto),请执行以下步骤。

  1. 通过在终端窗口中运行以下命令来安装 Mosquitto。
    sudo apt install mosquitto mosquitto-clients -y

    这将开始安装 Mosquitto(MQTT 代理)和客户端服务。

  2. 安装完成后,启用 Mosquitto 服务并使用以下命令检查 MQTT 版本。
    sudo systemctl enable mosquitto.service
    mosquitto -v
  3. 使用以下命令创建一个用户帐户以允许经过身份验证的远程访问。
    sudo mosquitto_passwd -c /etc/mosquitto/passwd ravi

    这里 拉维 是用户名(你可以使用任何你喜欢的)。 Enter 提示时输入密码。 记下此用户名和密码以备后用。

  4. 打开 mosquitto.conf 使用以下命令在 nano 编辑器中创建文件。
    sudo nano /etc/mosquitto.conf

    将以下代码粘贴到 nano 编辑器中。

    per_listener_settings true
    pid_file /run/mosquitto/mosquitto.pid
    persistence true
    persistence_location /var/lib/mosquitto/
    log_dest file /var/log/mosquitto/mosquitto.log
    include_dir /etc/mosquitto/conf.d
    allow_anonymous false
    listener 1883
    password_file /etc/mosquitto/passwd

    CTRL+X 其次是 是的Enter 保存更改。

  5. 通过运行以下命令重新启动 MQTT 代理。
    sudo systemctl restart mosquitto
  6. 检查 MQTT 代理状态以查看 MQTT 是否正在运行。
    sudo systemctl status mosquitto

    如果您看到上述输出,则 MQTT 正在运行。

第 4 步:测试 MQTT 代理

要测试 MQTT 代理是否正常工作,请安装 MQTTL镜头 或 Chrome 或任何其他 Web 浏览器中的类似 MQTT 应用程序并启动它。 Enter Raspberry Pi 的 IP 地址和 MQTT 用户名/密码。 点击 创建连接.

Enter 中的任何主题 订阅 场地 和同一个主题 发布 场地。 在消息字段中输入“嗨”或任何内容,然后单击 发布.

如果您在订阅下看到消息,则 MQTT 代理工作正常。

第 5 步:安装 Node-RED

使用 Node-RED,您可以向智能设备发布消息或发送和接收有效负载。 该有效载荷可用于触发智能设备打开/关闭或从传感器接收数据(例如温度)。 您可以使用 Web 浏览器在 Node-RED 中创建此类流程并控制您的智能设备。

要安装 Node-RED,请在终端窗口中执行以下命令。

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

这将在您的 Raspberry Pi 上下载并安装 Node-RED。 可能需要一段时间才能完成。 安装 Node-RED 后,您需要通过运行以下命令来创建 Node-RED 设置文件。

node-red admin init

然后按照以下步骤操作:

  1. 请按 Enter 钥匙。
  2. 是否要设置用户安全? 选择 是的. Enter 用户名和密码。 保持安全,因为这将用于通过 Web 界面登录和管理 Node-RED。
  3. 选择 完全访问.
  4. 您可以添加其他用户或选择 继续。
  5. 选择 当被要求启用项目功能时。
  6. Enter.
  7. 输入密码并妥善保管。
  8. 选择 默认主题 > 摩纳哥(默认).
  9. 选择 当被要求加载外部节点时。

完成后,重新启动 Node-RED。

node-red restart

您现在可以访问 你的树莓派 IP:1880 在 Web 浏览器中打开并登录到 Node-RED admin 控制板。

您现在可以在 Node-RED 中创建流。 下面是我们用来运行 WS2812B 8×32 矩阵显示器的 Node-RED 流程示例,它实时显示安装在我们家中的各种传感器信息。

首先,您还可以使用 MAX7219 点阵构建一个 DIY 智能时钟,并将其连接到您的 MQTT 服务器以在其上显示文本或消息。

使用 MQTT 和 Node-RED 启用家庭自动化

您现在可以创建流来控制或监控启用了 MQTT 的智能家居设备。 您还可以构建 DIY Tasmota 智能开关或基于 Arduino 的智能传感器,以及其他具有 MQTT 控制的智能设备,并将它们与此 MQTT 和 Node-RED 服务器一起使用。 您可以根据从智能手机 MQTT 客户端接收到的事件、时间或有效负载创建家庭自动化流程。

在您的 Android 智能手机上,您可以安装 MQTT Dash 以连接到您的 MQTT 代理,并向您的智能设备订阅或发布的各种主题发送或接收有效负载。