MQTT 服务器 - Mosquitto

Mosquitto 是轻量级的 MQTT Broker,在物联网社区拥有广泛的用户。本节介绍如何在 Raspberry Pi 5 上安装 Mosquitto,并简单演示如何将多种传感器的数据发布到不同的主题。

安装步骤

在基于 Debian 的系统中直接使用 apt 安装即可:

sudo apt update
sudo apt install mosquitto mosquitto-clients

安装完成后 Mosquitto 会作为系统服务自动启动,并设置为开机自启。可通过以下命令确认服务状态:

sudo systemctl status mosquitto

配置要点

默认配置已经能满足本地测试需求,监听端口为 1883,允许匿名连接。若需要在公网或大规模环境中使用,请编辑 /etc/mosquitto/mosquitto.conf 开启用户验证或 TLS,然后重启服务:

sudo systemctl restart mosquitto

命令行测试

安装 mosquitto-clients 后,可直接在终端进行 MQTT 发布和订阅,无需编写额外代码:

# 订阅主题
mosquitto_sub -h 192.168.1.100 -p 1883 -t home/sensor/temperature
# 发布消息
mosquitto_pub -h 192.168.1.100 -p 1883 -t home/sensor/temperature \
             -m '{"temperature":27.5}'

发布传感器数据示例

安装 paho-mqtt 库后即可在 Python 中轻松发布数据:

pip install paho-mqtt

下面的脚本展示如何发布不同传感器的读数到 sensors/ 前缀的主题:

import paho.mqtt.publish as publish

# 假设这些数值来自真实传感器
temperature = 22.5
humidity = 60
distance = 10.2

publish.single("sensors/temperature", temperature, hostname="localhost")
publish.single("sensors/humidity", humidity, hostname="localhost")
publish.single("sensors/distance", distance, hostname="localhost")

在另一个终端订阅并查看所有传感器数据:

mosquitto_sub -h localhost -t "sensors/#"

这样就能将多种传感器的结果整合到 MQTT 系统,方便后续在其他设备或云端进行处理。

更多脚本与说明可参考外部仓库 pi5-mqtt-tools