Shipment.bin file via the Post method

I suggest you study the tutorial that Juan has linked, at the moment all useful information is gold.

Это мой план на сегодняшний вечер :slightly_smiling_face:

В данный момент у меня возникли трудности с расширением CustumWebView - не удается включить его графическое отображение, но эту проблему я думаю смогу решить сам.
А пока я наткнулся на пример httpUpdateSPIFFS который шел вместе с библиотекой <ESP32httpUpdate.h>, может быть это будет нам полезно.

#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ESP32httpUpdate.h>
#define USE_SERIAL Serial

void setup() {

USE_SERIAL.begin(115200);
// USE_SERIAL.setDebugOutput(true);

USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();

for(uint8_t t = 4; t > 0; t--) {
    USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
    USE_SERIAL.flush();
    delay(1000);
}

WiFi.begin("SSID", "PASSWORD");

}

void loop() {
// wait for WiFi connection
if((WiFi.status() == WL_CONNECTED)) {

    USE_SERIAL.println("Update SPIFFS...");
    t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs("http://server/spiffs.bin");
    if(ret == HTTP_UPDATE_OK) {
        USE_SERIAL.println("Update sketch...");
        ret = ESPhttpUpdate.update("http://server/file.bin");

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

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

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

}

А так же прикреплю файлы самой библиотеки.
https://drive.google.com/file/d/1KtPw4VuSaHIbK9SI2_hcMlUK1pTZIA2l/view?usp=sharing

Я разобрался с использованием CustumWebView.
сейчас я пытаюсь отправить любой файл методом "post" через это расширение.
Интересно, что после отправки формы, срабатывает событие On Received Http Auth Request от ESP8266, с сообщением "login required".

Могу предположить, что это происходит из-за того, что ESP32httpUpdate.h изначально требовало логин и пароль для входа по адресу http://192.168.0.12/firmware. Я убрал эту авторизацию в прошивке ESP8266 путем записи пустых значений в переменные логина и пароля. Возможно это было не лучшее решение, но в обычном браузере вводить логин и пароль больше не требовалось

Hi

I think a Username and Password will still be expected - you have simply defined them as "". So it might be easier to actually delete the #defines all together?

я подумал точно так же, по этому изменил вызов функции, удалив из него логин и пароль, однако результатов это не дало


Here an example of OTA

https://lastminuteengineers.com/esp32-ota-web-updater-arduino-ide/

Это безусловно интересный пример и возможно мне пригодится кое что из этой статьи, спасибо.
Однако по данной теме, способ OTA описанный в этой статье принципиально не отличается от того, что использую я: все-равно нужно передать .Bin файл через "post" Запрос из приложения. И так же здесь есть процедура аутентификации.
Но я попробую применить методы предложенные ChrisWard с этим вариантом OTA

У меня возник ряд трудностей с применением библиотеки update.h, используемой в примере, который предоставил Хуан. В ней используя много сторонних библиотек, которых нет в Arduino ide, либо они конфликтуют с имеющимися.
Но как я уже говорил, я не вижу принципиального отличия этого метода OTA от того, который использовал я, проблему передачи .Bin файла это не решит.
И если эта проблема связана с особенностями MIT app, кажется единственно верным решением будет переписывание приложения на Java в Android studio, вот только у меня нет опыта работы с Java и большого количества времени что бы это компенсировать...

@HigherLife

Here another example of OTA with ESP8266

New Random Nerds Tutorials:

Большое спасибо всем за помощь.
Я решил проблему иным путем, с помощью ESP8266httpUpdate. ESP8266 самостоятельно делает запрос к веб серверу, скачивает и устанавливает прошивку. Таким образом мне достаточно лишь дать команду контроллеру, что бы он обратился к серверу.

1 Like

Well that's very good news :grin:

10 out of 10 for your perseverance!

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.