基于ESP32搭建物联网服务器十三(自已搭建一个MQTT服务器)

article/2025/10/23 15:52:56

在之前的文章中:ESP32搭建WEB服务器十二(使用MQTT协议与ESP32互动)_你的幻境的博客-CSDN博客

我们已经实现了ESP32通过MQTT协议连接到公共MQTT服务器上,但是公共服务器在稳定性或安全性上,很多时候无法保证。这时,我们除了可以购买比如:

阿里巴巴的物联网平台:物联网平台_设备接入_设备管理_监控运维_数据分析-阿里云

华为的IoT物联网平台:华为云IoT全栈云服务_IoT物联网解决方案-华为云

腾讯的物联网通信平台:物联网通信 | 腾讯云

等等平台服务,但在个人学习或者开发测试中,自已搭建一个个人的MQTT服务器是更好的一个选择。

即然目标是个人学习或开发测试,这里所选的工具或服务,都会偏向于操作简单、免费、更低的价格的工具或者服务。

目录

安装MQTT服务器应用

配置mosquitto

创建用户

配置文件mosquitto.conf的常用配置选项

启动MQTT服务

 后台启动MQTT服务


安装MQTT服务器应用

MQTT服务器来说,这里选择Eclipse mosquitto当前版本可以最高可以支持MQTT 5.0协议。下载地址:Download | Eclipse Mosquitto

 在windows系统下,我们应该先查看自已系统类型是64位还是32位,选择相应的安装文件。

安装步骤十分简单,

的安装的选项中,最好勾选如图的Service选项,勾选该选项后,在window系统服务时,会生成"Mosquitto Broker"的服务,可以让你的电脑在启动时自动启动MQTT服务器。

