在ESP32基于IDF开发的过程中,对于MQTT功能的测试,我们利用原生代码编译即可测试,但是想要测试发布订阅是否有效,需要搭建MQTT服务器。MQTT服务器的搭建。我们采用的是EMQ的开源服务器进行测试。
首先,我们需要登录EMQ的官网界面免费下载、试用 EMQ 产品 (emqx.com)
之后,我们找到自己需要下载的EMQ版本进行下载
进入,下载界面之后,根据提示解压并后台启动(位置:D:\EMQ\mqtt\bin,因人而异)
如何启动emqx
启动完成后,查看使用指南
在使用指南中,我们先快速启动,测试mqtt后台启动的服务器是否正常(即在服务器中输入地址Dashboard 进行访问)
输入账号密码进行登录
登录后进行配置
新版本(图一)
配置完成后进行测试(此处测试需要用到下面的工具,因此可以暂时跳过这一步,先安装下面的工具再测试)
停!!!不能再跳过了。
对于web版:
首先进入web版界面
其次开始配置工具(汉化,毕竟母语更容易懂)
然后开始使用
先新建一个连接
然后对连接进行配置
此时,点击连接,如果设置正确,则可正常连接,异常则会不断重连(异常一般是由于配置错误引起的)
配置完成后可进行发布和订阅(和上面步骤配合测试)
测试结果:
对于下载版:
首先找到下载位置
点击下载按钮
选择对应版本进行下载
对软件进行解压安装之后,打开软件,也是先配置语言
然后开始建立连接
配置连接
开始测试
测试结果:
此时ESP32的测试环境已经完成部署,可以修改ESP32代码进行测试
ESP32代码的修改:
对于ESP32的测试和上述描述是存在一定差异的。
首先,我们先按最简单的修改,直接修改uri和用户名进行访问
(网址来源)
此时,运行起来,开始报错
我们发现我们采用的是局域网,所以需要让电脑和esp32处于同一网络,我们就使用手机热点,电脑和设备连接同一个网络
此时,运行起来,开始报错(错误和上面一样)
经过网上搜索得知,127.0.0.1 是本机的用于本机自己监听的,外部设备不能访问这个IP。因此,我们需要将IP改为本机地址IP。
查看IP流程
1.找到网络连接图标
- 找到属性,点进进入
- 下拉找到IP地址
- 修改代码
(网址来源)
- 此时再次运行ESP32,我们可以看到能正常发送消息
- 此时利用后台进行一些消息的通信测试
- 再测试一些消息的上报(重启esp32即可)
测试的发布订阅主题来源是来自ESP32参考代码
此时,ESP32连接已经结束。。
当然还有
另外一种连接配置方法,利用ip地址和端口进行访问
我根据网上的介绍进行了配置,进行测试,报错
此时,网络上已经没有后续介绍,然后我查代码发现此时报错的分支是如下位置
经过查找得知错误原因是client->config->scheme为空
因此我对其进行查找发现其填充位置为如下位置
因为我们采用的是tcp的方式,因此查找原因发现,当框中条件不成立时,就会产生上述错误。继续向上查询,发现该函数的调用位置为
再往上层走,就回到了我们的初始化函数
此时我们会发现该结构体变量确实没有配置,于是我们配置该变量
此时编译烧录测试,连接成功,收发成功
自此,mqtt连接及服务器搭建完成。下一篇将介绍如何连接阿里云平台。