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

ws9528 发表于 2021-10-19 23:10

记录调试MQTT过程中的尴尬

前天晚上用ESP8266调试MQTT 搞了几个小时,代码看起来没有任何问题,但就是连接MQTT后会自动掉线。总以为是代码写的问题,反复折腾,最后发现有两个问题影响掉线
1、MQTT_CLIENT_ID重复,会很快掉线
2、client.loop();    没有被重复执行,会隔几秒就掉线。

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

由于前天晚上搞的太晚就没有记录,导致今天又折腾几个小时,所以今天一定记录下来,免得下次再犯同样的错误

XlinliY.Zhang 发表于 2021-10-20 13:48

client.loop负责接收和发送心跳包,你不持续运行超时自然掉线
clientID是唯一的,用于区分设备,相同clientID服务器认为你重新连接了,自然就把旧的连接删除了

ws9528 发表于 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这边,但是怎么处理,怎么出会现这种情况,我搞不明白。

XlinliY.Zhang 发表于 2021-10-20 18:28

ws9528 发表于 2021-10-20 17:14
老哥,我有个问题一直没搞明白,想请教一下。我在用ESP8266-01s 给 Arduino Mega2560 通过串口收发数据...

发太多溢出 或者是 中断打断了

ws9528 发表于 2021-10-23 22:51

XlinliY.Zhang 发表于 2021-10-20 18:28
发太多溢出 或者是 中断打断了

2560只接收,不发送,问题好像不大。一但 既发送又接收就会出现丢包。一直搞不明白,也没办法解决,最后只能换NODEMCU了,但是这个玩意引脚太少,目前正在学习ESP32

XlinliY.Zhang 发表于 2021-10-24 13:45

ws9528 发表于 2021-10-23 22:51
2560只接收,不发送,问题好像不大。一但 既发送又接收就会出现丢包。一直搞不明白,也没办法解决,最后 ...

ESP8266负责解析和通讯,通过SPI对328p/MEGA2560进行读写控制,方便多了

ws9528 发表于 2021-10-25 23:04

XlinliY.Zhang 发表于 2021-10-24 13:45
ESP8266负责解析和通讯,通过SPI对328p/MEGA2560进行读写控制,方便多了

没用过SPI 搞不清楚,有时间尝试一下

李旭旭 发表于 2021-10-26 15:04

:handshake
页: [1]
查看完整版本: 记录调试MQTT过程中的尴尬