中间你可以选择你想要安装的目录(最好安装在非C盘的根目录下和默认的Program Files目录下,选择安装在其它硬盘分区的根目录下,如:F:\mosquitto,因为在有的系统中因为安全权限问题,可能造成不同因为权限运行不正常的问题,也因为默认安装目录"Program Files"是带有空格的目录,也可能引起一些不必要的麻烦。但注意记录下你的安装目录路径。

可选操作,设置环境变量

安装完成后,在桌面右键 "我的电脑"(win10为"此电脑") => 点击"属性"菜单 => 找到"高级系统属性"进入 => 选择"高级"标签 => 在高级标签下找到"环境变量" =>在下方的系统变量中找到"Path"变量属性双击 => 在弹出的窗口中点击"新建" => 输入之前记录下来的安装目录路径。

如果设置完成,可以在命令行介面无需进入安装的文件夹,运行指令,但在实际操作中,会出现不同的状况。所以,以下在命令行(CMD)中的操作最好都cd至安装目录内操作。

配置mosquitto

Mosquitto并没有UI介面,他的操作大多是用命令行(CMD)来操作。使用键盘按下 WINDOW + R ,输入"cmd",点击确定来打开命令行输入介面。进入安装目录

f:cd mosquitto

创建用户

我们测试一下创建一个用户(在公共MQTT服务器中,并不需要用户名称和密码也可以登陆),输入:

mosquitto_passwd -c pwfile test

该命令的"-c"参数表示将重新创建一个密码文件,在使用中要慎用该参数,如果原密码文件中已存有其它的用户信息,将会被清空。

运行后屏幕将分两次提示输入密码(输入过程中你的输入不会以*号或其它方式显示出来,不用管,只要输入并按回车即可),两次输入的密码需要保持一致。

 完成后,我们回到安装目录中,看看是否能找到创建的密码文件 "pwfile"。

如果文件存在,用记事本或其它文本编辑工具打开该文件。

 可以观察到,文件内容的最前面的文本是我们所设置的用户名,他是用明文保存在文件里的,在用户名后面,我们看到一串未知的乱码一样的文本,这段就是我们所设置的密码,但这串密码是用sha512-pbkdf2加密后的文本。加密方式也可以用在该命令中用"-H"来选择"sha512-pbkdf2“或”sha512“两种加密方式。

mosquitto_passwd命令简介:

mosquitto_passwd [ -H hash ] [ -c | -D ] passwordfile usernamemosquitto_passwd [ -H hash ] -b passwordfile username passwordmosquitto_passwd -U passwordfile

选项参数:

-b

以批处理模式运行。允许在命令行中显示密码,这可能很方便,但应谨慎使用,因为密码在命令行和命令历史中是可见的。

-c

创建一个新的密码文件。如果该文件已经存在,它将被覆盖。使用应注意确认该密码文件已经不再需要或做好该密码文件的备份。

-D

删除该密码文件,使用应注意确认该密码文件已经不再需要或做好该密码文件的备份。

-H

选择密码文本的加密方式,默认为"sha512-pbkdf2"加密方式,可选项为"sha512-pbkdf2“或”sha512“。

-U

这个选项可以用来升级/转换(旧版本会生成明文的密码文本)一个使用纯文本密码的密码文件为使用散列密码的文件。它将修改指定的文件。它不会检测密码是否已经被哈希化,所以在一个已经包含哈希化密码的密码文件上使用它,会根据旧的哈希化密码生成新的哈希化密码,使密码文件无法使用。

passwordfile

要修改的密码文件。

username

要添加/更新/删除的用户名。

password

在批处理模式时使用的密码。

当前,我们已经创建了一个用户,如果需要增加用户,可以输入:

mosquitto_passwd pwfile test2

注意,这里输入的命令没有选择使用"-c"选项参数。

现次打开密码文件

 可以发现,除了之前的用户信息,已经增加了一个用户信息。


配置文件mosquitto.conf的常用配置选项

在mosquitto的目录内,有一个叫mosquitto.conf的文件,mosquitto几乎所有配置,都可以在该文件中找到,这里介绍部份比较常用的选项。我们用记事本或其它文本编辑工具打开该文件。

编辑该文件推荐使用系统自带的记事本,在使用其它的文本编辑工具时,曾出现无法识别该文件内的配置的情况。如果以后能确定原因,会更新本文。

 可以看到,文件中的所有选项都是被注释的状态。我们可以找到对应的选项,删除行首的注释符"#"打开该选项,或者在文件的最后加入你想要设置的选项。

这里介绍几个比较常用的选项:

#设置不允许匿名登录
allow_anonymous false#设置账户密码文件位置为指定文件,当allow_anonymous选项为false,这里也必须配置正确
password_file F:\mosquitto\pwfile#端口配置(旧版为port)
listener 1883#支持mqtt以及websocket,默认禁用websocket。
protocol mqtt# 允许的最大连接数,-1表示没有限制
max_connections -1

把以上的配置复制粘贴到mosquitto.conf文件的最后,当然,也可以新建一个配置文件来保存这些设置(比如"mqtt",扩展名并不是必须的,为了方便区别其它文件,最好是加入扩展名),注意记录好你的配置文件名称。

启动MQTT服务

在命令行中输入:

mosquitto -c mosquitto.conf -v

其中"-c"参数是指定一个配置文件,如果不指定,所以配置将为默认,效果和空白配置文件或所有选项被注释的效果一样。"-v"参数为打开日志显示,后续可以在命令行中显示运行日志。

 运行后,如果正常启动,会出现以上输出,介面将保持不动,也不能进行文字或命令输入,此时,MQTT服务已经启动,注意:这种情况并非程序崩溃或出错,千万不要关闭或退出该介面。

测试用客户端来连接服务器

我们在本机上可以直接使上在之前的文章中所介绍的客户端工具MQTTX来测试连接我们刚刚启动的服务器。

点击上图所示的+号来新建一个连接

 其中,用户名和密码为之前所设定的用户名和密码,如果遗忘,回到本文开始来重新生成新的密码文件。这里,第一次连接我们可以先选择不输入用户名和密码来测试"不允许匿名登录"的配置是否生效。如果不输入用户名和密码或输入错误的用户名和密码失败,但输入正确才能登录,说明配置已经生效。

如果所有配置正确,我们就可以连接到刚刚创建的服务器了

 我们回到命令行,窗口

 可以发现,窗口输出了一些关于客户端登陆到服务器的日志信息。

我们在MQTTX新建一个主题,来测试是否能正常地发布和订阅

这里设置为定阅一个名为test的主题,我们发送一个消息到该主题

 如果正常,消息窗将出现发送和接收的消息

 后台启动MQTT服务

之前为了方便测试和观察,是在CMD窗口中来启动MQTT服务,但在实际使用中,国为这个窗口需要保持打开的状态才能进行工作,在电脑使用中十分不方便,我们需要让它在后台中开启。

在之前安装该工具的过程中,如果我们勾选了"Server"选项,那我们可以在“我的电脑”右键=>选择"管理"菜单=>在管理窗口找到=>"服务和应用"里选择"服务"=>在右边的窗口中找到"Mosquitto Broker"服务=>右键选择启动。

在启动后,该服务会默认使用mousquitto.conf这个配置文件启动MQTT服务。这时,就可以在后台启动该服务了。在该服务属性里把启动类型设置为"自动",在电脑开机会就可以自动开启该服务了。

我们就可以之前一样,用MQTTX工具对他进行连接测试。

至此,我们已经完成MQTT在电脑上的安装,但当前情况下,因为家用宽带一般是没有公网IP的,在两个设备不是连接在同一个路由或局域网的情况下,我们在其它地方暂时还不能连接到该服务器,在之后的文章中,会介绍如何让公网的其它客户端也能连接到我们自已创建的服务器。


http://chatgpt.dhexx.cn/article/P4oiy4Wo.shtml

相关文章

阿里云搭建MQTT物联网服务器

一、MQTT简介 1、MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上&…

搭建一个物联网平台

搭建一个简单的物联网平台 之所以产生自己搭建平台的想法,是因为本来要使用 one* 平台完成一项作业,但是这个平台的官方文档写的太混乱了,有些地方写的有很简略,对我这种想要入门的小白来说不太友好,而且网上的第三方资…

物联网服务器搭建记录,心得

前言 在庞大的物联网世界中,自己拥有一台物联网服务器时多么一件美好的事。如同自己做的衣服更合身,自己搭建的物联网服务更灵活。 2022/3/9搭建服务 首次搭建了服务,但是感觉在安全方面是个很大的问题。每个设备都能连接,每个…

超微物联网超级服务器IoT SuperServer SYS-210SE-31A 评测

SYS-210SE-31A是Supermicro在日益流行的边缘服务器领域的最新产品。有趣的是,这款2单元430mm短深度服务器提供了3个热插拔节点,每个节点都有1个CPU和8个DIMM插槽。它还具有PCIe Gen4 x16扩展插槽、免工具可维护性和高达55℃的工作温度范围。对实现高度通…

JAVA-删除文件夹下所有文件的3种方法,推荐使用JDK8 Stream流的语法

一、删除文件或文件夹的四种基础方法 下面的四个方法都可以删除文件或文件夹,它们的共同点是:当文件夹中包含子文件的时候都会删除失败,也就是说这四个方法只能删除空文件夹。 需要注意的是:传统 IO 中的 File 类和 NIO 中的 Pat…

软件测试必看的5本书

最近好多朋友加我微信,问我有没有好一点的测试相关书籍推荐看一下,现具体介绍如下几本: 1. 软件测试的艺术(第3版) 软件测试的艺术 作 者:(美)梅耶(Myers, G. J.) 等著,张晓明,黄琳 译 出 版 社:机械工业出版社 简介:本书以一次自评价测试开篇,从软件测试的心理…

软件测试入门有哪些书籍可供推荐?

书不在多,关键是精! 入门基础:《软件测试》、《鸟哥的Linux私房菜》、《head first python》 测试技术:《深入理解Java虚拟机》、《移动App性能评测与优化》、《性能之巅》 代码分析:《head first 设计模式》、《重…

盘点几本软件测试入门必读的经典书籍,让你少走一半弯路

读书一直以来就是获取知识的最直接途径,并且成本低廉。每本书都是作者深度思考和总结的成果,书本的内容一般都要经过缜密的调研,都是作者辛辛苦苦实践的结晶。技术书籍写作耗时都比较久,基本上能广泛流传的书籍,都是经…

你在自学软件测试吗?学软件测试10本必看书

没有软件开发,就没有软件测试。有了软件测试,软件开发出的软件产品才能达到用户满意的地步,他们之间是相互依赖的关系。软件测试在软件开发行业是不可或缺的存在,你在自学软件测试吗?学软件测试10本必看书你该看&#…

推荐几本软件测试方面的经典书籍

《软件测试》作者:(美)Ron Patton译者:周予滨 姚静出版社:机械工业出版社原出版社: SAMS我所见过的最好最经典的软件测试入门书,有一个别名叫“软件测试的本质”。书中没有讨论太多的软件测试理论,只包含了一部分常用的、基本的知识。从什么是软件测试、为什么要作软件…

软件测试工程师必读的十本书

软件,已成为产品集成的必需部件。 软件产品的质量,与用户生活水平正比。 软件质量相关专业,正用武之地,期大有可为。 根据个人经验,推荐软件测试相关的十本书,静待有缘人。 1、软件测试的艺术 软件测试…

学软件测试最好的几本书,这8本书能帮你很多

真的勇士, 敢于直面惨淡的 warning 、 敢于正视淋漓的 error ! 有人喜欢创造世界,他们做了开发者;有的人喜欢开发者,他们做了测试员。什么是软件测试?软件测试就是一场本该在用户面前发生的灾难提前在自己面前发生了&a…

软件测试学习书籍【附电子版】

零基础学软件测试需要读哪些书籍?软件测试经典书籍推荐什么?对于学习软件测试而言,取得一本好书做指导,那是相当的有价值,好书相当于一位好老师,带你入门,带你走进知识深处,下面小编就给大家推荐一些软件…

软件测试/自动化测试/测试开发/性能测试经典好书推荐

目录 前言 测试理论与实践 性能测试 安全测试 自动化测试 编程语言与开发技能 管理技能 前言 软件测试入行容易进阶难。从测试小白成长为测试经理、总监级别人才,要跨越长长的技术栈升级之路,挑战非常高的综合能力要求。 大牛都是相似的&#xf…

软件测试十本书

软件,已成为产品集成的必需部件。 软件产品的质量,与用户生活水平正比。 软件质量相关专业,正用武之地,期大有可为。 根据个人经验,推荐软件测试相关的十本书,静待有缘人。 (1) 软件…

软件测试 | 测试开发书单 | 测试工程师必读经典好书,你读过几本?

测试好书1080480 46.3 KB 软件测试入行容易进阶难。在持续交付体系背景下,要成为测试开发高手意味着非常系统综合的知识储备。广泛阅读经典好书是快速成长的必要方式。 霍格沃兹测试学院重点推荐几本测试经典好书以及必读清单。文末加入测试开发读书群,一…

软件测试书籍有哪些_软件测试书籍推荐

软件测试行业在国内才起步不久,很多人都是刚刚毕业就进入这个行业,或者从其他岗位转过来,对软件测试的知识和技能了解的有限,而软件测试又是一个非常重视实践经验的工作。如何在较短时间内熟悉软件测试的基础知识、并掌握一定的软…

学软件测试必看的10本书推荐给你

软件测试从字面意思大家都知道,是为软件而诞生的,没有软件开发,就没有软件测试。有了软件测试,软件开发出的软件产品才能达到用户满意的地步,他们之间是相互依赖的关系。软件测试在软件开发行业是不可或缺的存在&#…

软件测试人员必看的十本经典书籍

第一本:Google软件测试之道 《Google软件测试之道》推荐理由: 1、本书抓住了Google做测试的本质,抓住了Google测试这个时代复杂软件的精华。 2、本书描述了测试解决方案,揭示了测试架构是如何设计、实现和运行的&#…

「建议收藏」推荐给软件测试员的10本书

01、《Google软件测试之道 》 作者:James A. Whittaker 、 Jason Arbon /、Jeff Carollo。 《google软件测试之道》介绍了作者对于google测试如何继续演进的见解、google乃至整个业界的测试方向的一些预言,相信很多读者都会感受到其中的洞察力&#xf…