• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Прошивка ESP32 через удаленный сервер

DaniilD2

New member
Есть несколько esp32 и необходимо чтобы они раз в неделю связывались с сервером и получали прошивку, которая сейчасже и устанавливалась. Как esp ota только не через локальную сеть, а через глобальную. На сервере лежит bin файл прошивки.
Подскажите как можно реализовать, пожалуйста.
 
Подскажите как можно реализовать, пожалуйста.
Точно также как и в локалке, только предварительно выкачиваете файл к себе на fs.
Также, к примеру, я использовал в последнем проекте библиотеку ArduinoOTA от Ivan Grokhotkov and Hristo Gochkov так там (как впрочем и в большинстве подобных либ) загрузка файла происходит как результат post запроса на встроенный в ESP32 веб-сервер.
Используйте вместо сервера http-клиент и обрабатывайте возврат с внешнего сервера подобно запросу на внутренний..


C++:
 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.printf("Update: %s\n", upload.filename.c_str());
      if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //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);
      }
    }
  });
 

DaniilD2

New member
Спасибо, попробую. Просто в интернете очень мало информации на эту тему.
 

workpage

New member
Если прошивка коммерческая - используйте https и логин/пароль на вход на сайт.
 
Сверху Снизу