Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案
Posted yeshuimaowei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案相关的知识,希望对你有一定的参考价值。
最近在用Esp8266 Arduino连接阿里云IOT的时候,服务器端老是返回rc=2 的错误!
用了MQTTfx模拟连接阿里云IOT没有问题,但是把同样的ClientID,UserName和Password
用PubSubClient去连接阿里云的时候,就会出现问题.
所以对MQTTfx的发送过程,和PubSubclient的发送过程进行了抓包,
可以发现两种方式连接只有第14个字节内容不同,把pubsubclient的源码捞出来,可以看到:
buffer[length++] =((MQTT_KEEPALIVE) & 0xFF);
这个应该是对KEEPALIVE的请求定义,
MQTT_KEEPALIVE 宏定义为0x0F,经过这里计算后这个字节的结果仍为0x0F,而MQTTfx的为0x3C,找出不同后,把这一句的代码直接改为:
buffer[length++] =0x3C;// ((MQTT_KEEPALIVE) & 0xFF);
然后编译代码,上传到Esp8266,果然很快就连接上阿里云了!
遇到相同问题的同学不妨试下!
以上是关于Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案的主要内容,如果未能解决你的问题,请参考以下文章
在Arduino IDE中安装固件ESP32,ESP8266板
Arduino开发ESP8266——安装与配置ESP8266开发板
arduino下esp8266+web实现远程开关窗和雨滴感应开关窗
arduino UNO r3和arduino mega2560 用esp8266 01的WiFi模块可以接入百度天工物联网平台吗?