我正在使用 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 保持运行约 2 小时。 “第一个原因:4”
然后我找到了一篇关于 ESP8266 优化库的文章,我已经在代码中使用了这些库 - 这些是
ESP8266HTTPClient.h, ESP8266WiFi.h and ESP8266mDNS.h
还有一个额外的通用 WiFi.h 我可能是从我发现的一个示例中复制的,但没有注意到我已经在使用优化的 ESP8266WiFi.h 了。
这并没有导致错误,但是,由于 WiFi.h 是在 ESP8266WiFi.h 之后包含的,因此很可能只是用常规包含替换了优化的内容。
从代码中删除 WiFi.h 后,设备已连续运行 24 小时而无需重置。