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

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

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

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

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

然后浏览器输入

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

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

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

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

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

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

1.连接wifi

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连接

如图:

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

4.发布主题

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

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

5 .订阅主题

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

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

6.心跳包

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

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

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

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

经验分享 程序员 微信小程序 职场和发展