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

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

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第1张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第2张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第3张图片

如何启动emqx

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第4张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第5张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第6张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第7张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第8张图片

输入账号密码进行登录

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第9张图片

登录后进行配置

新版本(图一)

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第10张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第11张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第12张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第13张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第14张图片

停!!!不能再跳过了。

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

对于web版:

首先进入web版界面

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第15张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第16张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第17张图片

然后开始使用

先新建一个连接

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第18张图片

然后对连接进行配置

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第19张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第20张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第21张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第22张图片

测试结果:

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第23张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第24张图片

对于下载版:

首先找到下载位置

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第25张图片

点击下载按钮

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第26张图片

选择对应版本进行下载

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第27张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第28张图片

然后开始建立连接

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第29张图片

配置连接

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第30张图片

开始测试

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第31张图片

测试结果:

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第32张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第33张图片

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

ESP32代码的修改:

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

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第34张图片

(网址来源)

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第35张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第36张图片

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

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第37张图片

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

查看IP流程

1.找到网络连接图标

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第38张图片

  1. 找到属性,点进进入

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第39张图片

  1. 下拉找到IP地址

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第40张图片

  1. 修改代码

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第41张图片

(网址来源)

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第42张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第43张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第44张图片

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第45张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第46张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第47张图片

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

当然还有

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第48张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第49张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第50张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第51张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第52张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第53张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第54张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第55张图片

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

基于ESP32的mqtt客户端测试及服务器搭建流程和踩坑指南_第56张图片

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

你可能感兴趣的:(ESP32开发,mqtt,服务器,物联网,c语言,vscode)