基于ESP32搭建物联网十六(用树莓派建立MQTT服务器[中])
我们已经成功为树莓派安装好系统,在本章中,我们将在该树莓派系统中安装MQTT服务器并测试使用。
在之前的文章:基于ESP32搭建物联网十六(用树莓派建立MQTT服务器[上])_你的幻境的博客-CSDN博客
我们已经成功为树莓派安装好系统,在本章中,我们将在该树莓派系统中安装MQTT服务器并测试使用。
安装mosquitto:
在安装前,我们最好更新一下软件源,输入
sudo apt-get update
成功更新软件源后,我们进行mosquitto的安装
mosquitto在树莓派的安装十分简单,我们已经在上一章中正常地用putty连接到树莓派。我们只要在命令行界面输入:
sudo apt-get install mosquitto mosquitto-clients
我们按"Y"键后回车继续安装
这里安装的有两个软件,一个是mosquitto,为服务器端。一个是mosquitto-clients,为客户端。安装客户端的目的是为了之后的方便。你也可以选择只安装服务器端。
如果安装完成大概是以上的界面,如果出现"error"之类的提示,请重新进行安装,大多安装不成功是因为软件源的问题。可以搜索一下更改一下你的软件源列表。
安装完成后,正常情况下,mosquitto会自动开启,我们查看一下mosquitto是否开启,输入命令查看进程
ps -ef | grep mosquitto
可以看到,进程已经启动,所用的配置文件为"/etc/mosquitto/mosquitto.conf"
我们查看一下该配置文件,输入命令
sudo nano /etc/mosquitto/mosquitto.conf
文件内容
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
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
在这里大概说明一下
# pid文件
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
在未对mosquitto进行配置之前,我们是无法远程连接到该MQTT服务器的。我们先对mosquitto进行配置。
配置mosquitto
关于mosquitto的配置,我们在之前的基于ESP32搭建物联网服务器十三(自已搭建一个MQTT服务器)_esp32物联网_你的幻境的博客-CSDN博客y
文章中已经有过介绍,这里简单地再走一个流程,需要配置的大约有以下项目
1、建立用户
2、设置密码文件位置
3、设置不允许匿名登陆
4、设置端口
5、设置同时监听mqtt和websockets端口
建立用户
因为密码文件会生成在当前文件夹,所以我们先进入配置文件所在的目录:
cd /etc/mosquitto/conf.d
输入命令:
sudo mosquitto_passwd -c pwfile test1
在首次建立用户时,我们需要加入"-c"参数来生成一个密码文件,之后加入用户,不用再使用该参数。"pwfile"参数为生成的密码文件的文件名。"test1"为生成的用户名。运行后会提示两次输入相同的密码。输入完成后会生成一个密码文件和用户。
我们建立第二个用户,输入命令:
sudo mosquitto_passwd pwfile test2
同样运行后会提示两次输入相同的密码。输入完成后会在密码文件生成第二个用户。
同时,我们生成一个配置文件:
sudo nano /etc/mosquitto/conf.d/mosquitto.conf
文件输入以下配置内容:
#密码文件路径
password_file /etc/mosquitto/conf.d/pwfile
#禁止匿名访问
allow_anonymous false
#设置监听mqtt端口
listener 8080
protocol mqtt
#设置监听websockets端口
listener 8081
protocol websockets
如果要了解更多关于配置的介绍可以到之前的文章中查看:基于ESP32搭建物联网服务器十三(自已搭建一个MQTT服务器)_esp32物联网_你的幻境的博客-CSDN博客
因为在树莓派中的mosquitto没有重启服务器的命令,我们直接重启树莓派。
sudo reboot
这时,putty会断开与树莓派的连接,如果还需要对mosquitto进行配置,我们稍等一会可以再次运行putty来连接树莓派。
连接测试
如果不用再次对mosquitto进行配置,只要稍等一会,我们就可以直接对服务器进行连接测试。
我们还是用MQTTX工具来对MQTT服务器进行连接测试:
在服务器地址中填入安装树莓派系统时的主机地址。
在端口中填入之前配置的mqtt的端口号。
在用户和密码中填入之前配置的用户名和密码。
我们也需要对禁止匿名访问服务器进行测试,可以尝试不输用用户信息或故意输入错误的用户信息来进行测试(如果用户信息错误会显示"Not authorized"的提示),这里就不做说明了,请自行测试。
连接成功后我们添加一个订阅:
在发送窗口对该订阅发送消息:
如果成功会在消息窗口出现两条消息:
测试websockets端口
和之前一样,填入对应的信息,不同的是服务器地址前缀要改成"ws://",同时,我们测试一下第二个用户。如果正确连接,说明对于mosquitto的配置无误。
至此,我们的服务器已经配置完成,更多的配置,可以翻阅mosquitto的官方文档或相关教程,如果在之后的文章中有需要增加相关的配置,也会再次介绍。在下一篇文章中,将介绍树莓派安装花生壳工具来进行内网穿透,实现从外网也可以访问树莓派中的MQTT服务器。
更多推荐
所有评论(0)