• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Update error: ERROR[11]: Invalid bootstrapping state, reset ESP8266 before updating

CCat

Member
Использую библиотеку ESP8266HTTPUpdateServer
Немного изменил пример, чтобы заливать файл прямо на ESP, а не через чей-то WiFi.
После захода по адресу http://33.33.33.33/update указываю файл и получаю сообщение "Update error: ERROR[11]: Invalid bootstrapping state, reset ESP8266 before updating".
Поскольку предполагается, что я не буду иметь легкого доступа к кнопке Reset, я вынимаю usb-разъем (У меня NodeMCU V3) и вставляю его обратно, т.е. просто обесточиваю ESP на пару секунд.
Когда после этого захожу на ту же страницу, спокойно могу указать нужный файл и он таки нормально зальется, ESP "перепрошьется" и перезагрузится.

Вопросы.
1) Я читал, что поскольку ресет производится командой -wdt reset, у NodeMCU и подобных с этим проблемы. Ну и? И что делать? Не заморачиваться и передернуть питание в случае заливки нового скетча вышеуказанным способом?
2) Просто интересно. А почему сражузе после перезагрузки путем выдергивания питания все ОК? Каким образом ESP во второй раз благостно принимает апдейт? Что изменилось и как это что-то уцелело после выключения питания? Какой-то временный загрузчик в SPIFFS образовался или что?

Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>

IPAddress apIP(33, 33, 33, 33);
const char *ssid = "MyBox";

ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;

void setup(void) {

  Serial.begin(115200);
  Serial.println();
  Serial.println("Booting Sketch...");
  WiFi.mode(WIFI_AP_STA);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));   // subnet FF FF FF 00 
 
  WiFi.softAP(ssid);//without pass

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);

  httpUpdater.setup(&httpServer);
  httpServer.begin();

  Serial.println("HTTPUpdateServer ready!");
}

void loop(void) {
  httpServer.handleClient();
}
 

CCat

Member
Ааа, может, то, что упоминается на англоязычном форуме
The documentation already says that if you upload a sketch through serial, you'll have to reset the board first manually, before OTA will work, ie. upload via serial, reset the board, then use OTA.
я неправильно понимал? Я думал "при чем здесь serial, я ж по воздуху гружу". А надо просто после последней загрузки через USB скетча перезагрузить ESP и дальше все будет ОК любое количество раз?!
 
Сверху Снизу