Записал для вас весь процесс.
https://drive.google.com/file/d/17jSrDQ42_ZLFn9ByKYMCvUonqeBPU5wL/view?usp=sharing
Возможно перед отправкой "POST" запроса необходимо сначала отправить "GET"? то есть обратиться к серверу
Записал для вас весь процесс.
https://drive.google.com/file/d/17jSrDQ42_ZLFn9ByKYMCvUonqeBPU5wL/view?usp=sharing
Возможно перед отправкой "POST" запроса необходимо сначала отправить "GET"? то есть обратиться к серверу
I don't know - how can a binary file be sent if the Web Api does not accept them?
That would depend on your Script.
Hi again
I have spent some time perusing the internet to see if anyone offers a solution in any programming language. There one or two, but none of them are using Web Api, they are using bespoke APIs that App Inventor does not have access to.
Taifun has a WiFi Extension that uses SSID, Service Set IDentifier, the name of your network. That might be worth looking into.
I'm going to ask my Power User colleague Juan if he knows a way to flash update an ESP8266 via an App + WiFi.
По этому задача и сводится к тому, что бы отправить на esp форму post запроса, которая содержит .bin файл и всё.
Therefore, the task comes down to sending a post request form to esp, which contains a .bin file and that's it.
My experience has been to upload files to a SdCard on ESP32 through a web page following this tutorial:
I don't know if this idea will work for you (I haven't tried it): upload the file to the SPIFFS of ESP8266, from the App using the CustumWebView extension, following this tutorial:
https://www.taillieu.info/index.php/internet-of-things/esp8266/335-esp8266-uploading-files-to-the-server
Большое спасибо за ваше активное участие.
Касательно WiFi от Taifun можно по подробнее? Пока не увидел, что в этом расширении может помочь в решении нашей проблемы
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.