esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)

前言:esp8266推出已久,esp8266-01/01s是常见的两款,本文通过抓包原始数据使用tcp透传来做简单的功能测试。

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第1张图片

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第2张图片

01和01s区别不大,一样使用即可,下图实为01s

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第3张图片

  • *这里在Windows本地安装一个emq服务器(看连接状态,供调试查看客户端是否断开用)

    官网地址如下,安装后启动,官网有详细使用指导,看相应系统版本即可

    https://www.emqx.io/cn/products/broker

    然后浏览器输入 localhost:18083

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第4张图片

    对模块操作后刷新浏览器即可查看当前连接客户端

  • 为方便分析学习,安装一个网络抓包工具wireshark(可以直接复制里面的mqtt数据)

    百度搜索下载安装即可。。,打开软件,如下设置

   

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第5张图片

 

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第6张图片

    然后电脑本地使用mqtt调试助手连接你的云测试服务器:

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第7张图片

ID填一个字节就好,方便看数据,然后连接,此时抓包软件将刷新数据:

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第8张图片

  • 8266 模块操作(默认波特率115200)

    1.连接wifi

AT+CWMODE_DEF=1    //设置station模式    (后缀_DEF的指令异常的把_EDF去掉试一下,正常则忽略,下同)

AT+CWSTARTSMART    //微信配网,手机连接同一wifi关注安信可科技官方公众号,微信开发里面有微信配网,跟着操作即可

//AT+CWJAP_DEF="wifi","password"    //手动配网,需要时选择(若返回异常,换CWJAP试试)

//AT+CWAUTOCONN=1  //上电自动连接wifi,根据需要配置
//AT+CIPSTA?       //查询当前IP地址(若返回异常,换CIPSTA_DEF试试)

    2.建立tcp连接

AT+CIPMODE=1    //选择透传模式,进入透传模式后tcp不会超时断开

AT+CIPSTART="TCP","m2m.eclipse.org",1883    //建立tcp连接,类似此格式,该服务器是一个公用测试服务器,改到你的

AT+CIPSEND    //进入透传模式,然后配置一下串口助手如下
              //1、取消发送新行,选择16进制发送
              //2、接收16进制显示
              //注1:取消发送新行,发送+++可退出透传,重新勾选发送回车换行即可使用AT指令
              //注2:安信可提供的串口助手发送16进制后打钩会取消,可以用正点原子的串口助手,也有多条发送

开启上面的订阅的话,连接到mqtt端口即可看到connected会加1 ,如果退出透传的话,过一会儿会自动断开tcp连接。

    3.建立mqtt连接

     如图:

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第9张图片

对连接和发送状态是否成功通过各种应答判断,这里对原始数据不进行解释 。。。,发送完成后刷新EMQ Dashboard可以看到客户端id正确,说明已经连接

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第10张图片

 

   4.发布主题

还是先抓包得到16进制码,然后使用串口发送

注:这里抓包只是抓取mqtt原始数据,是连接到云服务器的,串口at实验连接到本地服务器,是为了在emq的Dashboard上刷新查看连接的客户端和一些连接设置,这么做的原因是我没找到emq的armhf版本,而mosquitto的系统状态订阅查看不方便。抓本地服务器的数据的话走的链路应该不一样,可以抓的到,但我不清楚怎么筛选。。故tcp包抓的到,但不能方便的通过找data来找原始数据。。。知道的同学可以评论留言。。。

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第11张图片

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第12张图片

5 .订阅主题

依旧如上,用对应客户端连接到云服务器,抓取订阅包,在mqtt连接时发送,确认返回值

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第13张图片

订阅主题后其他客服端发布相应主题,只要mqtt没有断开即可收到订阅,如下:

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第14张图片

 

 6.心跳包

 还是如上,抓取心跳包,重新开始抓包,等一会儿即可

esp8266-01/01s AT连接mqtt 发布/订阅,简单测试(新手向)_第15张图片

在超时时间内发送心跳包就可以保持与服务器的连接

以上即8266用到的一些基本操作,对原始数据的理解对照mqtt协议即可,中文手册下载地址如下:

https://github.com/mcxiaoke/mqtt

注:上面因为使用了两个服务器,所以看起来很混乱。。。本篇操作思路是云服务器抓包,本地调试,清楚目的,怎么调都可以----------

 

 

你可能感兴趣的:(Esp8266/Esp32,esp8266-01/01s,普通固件AT指令,mqtt)