http://www.yfrobot.com/thread-11979-1-1.html
https://www.jianshu.com/p/fd9033750b1f
https://www.cnblogs.com/kekeoutlook/p/10618063.html
https://www.wandianshenme.com/play/arduino-ota-arduino-ide-ota-upgrade-esp8266-application/
上个的原文是下面的
https://www.bakke.online/index.php/2017/06/02/self-updating-ota-firmware-for-esp8266/
https://blog.csdn.net/xh870189248/article/details/80095139
ota
发布固件镜像
在所有的函数外,将一个版本号常量变量添加到您的程序。每当您准备发布时,请按您选择的任何约定来增加此版本号,例如每次简单增加一个,或基于当前日期和增加的内部版本号等更复杂的规则。
const int FW_VERSION = 1244;
编译程序(Ctrl + R),然后导出二进制文件。(Ctrl + Alt + S)导出二进制文件,将生成一个镜像文件到您的程序所在的相同文件夹中。实际名称将取决于您正在编译的特定电路板
void checkForUpdates() {
String mac = getMAC();
String fwURL = String( fwUrlBase );
fwURL.concat( mac );
String fwVersionURL = fwURL;
fwVersionURL.concat( ".version" );
Serial.println( "Checking for firmware updates." );
Serial.print( "MAC address: " );
Serial.println( mac );
Serial.print( "Firmware version URL: " );
Serial.println( fwVersionURL );
HTTPClient httpClient;
httpClient.begin( fwVersionURL );
int httpCode = httpClient.GET();
if( httpCode == 200 ) {
String newFWVersion = httpClient.getString();
Serial.print( "Current firmware version: " );
Serial.println( FW_VERSION );
Serial.print( "Available firmware version: " );
Serial.println( newFWVersion );
int newVersion = newFWVersion.toInt();
if( newVersion > FW_VERSION ) {
Serial.println( "Preparing to update" );
String fwImageURL = fwURL;
fwImageURL.concat( ".bin" );
t_httpUpdate_return ret = ESPhttpUpdate.update( fwImageURL );
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;
}
}
else {
Serial.println( "Already on latest version" );
}
}
else {
Serial.print( "Firmware version check failed, got HTTP response code " );
Serial.println( httpCode );
}
httpClient.end();
}