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

Нужна помощь Wemos - не хочет обновляться по веб

YDen

Member
Здравствуйте.
Подскажите пожалуйста. Есть несколько esp8266 esp-12у (node-mcu). Использую заливку скетча по "воздуху" через веб.
Код:
Код:
void setup()
{
  // Удаляем предыдущие конфигурации WIFI сети
  WiFi.disconnect(); // обрываем WIFI соединения
  WiFi.softAPdisconnect(); // отключаем отчку доступа(если она была
  WiFi.mode(WIFI_OFF); // отключаем WIFI
  delay(500);

  // присваиваем статичесий IP адрес
  WiFi.mode(WIFI_STA); // режим клиента
  WiFi.config(IPAddress(192, 168, 1, 74), IPAddress(192, 168, 1, 1), IPAddress(255, 255, 255, 0), IPAddress(192, 168, 1, 1));

  Serial.begin(115200);
  ds.begin();

  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    delay(5000);
    ESP.restart();
  }

  //запуск web сервера для удаленной прошивки
  if (WiFi.waitForConnectResult() == WL_CONNECTED) {
    MDNS.begin(host);
    server.on("/", HTTP_GET, []() {
      server.sendHeader("Connection", "close");
      server.send(200, "text/html", serverIndex);
    });
    server.on("/update", HTTP_POST, []() {
      server.sendHeader("Connection", "close");
      server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK");
      ESP.restart();
    }, []() {
      HTTPUpload& upload = server.upload();
      if (upload.status == UPLOAD_FILE_START) {
        Serial.setDebugOutput(true);
        WiFiUDP::stopAll();
        Serial.printf("Update: %s\n", upload.filename.c_str());
        uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000;
        if (!Update.begin(maxSketchSpace)) { //start with max available size
          Update.printError(Serial);
        }
      } else if (upload.status == UPLOAD_FILE_WRITE) {
        if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) {
          Update.printError(Serial);
        }
      } else if (upload.status == UPLOAD_FILE_END) {
        if (Update.end(true)) { //true to set the size to the current progress
          Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize);
        } else {
          Update.printError(Serial);
        }
        Serial.setDebugOutput(false);
      }
      yield();
    });
    server.begin();
    MDNS.addService("http", "tcp", 80);

    Serial.printf("Ready! Open http://%s.local in your browser\n", host);
  }

  getTime();
  updateTime();

}
На NodeMcu все работает "на ура". Пришли с китая модули wemos: https://ru.aliexpress.com/item/WeMo...32806566263.html?spm=a2g0s.9042311.0.0.TTT8fb
По кабелю залил код выше - норма. По веб страница обновления отображается, bin файл дает залить. После заливки модуль перегружается. Но новая прошивка не подхватывается - продолжает работать старая. Не могу понять в чем причина.
Если кто решал на этих модулях заливку по веб - поделитесь информацией, плиз.

благодарю
 

Юрий Ботов

Moderator
Команда форума
Уже не раз писали о том что в новых партиях появились spi flash не совместимые по протоколу со старыми, у людей слетает запись в spiffs, и прошивка на лету... Если хотите использовать старый код - перепаивайте spi flash.

Новые ревизии модулей на базе ESP8266 не умеют писать в SPI Flash

https://esp8266.ru/forum/threads/partija-neispravnyx-ili-nestandartnyx-esp12.3184/
 
Последнее редактирование:
Сверху Снизу