Blinker 的MQTT断线导致ESP8266 Exception (29) (28)复位重启-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5745|回复: 12

[已解答] Blinker 的MQTT断线导致ESP8266 Exception (29) (28)复位重启

[复制链接]
发表于 2020-9-19 16:56 | 显示全部楼层 |阅读模式
Blinker 的MQTT断线导致ESP8266 Exception (29) (28)复位重启

原帖:
https://www.arduino.cn/thread-99970-1-1.html
https://www.arduino.cn/thread-98080-1-1.html

目前最新环境测试:
8266_package_2.7.4
blinker-library-master 为9月16日官网下载的最新
arduino IDE为目前最新的1.8.13


ESP8266 Exception (29) (28)复位重启  
这个问题经过一个多月反复测试,就算用例程测试,发现了一个Blinker的一个大BUG,

只要WIFI信号不好 和MQTT断线 持续断线
就会不定时导致 ESP8266 Exception (29) (28)复位重启问题,这个应该是Blinker的一个大BUG

发表于 2020-9-19 17:16 | 显示全部楼层
感觉可能只是供电不足的问题。另外您测试的是哪个例程?怎么测试的?请提供更详细的描述
也可以按照以下链接提供的方式自己判断:
https://www.arduino.cn/thread-98074-1-1.html

发表于 2020-9-20 00:50 | 显示全部楼层
你99970帖子中自己都把堆栈信息高亮注释了,8266低于6000 bytes的freeheap就可能导致系统调度的堆栈不够移出,进而重启
 楼主| 发表于 2020-9-21 15:14 | 显示全部楼层
奈何col 发表于 2020-9-19 17:16
感觉可能只是供电不足的问题。另外您测试的是哪个例程?怎么测试的?请提供更详细的描述
也可以按照以下链 ...

不是供电不足问题,我两个换了3种板子全部都有这个问题,就是用blinker的DHT_WIFI,和AUTO_WIFI ,串口监控 只要WIF信号不好 MQTT断线重连就会一定概率出这样的问题
 楼主| 发表于 2020-9-21 15:15 | 显示全部楼层
三水 发表于 2020-9-20 00:50
你99970帖子中自己都把堆栈信息高亮注释了,8266低于6000 bytes的freeheap就可能导致系统调度的堆栈不够移 ...

可能是你说的这个问题,但是这个是blinker的一个BUG
 楼主| 发表于 2020-9-21 15:15 | 显示全部楼层
奈何col 发表于 2020-9-19 17:16
感觉可能只是供电不足的问题。另外您测试的是哪个例程?怎么测试的?请提供更详细的描述
也可以按照以下链 ...

有群友回复这个:你99970帖子中自己都把堆栈信息高亮注释了,8266低于6000 bytes的freeheap就可能导致系统调度的堆栈不够移出,进而重启

点评

那是我同事。。。不是bug,8266ram不够就会重启,可以添加 #define BLINKER_WITHOUT_SSL 启用非加密通信,获得更大的可用ram。 也可以直接使用esp32  详情 回复 发表于 2020-9-21 16:24
 楼主| 发表于 2020-9-21 15:35 | 显示全部楼层
三水 发表于 2020-9-20 00:50
你99970帖子中自己都把堆栈信息高亮注释了,8266低于6000 bytes的freeheap就可能导致系统调度的堆栈不够移 ...

这个问题怎么解决了 貌似运行Blinker后 一MQTT就会这样
发表于 2020-9-21 16:24 | 显示全部楼层
jianfengbeyond 发表于 2020-9-21 15:15
有群友回复这个:你99970帖子中自己都把堆栈信息高亮注释了,8266低于6000 bytes的freeheap就可能导致系 ...

那是我同事。。。不是bug,8266ram不够就会重启,可以添加
#define BLINKER_WITHOUT_SSL
启用非加密通信,获得更大的可用ram。
也可以直接使用esp32
发表于 2020-9-21 16:36 | 显示全部楼层
jianfengbeyond 发表于 2020-9-21 15:35
这个问题怎么解决了 貌似运行Blinker后 一MQTT就会这样

解决不了,8266堆栈有限,SSL接入后会剩下8000-10000 bytes堆栈,并不会剩下你log中的3000 bytes剩余。这明显是你代码问题导致的。
 楼主| 发表于 2020-9-22 09:58 | 显示全部楼层
#define BLINKER_WITHOUT_SSL    //blinker默认使用加密方式进行远程通信,但通信加密会消耗大量的RAM,如果您对通信安全性无要求,可以添加宏BLINKER_WITHOUT_SSL用以获得更多可用RAM, BLINKER_WITHOUT_SSL目前仅可用于ESP8266,其他设备的RAM足以进行加密通信


目前尝试用这个办法解决允许内存不足问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 13:55 , Processed in 0.141341 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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