树莓派安装Mosquitto MQTT服务

陈拓 2021/03/21-2021/03/23

1. 安装Mosquitto MQTT组件

  • 登录树莓派(网线连接)

树莓派安装Mosquitto MQTT服务

  • 检查网络连通状态

pi@raspberrypi:~ $ ping www.baidu.com

如果网络不通

树莓派安装Mosquitto MQTT服务

Win10找到这个设置界面:

树莓派安装Mosquitto MQTT服务

先去掉勾选,确定,再重新如勾选,确定。

再测试:

树莓派安装Mosquitto MQTT服务

网通了。

  • 更新apt的资源列表

sudo apt-get update

  • 搜索可安装的MQTT

apt search mqtt

树莓派安装Mosquitto MQTT服务

树莓派安装Mosquitto MQTT服务

MQTT分为服务器和客户端两部分。有很多MQTT软件包可选,我们选择比较流行的mosquitto。

  • 安装mosquitto 和mosquitto-clients

sudo apt-get install mosquitto mosquitto-clients

树莓派安装Mosquitto MQTT服务

说明:

mosquitto – the MQTT broker(MQTT代理,即MQTT服务)

mosquitto-clients – 命令行客户端,在调试时很有用。

  • 查看已经安装的mosquitto软件包

dpkg -l mosquitto

树莓派安装Mosquitto MQTT服务

2. 配置Mosquitto

在使用Mosquitto之前,我们需要修改配置文件。配置文件位于/etc/mosquito。

  • 查看配置文件

cat /etc/mosquitto/mosquitto.conf

树莓派安装Mosquitto MQTT服务

注释中说:

1) 将本地配置放在/etc/mosquitto/conf.d/目录中。

我们看看/etc/mosquitto/conf.d/目录:

树莓派安装Mosquitto MQTT服务

里面有一个说明文件,打开看看:

树莓派安装Mosquitto MQTT服务

放置在该目录中的任何扩展名为.conf的文件都会被代理作为配置文件加载,用作本地配置。

2) 有一个完全的配置文件说明在:/usr/share/doc/mosquitto/examples/

树莓派安装Mosquitto MQTT服务

  • 复制配置文件mosquitto.conf.gz到/etc/mosquitto/conf.d/目录

sudo cp /usr/share/doc/mosquitto/examples/mosquitto.conf.gz /etc/mosquitto/conf.d/

树莓派安装Mosquitto MQTT服务

  • 进入/etc/mosquitto/conf.d/目录

树莓派安装Mosquitto MQTT服务

  • 解压mosquitto.conf.gz

sudo gzip -d mosquitto.conf.gz

树莓派安装Mosquitto MQTT服务

  • 编辑mosquitto.conf

sudo nano /etc/mosquitto/conf.d/mosquitto.conf

树莓派安装Mosquitto MQTT服务

这是一个很大的文件,有800多行,所有的行都被#符号注释掉了。

我们修改下面几处,去掉注释符号,修改默认值:

user mosquitto

max_queued_messages 200

message_size_limit 0

allow_zero_length_clientid true

allow_duplicate_messages false

 

port 1883

autosave_interval 900

autosave_on_changes false

persistence true

persistence_file mosquitto.db

allow_anonymous false

Password_file /etc/mosquitto/passwd.conf

  • 退回登录时的家目录

树莓派安装Mosquitto MQTT服务

3. 生成账号密码

下面两种方法选一种。

  • 密文创建账户

sudo Mosquitto_passwd -c /etc/mosquitto/passwd.conf 用户名

输入两遍密码

我们的用户名为ct

sudo mosquitto_passwd -c /etc/mosquitto/passwd.conf ct

树莓派安装Mosquitto MQTT服务

树莓派安装Mosquitto MQTT服务

  • 明文创建账户

sudo Mosquitto_passwd -b /etc/mosquitto/passwd.conf 用户名 密码

我们不用明文账户。

4. 测试Mosquitto服务

4.1 查看帮助

mosquitto -h

树莓派安装Mosquitto MQTT服务

4.2 测试mosquitto

需要开3个终端。

  • 装载指定配置,启动mosquitto服务

mosquitto -c /etc/mosquitto/mosquitto.conf -v

树莓派安装Mosquitto MQTT服务

-v记录所有类型的日志,因为我们在调试。以后正式使用mosquitto就不需要记录日志了,因为会占用存储空间。

上面提示日志文件mosquitto.log的权限不够:

ls -l /var/log/mosquitto/mosquitto.log

树莓派安装Mosquitto MQTT服务

修改权限:

sudo chmod 666 /var/log/mosquitto/mosquitto.log

树莓派安装Mosquitto MQTT服务

再执行:

mosquitto -c /etc/mosquitto/mosquitto.conf -v

树莓派安装Mosquitto MQTT服务

服务运行,终端窗口被占用。

  • 测试publish 和subscribe

再打开两个终端:

1) 一个终端执行:

mosquitto_sub -p 1883 -u ct -P xxxxxx -t "test"

树莓派安装Mosquitto MQTT服务

订阅subscribe主题Topic:test,等待接收消息。

2) 另一个终端执行:

mosquitto_pub -p 1883 -u ct -P xxxxxx -t test -m "Hello!"

树莓派安装Mosquitto MQTT服务

发布主题为test的消息Hello!

3) 订阅窗口显示接收到的消息

树莓派安装Mosquitto MQTT服务

4) 查看日志

sudo cat /var/log/mosquitto/mosquitto.log

树莓派安装Mosquitto MQTT服务

5) 正式运行mosquitto服务

  • 重新启动树莓派

sudo reboot

树莓派安装Mosquitto MQTT服务

  • 查看正在运行的mosquitto进程

ps -ef | grep mosquitto

树莓派安装Mosquitto MQTT服务

mosquitto已经在后台启动。

 

参考文档

  1. Configuring MQTT on the Raspberry Pi
    https://learn.adafruit.com/diy-esp8266-home-security-with-lua-and-mqtt/configuring-mqtt-on-the-raspberry-pi
  2. Tutorial: IOT / Installing and Testing Mosquitto MQTT on the Raspberry Pi for Buster
    https://www.switchdoc.com/2018/02/tutorial-installing-and-testing-mosquitto-mqtt-on-raspberry-pi/

 

 

上一篇:Modbus协议入门


下一篇:iOS中MQTT和WS的简单混合使用