连接阿里云失败MQTT connect failed, error code:2

问题描述

使用ESP8266 Node MCU Arduino模式烧写程序,串口调试报错

MQTT connect failed, error code:2

问题解决

我查阅了很多资料,大家可以参考一下这一个讨论

解决方案

我查阅了<PubSubClient.h>文件

// MQTT_MAX_TRANSFER_SIZE : limit how much data is passed to the network client
//  in each write call. Needed for the Arduino Wifi Shield. Leave undefined to
//  pass the entire MQTT packet in each write call.
//#define MQTT_MAX_TRANSFER_SIZE 80

// Possible values for client.state()
#define MQTT_CONNECTION_TIMEOUT     -4
#define MQTT_CONNECTION_LOST        -3
#define MQTT_CONNECT_FAILED         -2
#define MQTT_DISCONNECTED           -1
#define MQTT_CONNECTED               0
#define MQTT_CONNECT_BAD_PROTOCOL    1
#define MQTT_CONNECT_BAD_CLIENT_ID   2
#define MQTT_CONNECT_UNAVAILABLE     3
#define MQTT_CONNECT_BAD_CREDENTIALS 4
#define MQTT_CONNECT_UNAUTHORIZED    5

然后映射到MQTT_CONNECT_BAD_CLIENT_ID 这个问题
参考

我昨天下午已经联系了阿里的工程师,最后解决了。
mqtt的密码错误这个坑我已经在第一轮就踩过了,的确解释的不清楚,已经反馈了阿里。
那边工程师给出的答复是:
工程师 97851 号 : 你好, 返回值2表示客户端标识符不正确, -4表示用户名或者密码错误。 请做以下检查:
1、先检查一下PubSubClient.h文件中定义的 MQTT_MAX_PACKET_SIZE的值, 最好要大于1024, MQTT_KEEPALIVE 大于60;
2、检查一下你的签名和接入参数的设置,可以参考文档 https://help.aliyun.com/document_detail/73742.html?spm=a2c4g.11186623.6.650.3820619bBWPshh 。
我仔细检查了一遍才发现我的c盘还有一个PubSubClient.h文件,这个文件没有改…我只修改了arduino盘下的文件。结果导致一遍遍的被阿里服务器拒绝…真是服了…
谢谢你的答复,咱们替其他同学先踩踩坑吧~
摘自jpolo的回答

修改库文件<PubSubClient.h>的内容
在这里插入图片描述
之后就成功了!
MQTT connect succeed!

ESP32 MicroPython是一个针对ESP32微控制器平台的Python嵌入式环境,它允许你在ESP32上运行Python代码。要将ESP32 MicroPython连接阿里云MQTT服务,你需要遵循以下步骤: 1. **安装库**: 首先,确保你已经在ESP32 MicroPython环境中安装了`umqtt.simple`库,这个库提供了一个简单的客户端API用于MQTT通信。如果没有,可以在终端或者IDE中使用以下命令安装: ``` import network network.WLAN().init() # 如果没有自动安装,可以尝试手动安装 exec(open("https://github.com/micropython/micropython-esp32/modules/umqtt/simple.py").read()) ``` 2. **初始化网络连接**: 使用`network`模块创建WiFi或LoRa等无线连接,并连接到你的阿里云服务器。 3. **设置MQTT连接**: ```python from umqtt.simple import MQTTClient client_id = "your_device_unique_id" # 设备标识 broker_address = "your_mqtt_broker_url" # 阿里云MQTT服务器地址 username = "your_username" # 登录阿里云MQTT需要的用户名 password = "your_password" # 密码 def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT Broker!") else: print(f"Failed to connect, error code {rc}") client = MQTTClient(client_id, broker_address) client.username_pw_set(username, password) client.on_connect = on_connect client.connect() ``` 4. **订阅主题并发送消息**: 当连接建立后,你可以开始订阅主题并发布消息: ```python def callback(topic, msg): print(f"Received message on topic {topic}: {msg}") client.set_callback(callback) client.subscribe("your_topic") # 订阅感兴趣的MQTT主题 ``` 5. **保持连接**: 在设备持续运行期间,保持MQTT连接打开: ```python try: while True: client.check_msg() # 这里可能会阻塞,直到有新的消息到达 except KeyboardInterrupt: client.disconnect() pass ``` 记得替换上述代码中的`your_device_unique_id`、`your_mqtt_broker_url`、`your_username`、`your_password`和`your_topic`为你实际的配置信息。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值