记录调试MQTT过程中的尴尬-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1504|回复: 7

记录调试MQTT过程中的尴尬

[复制链接]
发表于 2021-10-19 23:10 | 显示全部楼层 |阅读模式
前天晚上用ESP8266调试MQTT 搞了几个小时,代码看起来没有任何问题,但就是连接MQTT后会自动掉线。总以为是代码写的问题,反复折腾,最后发现有两个问题影响掉线
1、MQTT_CLIENT_ID  重复,会很快掉线
2、client.loop();    没有被重复执行,会隔几秒就掉线。

然后今天晚上用ESP32调试MQTT 又搞了几个小时,又是掉线问题,始终找不到原因,开始以为是代码问题,在搞的过程中突然想起是ID重复,搞定ID重复后,还掉线,想着还有个啥问题,但是一直没想到,又继续折腾,再参照ESP8266的代码,最终搞明白了,把第二条忘记了。

由于前天晚上搞的太晚就没有记录,导致今天又折腾几个小时,所以今天一定记录下来,免得下次再犯同样的错误
发表于 2021-10-20 13:48 | 显示全部楼层
client.loop负责接收和发送心跳包,你不持续运行超时自然掉线
clientID是唯一的,用于区分设备,相同clientID服务器认为你重新连接了,自然就把旧的连接删除了
 楼主| 发表于 2021-10-20 17:14 | 显示全部楼层
XlinliY.Zhang 发表于 2021-10-20 13:48
client.loop负责接收和发送心跳包,你不持续运行超时自然掉线
clientID是唯一的,用于区分设备,相同client ...

老哥,我有个问题一直没搞明白,想请教一下。我在用ESP8266-01s 给 Arduino Mega2560 通过串口收发数据 时在2560上会出现丢数据的情况不知道是怎么回事。

8266用MQTT和服务器通讯    把收到的数据 通过串口 转给 2560  ,2560把传感器的数据通过串口转给8266 ,8266把数据通过MQTT交给服务器,基本就是这个流程。我是想做一个远程控制小车,但发现如果数据交换很频繁比如一秒50条数据的话,肯定会出现丢包的情况,我很确定8266接收MQTT数据是没有问题的,问题肯定是出现在2560这边,但是怎么处理,怎么出会现这种情况,我搞不明白。
发表于 2021-10-20 18:28 | 显示全部楼层
ws9528 发表于 2021-10-20 17:14
老哥,我有个问题一直没搞明白,想请教一下。我在用ESP8266-01s 给 Arduino Mega2560 通过串口收发数据  ...

发太多溢出 或者是 中断打断了
 楼主| 发表于 2021-10-23 22:51 | 显示全部楼层
XlinliY.Zhang 发表于 2021-10-20 18:28
发太多溢出 或者是 中断打断了

2560只接收,不发送,问题好像不大。一但 既发送又接收就会出现丢包。一直搞不明白,也没办法解决,最后只能换NODEMCU了,但是这个玩意引脚太少,目前正在学习ESP32
发表于 2021-10-24 13:45 | 显示全部楼层
ws9528 发表于 2021-10-23 22:51
2560只接收,不发送,问题好像不大。一但 既发送又接收就会出现丢包。一直搞不明白,也没办法解决,最后 ...

ESP8266负责解析和通讯,通过SPI对328p/MEGA2560进行读写控制,方便多了
 楼主| 发表于 2021-10-25 23:04 | 显示全部楼层
XlinliY.Zhang 发表于 2021-10-24 13:45
ESP8266负责解析和通讯,通过SPI对328p/MEGA2560进行读写控制,方便多了

没用过SPI 搞不清楚,有时间尝试一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:34 , Processed in 0.084086 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表