首页 > 解决方案 > ESP32/Arduino IDE:使用 ESPHttpUpdate 的 OTA 不断重启

问题描述

我们是一群试图开发可以通过 ESPHttpUpdate OTA 更新的 ESP32 程序的菜鸟。我们使用的代码是基本的:

 if((WiFi.status() == WL_CONNECTED)) {
    t_httpUpdate_return ret = ESPhttpUpdate.update("https://url.to/my.bin");

    switch(ret) {
        case HTTP_UPDATE_FAILED:
            Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
            break;

        case HTTP_UPDATE_NO_UPDATES:
            Serial.println("HTTP_UPDATE_NO_UPDATES");
            break;

        case HTTP_UPDATE_OK:
            Serial.println("HTTP_UPDATE_OK");
            break;
    }
}

从理论上讲,它有效。该程序连接到WiFi,连接到Web服务器,下载新的bin并成功刷机......只是在一个循环中。下载新固件后,它会刷新它,重新启动设备,然后重新开始。我想这是一个简单的问题,它可以识别服务器上的 bin 是否比设备上的 bin 新 - 但我似乎无法弄清楚如何做到这一点:) 任何指针将不胜感激 - 相信我,我google了很多:)

提前谢谢你, Seb

标签: arduinoesp32ota

解决方案


你可以在它的固件中做的是,它指向下一个“更新”链接。

该文件仅在有更新时才在服务器上。更新固件时,只需将链接更改为指向 my2.bin 等。

因此,每个固件都指向下一个更新(如果可用)。

示例:
当前固件:my.bin
指向:https ://url.to/my1.bin 当前固件:my1.bin 指向: https

://url.to/my2.bin 等



推荐阅读