ESP8266 软件看门狗在 http 通信时触发

问题描述 投票:0回答:1

我正在使用 ESP8266 从 openDTU 获取一些数据(作为 JSON 文件)以充当状态监视器。

从 openDTU 获取数据时,ESP8266 的软件看门狗每隔几分钟就会“咬一口”。

我尝试使用

ESP.wdtEnable(5000); 

在 setup() 中,为了让看门狗非常宽容,并在代码的关键区域添加了几个 ESP.wtdFeed() 命令:

            ESP.wdtFeed();
        http.begin(client, getLink6);
        ESP.wdtFeed();
        httpCode = http.GET();       
        getWarOkay = false;
        ESP.wdtFeed();
        if ( httpCode > 0 ) { 
            payload = http.getString(); 
            getWarOkay = true;
            payloadAll = payloadAll + "<br><br>httpCode: " + String(httpCode) + "<br>###" + payload + "### END-PAYLOAD4 ###";
        }
        else { anzFehler++; textFehler = textFehler + "Block1"; }
        ESP.wdtFeed();
        
        http.end();

它仍然会触发重新启动 - 可能比之前稍微少一些

串行监视器输出为:第一个原因:2,启动模式:(3,6)

我想我将无法轻松加快 openDTU 的响应时间 - 有什么建议如何处理这个问题吗?

esp8266 watchdog
1个回答
0
投票

在简化代码并优化响应时间后,我能够在触发重置之前使 ESP8266 保持运行约 2 小时。 “第一个原因:4”

然后我找到了一篇关于 ESP8266 优化库的文章,我已经在代码中使用了这些库 - 这些是

ESP8266HTTPClient.h, ESP8266WiFi.h and ESP8266mDNS.h

还有一个额外的通用 WiFi.h 我可能是从我发现的一个示例中复制的,但没有注意到我已经在使用优化的 ESP8266WiFi.h 了。

这并没有导致错误,但是,由于 WiFi.h 是在 ESP8266WiFi.h 之后包含的,因此很可能只是用常规包含替换了优化的内容。

从代码中删除 WiFi.h 后,设备已连续运行 24 小时而无需重置。

© www.soinside.com 2019 - 2024. All rights reserved.