当前位置: 首页 >应用方案 >技术应用 >

Mosquitto详解和基于Mosquitto实现MQTT通讯教程


Mosquitto简介

Mosquitto 是一个轻量级的开源消息代理,遵守 MQTT(Message Queuing Telemetry Transport)协议。Mosquitto通常用于 IoT(物联网)设备之间的消息传递。以下是对 Mosquitto 的详细介绍:

Mosquitto特性

轻量级Mosquitto 的设计使其适用于资源有限的设备,能够在小型服务器和单板计算机上运行。

支持多种平台:可以在Linux、Windows 和 macOS 等多个操作系统上运行。

多用户:支持多客户端连接,能够处理大量并发会话。

支持QoS 级别:支持MQTT 的三种服务质量(QoS)级别,允许用户根据需求选择消息传递的可靠性。

QoS 0:最多一次交付

QoS 1:至少一次交付

QoS 2:只有一次交付

持久性:支持将消息持久化到磁盘,便于在重启后恢复会话状态。

Mosquitto使用场景

物联网应用:广泛用于智能家居、工业自动化、环境监控等领域,设备间可以通过低带宽的网络进行高效的消息传递。

移动应用:支持低功耗设备,以降低电池消耗,并实现实时数据传输。

节点间通信:在分布式系统中,Mosquitto 可用于不同节点之间的异步通信。

Mosquitto组件

BrokerMosquitto 的核心是消息代理(Broker),负责接收、过滤、存储和转发消息。所有的通信都通过 Broker 进行。

Client:连接到Broker 的应用或设备,可以是发布者(Publisher)、订阅者(Subscriber)或二者兼具。

Mosquitto安全性

认证与授权:支持通过用户名和密码进行用户认证,可对主题进行访问控制。

SSL/TLS 加密:支持加密连接,保护数据传输的安全性。

Mosquitto安装与使用

安装Mosquitto 可以通过 Docker、包管理工具(如 apt、yum)或编译源代码安装。

配置:可以通过配置文件轻松定制其行为,如连接参数、认证等。

命令行工具:提供mosquitto_pub mosquitto_sub 命令行工具用于快速发布和订阅消息。

Mosquitto社区与支持

Mosquitto 拥有活跃的开发社区,提供丰富的文档和支持渠道。开发者可以从 GitHub 或官方文档查找资源,解决问题或贡献代码。

总结的来说Mosquitto 是一个强大而灵活的消息代理,非常适合需要高效通信的物联网和分布式应用场景。它的轻量级和易用性,使其成为开发者和企业的热门选择。

Mosquitto通讯相关环境

使用MQTTX软件以及一个实际的串口服务器进行连接与通讯。串口服务器使用ebyte公司单串口服务器进行连接。

Mosquitto部署的系统:Debian 12

使用SSH远程服务器进行安装,SSH开启Root权限或者使用sudo权限进行部署(不建议正式部署场景直接使用Root权限)

Mosquitto通讯相关地址

Mosquitto官网:https://mosquitto.org

Debian官网:https://www.debian.org

MQTTX官网:https://mqttx.app

串口服务器:https://www.ebyte.com/product/2124.html

串口服务器的使用可以参考:

Mosquitto的安装与部署

首先,在服务器或设备上安装Mosquitto工具。可以在Mosquitto官网找到安装方法。这里我们演示在Debian 12系统上进行简单安装。安装相对简单,您可以参考官方指南进行安装。

大多数开源系统已将Mosquitto添加到源中,可以直接使用apt-get install mosquitto进行安装。

apt-get install mosquitto

1  Mosquitto的安装与部署

安装完成后,打开配置文件,根据实际需求配置Mosquitto。

vim /etc/mosquitto/mosquitto.conf

2  Mosquitto配置

有关详细配置信息,请参阅官方手册。这里我们简要总结一下。

# 监听的端口

port 1883

# 使用TLS/SSL加密的端口

# port 8883

# 使用WebSocket协议的端口

# listener 9001

# protocol websockets

# 允许匿名连接

allow_anonymous true

# 用户名和密码认证

password_file /etc/mosquitto/passwd

# 设置客户端ID前缀

# clientid_prefix client-

# 设置日志文件路径

log_dest file /var/log/mosquitto/mosquitto.log

可以根据需要修改以下参数:

l port:设置Mosquitto监听的端口,默认是1883。如果使用TLS/SSL加密,可以取消注释并修改为8883。

l listener:如果要使用WebSocket协议,可以取消注释并设置一个新的端口。

