基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南

在ESP32基于IDF开发的过程中,对于MQTT功能的测试,我们利用原生代码编译即可测试,但是想要测试发布订阅是否有效,需要搭建MQTT服务器。MQTT服务器的搭建。我们采用的是EMQ的开源服务器进行测试。

首先,我们需要登录EMQ的官网界面免费下载、试用 EMQ 产品 (emqx.com)

之后,我们找到自己需要下载的EMQ版本进行下载

进入,下载界面之后,根据提示解压并后台启动(位置:D:\EMQ\mqtt\bin,因人而异)

如何启动emqx

启动完成后,查看使用指南

在使用指南中,我们先快速启动,测试mqtt后台启动的服务器是否正常(即在服务器中输入地址Dashboard 进行访问)

输入账号密码进行登录

登录后进行配置

新版本(图一)

配置完成后进行测试(此处测试需要用到下面的工具,因此可以暂时跳过这一步,先安装下面的工具再测试)

停!!!不能再跳过了。

此时选择我们使用的EMQX工具类型(web版下载版

对于web版:

首先进入web版界面

其次开始配置工具(汉化,毕竟母语更容易懂)

然后开始使用

先新建一个连接

然后对连接进行配置

此时,点击连接,如果设置正确,则可正常连接,异常则会不断重连(异常一般是由于配置错误引起的)

配置完成后可进行发布和订阅(和上面步骤配合测试)

测试结果:

对于下载版:

首先找到下载位置

点击下载按钮

选择对应版本进行下载

对软件进行解压安装之后,打开软件,也是先配置语言

然后开始建立连接

配置连接

开始测试

测试结果:

此时ESP32的测试环境已经完成部署,可以修改ESP32代码进行测试

ESP32代码的修改:

对于ESP32的测试和上述描述是存在一定差异的。

首先,我们先按最简单的修改,直接修改uri和用户名进行访问

(网址来源)

此时,运行起来,开始报错

我们发现我们采用的是局域网,所以需要让电脑和esp32处于同一网络,我们就使用手机热点,电脑和设备连接同一个网络

此时,运行起来,开始报错(错误和上面一样)

经过网上搜索得知,127.0.0.1 是本机的用于本机自己监听的,外部设备不能访问这个IP。因此,我们需要将IP改为本机地址IP。

查看IP流程

1.找到网络连接图标

  1. 找到属性,点进进入

  1. 下拉找到IP地址

  1. 修改代码

(网址来源)

  1. 此时再次运行ESP32,我们可以看到能正常发送消息

  1. 此时利用后台进行一些消息的通信测试

  1. 再测试一些消息的上报(重启esp32即可)

测试的发布订阅主题来源是来自ESP32参考代码

此时,ESP32连接已经结束。。

当然还有

另外一种连接配置方法,利用ip地址和端口进行访问

我根据网上的介绍进行了配置,进行测试,报错

此时,网络上已经没有后续介绍,然后我查代码发现此时报错的分支是如下位置

经过查找得知错误原因是client->config->scheme为空

因此我对其进行查找发现其填充位置为如下位置

因为我们采用的是tcp的方式,因此查找原因发现,当框中条件不成立时,就会产生上述错误。继续向上查询,发现该函数的调用位置为

再往上层走,就回到了我们的初始化函数

此时我们会发现该结构体变量确实没有配置,于是我们配置该变量

此时编译烧录测试,连接成功,收发成功

自此,mqtt连接及服务器搭建完成。下一篇将介绍如何连接阿里云平台。

猜你喜欢

转载自blog.csdn.net/m0_45068979/article/details/131684810