I suggest you study the tutorial that Juan has linked, at the moment all useful information is gold.
Это мой план на сегодняшний вечер
В данный момент у меня возникли трудности с расширением 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?
я подумал точно так же, по этому изменил вызов функции, удалив из него логин и пароль, однако результатов это не дало
Это безусловно интересный пример и возможно мне пригодится кое что из этой статьи, спасибо.
Однако по данной теме, способ OTA описанный в этой статье принципиально не отличается от того, что использую я: все-равно нужно передать .Bin файл через "post" Запрос из приложения. И так же здесь есть процедура аутентификации.
Но я попробую применить методы предложенные ChrisWard с этим вариантом OTA
У меня возник ряд трудностей с применением библиотеки update.h, используемой в примере, который предоставил Хуан. В ней используя много сторонних библиотек, которых нет в Arduino ide, либо они конфликтуют с имеющимися.
Но как я уже говорил, я не вижу принципиального отличия этого метода OTA от того, который использовал я, проблему передачи .Bin файла это не решит.
И если эта проблема связана с особенностями MIT app, кажется единственно верным решением будет переписывание приложения на Java в Android studio, вот только у меня нет опыта работы с Java и большого количества времени что бы это компенсировать...
New Random Nerds Tutorials:
Большое спасибо всем за помощь.
Я решил проблему иным путем, с помощью ESP8266httpUpdate. ESP8266 самостоятельно делает запрос к веб серверу, скачивает и устанавливает прошивку. Таким образом мне достаточно лишь дать команду контроллеру, что бы он обратился к серверу.
Well that's very good news
10 out of 10 for your perseverance!
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.