消息队列遥测协议(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),请执行以下步骤。
- 通过在终端窗口中运行以下命令来安装 Mosquitto。
sudo apt install mosquitto mosquitto-clients -y
这将开始安装 Mosquitto(MQTT 代理)和客户端服务。
- 安装完成后,启用 Mosquitto 服务并使用以下命令检查 MQTT 版本。
sudo systemctl enable mosquitto.service
mosquitto -v - 使用以下命令创建一个用户帐户以允许经过身份验证的远程访问。
sudo mosquitto_passwd -c /etc/mosquitto/passwd ravi
这里 拉维 是用户名(你可以使用任何你喜欢的)。 Enter 提示时输入密码。 记下此用户名和密码以备后用。
- 打开 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 保存更改。
- 通过运行以下命令重新启动 MQTT 代理。
sudo systemctl restart mosquitto
- 检查 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
然后按照以下步骤操作:
- 请按 Enter 钥匙。
- 是否要设置用户安全? 选择 是的. Enter 用户名和密码。 保持安全,因为这将用于通过 Web 界面登录和管理 Node-RED。
- 选择 完全访问.
- 您可以添加其他用户或选择 不 继续。
- 选择 不 当被要求启用项目功能时。
- 按 Enter.
- 输入密码并妥善保管。
- 选择 默认主题 > 摩纳哥(默认).
- 选择 不 当被要求加载外部节点时。
完成后,重新启动 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 代理,并向您的智能设备订阅或发布的各种主题发送或接收有效负载。