l allow_anonymous:设置是否允许匿名连接。如果设为false,则需要设置用户名和密码认证。

l password_file:指定存储用户名和密码的文件路径。可以使用mosquitto_passwd命令生成该文件。

l clientid_prefix:设置客户端ID的前缀。可以用于标识不同类型的客户端。

l log_dest:设置日志文件的路径,用于记录Mosquitto的日志信息。

为方便起见,我们进行简单配置:设置端口并允许匿名连接。

# 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/

allow_anonymous true

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883

listener 9001

protocol websockets

配置完成后,重新启动Mosquitto服务以使更改生效。

Linux上,使用systemd管理Mosquitto服务的情况下:

sudo systemctl restart mosquitto

Windows上,使用服务管理器来重启Mosquitto服务:

txt

net stop mosquitto

net start mosquitto

macOS上,使用launchctl来重启Mosquitto服务:

txt

sudo launchctl stop homebrew.mxcl.mosquitto

sudo launchctl start homebrew.mxcl.mosquitto

根据不同的操作系统和安装方式,可能会有所不同。请根据你的实际情况选择适当的命令来重启Mosquitto服务。

Mosquitto连接MQTT服务器

配置成功后,您可以使用设备连接MQTT服务器。打开NE2-D11串口服务器配置软件,根据需要选择链路并将工作模式更改为MQTT模式。

3  Mosquitto连接MQTT服务器

填入实际MQTT服务器的地址和端口。

4  Mosquitto连接MQTT服务器

然后开始设置MQTT参数。选择标准的「MQTT 3.1.1」,根据Mosquitto配置填入「设备名称」、「用户名」、「密码」。在此示例中,我们使用匿名连接,因此随意填写用户信息。

5  Mosquitto连接MQTT服务器

订阅和发布设置根据实际情况进行配置。我们使用MQTTX软件模拟服务器的数据采集和指令下发。因此,随意填写订阅和发布主题。

6  Mosquitto连接MQTT服务器

设置完成后,保存并重新启动设备。通过产品指示灯观察是否成功连接到服务器。

MQTT模拟通讯

成功连接到服务器后,可以开始通讯。我们使用MQTTX软件进行模拟通讯。

7  Mosquitto连接MQTT服务器

连接MQTTX软件后,配置好订阅和发布主题

8  Mosquitto连接MQTT服务器

9  Mosquitto连接MQTT服务器

发送数据进行通讯。使用XCOM串口工具模拟产品串口采集的数据发送到服务器。会发现MQTTX软件成功接收到通过串口发送的数据。

10  Mosquitto连接MQTT服务器

然后使用MQTTX软件发送数据,模拟服务器下发指令,同样可以看到XCOM软件成功接收到MQTTX发送的数据。

11  Mosquitto连接MQTT服务器

至此,关于Mosquitto的MQTT通讯教程就到此结束。有兴趣的朋友可以继续探索。

Mosquitto其他功能配置

*用户和密码

Mosquitto的配置文件中添加用户和密码认证,可以按照以下步骤进行操作:

1.创建一个密码文件,用于存储用户名和密码。可以使用mosquitto_passwd命令生成密码文件。例如,执行以下命令创建一个名为passwd的密码文件:

mosquitto_passwd -c /etc/mosquitto/passwd <username>

替换<username>为你要创建的用户名。然后会提示输入密码,输入密码后会生成密码文件。

2.Mosquitto的配置文件中添加以下行来启用用户名和密码认证:

txt

password_file /etc/mosquitto/passwd

allow_anonymous false

这里的/etc/mosquitto/passwd应该是你在第一步中创建的密码文件的路径。

3.保存并关闭配置文件。

4.重启Mosquitto服务以使配置生效。具体的重启方法可以参考前面的回答。

配置完成后,客户端连接Mosquitto时需要提供正确的用户名和密码才能进行连接和访问。


今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多串口服务器、数传电台、lora模块等无线数传模块产品更多资料,感兴趣的小伙伴可以登录我们的亿佰特官网和企业公众号(微信号:cdebyte)进行了解,也可以直接拨打400电话咨询技术专员!


相关阅读:

1、MQTT协议详解及物联网应用特点

2、串口服务器快速接入MQTT3.1协议服务器链接配置教程

3、西门子PLC利用函数块连接MQTT服务器发布消息教程

4、Node-RED工具MQTT IN节点的动态用法



亿佰特官网 4000-330-990

https://www.wjx.cn/jq/84863372.aspx