Raspberry Pi 树莓派上安装 Mosquitto部署MQTT服务器
目录
本文翻译于:
https://pimylifeup.com/raspberry-pi-mosquitto-mqtt-server/
加上一些理解与修改,最后还补充了,启用远程访问需要的设置。
MQTT 介绍
MQTT代表消息队列遥测传输,是一种网络消息协议,通常用于物联网设备之间的消息传输。
为了让我们的Raspberry Pi支持MQTT协议,我们将使用一个名为Mosquitto的服务器软件。
Mosquitto 是一个消息代理,它实现了多个版本的 MQTT 协议,包括最新的 5.0 版本。
MQTT协议的工作原理是让客户机充当发布者和订阅者。发布者将消息发送给充当中介的代理。
订阅者连接到MQTT代理并阅读特定主题下广播的消息。
您可以使用MQTT让多个传感器将它们的数据发送到您的Raspberry Pi的MQTT代理,然后客户端设备可以接收数据。
如果你想了解更多关于MQTT协议的信息,以及为什么它非常适合树莓Pi等物联网设备,请务必查看MQTT官方网站。
在树莓派上安装 Mosquitto
1,首先 ,需要最新的系统,输入以下命令:
sudo apt update
sudo apt upgrade
2,运行Mosquitto和Mosquitto客户端的安装命令,这样方便在树莓派上 进行连接测试:
sudo apt install mosquitto mosquitto-clients
在安装过程中,包的管理器会自动配置 Mosquitto 服务器在开机时启动。
安装完成,此时,您将在您的设备上启动并运行 Mosquitto MQTT 代理。
3,您可以使用以下命令验证它是否已安装并正在运行。
sudo systemctl status mosquitto
此命令将返回“ mosquitto
”服务的状态。
如果服务已正常启动,您应该会看到文本 active (running)
。
测试MQTT
我们的下一步将是测试该服务是否正常工作,并且现在在我们的 Raspberry Pi 上充当 MQTT 代理。
为此,我们将使用本指南前面安装的 Mosquitto 客户端。
对于本节,您将需要打开两个终端会话到您的 Raspberry Pi(本地或通过 SSH)。
1.我们的首要任务是启动订阅者。
订阅者将监听我们在 Raspberry Pi 上运行的 MQTT 代理。
我们可以使用我们之前为订阅者安装的 Mosquitto 客户端来执行此操作。
在下面的示例中,我们连接到一个localhost
连接并等待来自代理的关于“ mqtt/pimylifeup
”主题的消息。
mosquitto_sub -h localhost -t "mqtt/pimylifeup"
使用“ -h
”参数,您可以指定要连接的主机名。在我们的例子中,我们使用安装在 Raspberry Pi 上的本地 MQTT 代理。
接下来,我们使用“ -t
”参数告诉 Mosquitto 订阅者我们应该从 MQTT 代理收听什么主题。
对于我们的示例,我们正在收听一个名为“ mqtt/pimylifeup
”的主题。
2.现在我们已经加载了一个客户端并正在监听消息,
让我们尝试向它发布一个消息。
我们需要使用之前安装在 Raspberry Pi 上的 MQTT 发布者客户端向主题发布消息。
运行以下命令将消息“ Hello World
”发布到我们localhost
服务器的“ mqtt/pimylifeup
”主题下。
mosquitto_pub -h localhost -t "mqtt/pimylifeup" -m "hello lingshunlab.com"
其中两个参数与前面的命令相同,“ -h
”指定要连接的服务器,“ -t
”指定要发布到的主题。
我们在这里使用的另一个参数是“ -m
”参数。此参数允许您指定要发送到 Raspberry Pi MQTT 代理的消息。
3.回到您启动 Mosquitto 发布器的终端会话,
您现在应该会看到 您的消息出现。
因此,如果您按照我们的示例进行操作,您应该会在命令行中看到以下文本。
hello lingshunlab.com
测试,mqtt服务器成功。
如果您将mqtt与UFW 等防火墙一起使用,请确保打开端口1883
。
设置远程访问(无身份验证)
要启用远程访问以便我们可以与其他物联网设备进行通信,我们需要编辑/创建一个配置文件。
1)Mosquitto Broker 启用远程访问(无身份验证)
运行以下命令打开mosquitto.conf文件文件。
sudo nano /etc/mosquitto/mosquitto.conf
2 )使用箭头键移动到文件末尾并粘贴以下两行:
listener 1883
allow_anonymous true
最后如下图:
保存,推出。
3)重启mosquitto
为了使配置生效,需要重启mosquitto
sudo systemctl restart mosquitto
或者,直接重启树莓派
sudo reboot
这样就远程主机就可以通过ip地址远程访问mqtt服务器了。