/AsyncElegantOTA-ru

Русскоязычная адаптация библиотеки AsyncElegantOTA

Primary LanguageCMIT LicenseMIT


Это репо является копией этого https://github.com/ayushsharma82/AsyncElegantOTA с русскоязычным переводом интефейса веб-страницы и сообщений. Ресурс [buy me a coffee](https://www.buymeacoffee.com/) не работает у нас, я убрал его плагин со страницы. Все остальоне как в оригинале. Про то как устроена страница обновления и как ее изменять написано тут ayushsharma82/AsyncElegantOTA#68. Ниже идет практически дословный перевод текста автора оригинальной библиотеки.


Выпоняет асинхронное обновление через OTA у ESP8266 и ESP32

AsyncElegantOTA предоставляет красивый интерфейс для загрузки обновлений `.bin` по воздуху в модули ESP с точным статусом и прогрессом, отображаемым в пользовательском интерфейсе. Библиотека показывает текущий процесс загрузки, а после завершения отобразит статус. Эта версия библиотеки использует AsyncWebServer. Спасибо @me-no-dev за прекрасную библиотеку веб-сервера.





Как установить

Ручная установка

Для Windows: Скачать Репо и извлечь .zip в Документы>Arduino>Libraries>{создать папку "AsyncElegantOTA-ru"}

Для Linux: Скачать Репо и извлечь .zip в Sketchbook>Libraries>{создать каталог "AsyncElegantOTA-ru"}

Ручная установка через IDE

Скачать Репо, Скетч > Подключить библиотеку > Добавить .Zip библиотеку > Вывбрать скаченный файл .zip.


Документация

AsyncElegantOTA — очень простая библиотека, которая выполняет все, что нужно одной строчкой. Честно говоря, это просто библиотека-оболочка, которая внедряет собственную элегантную веб-страницу вместо уродливой страницы загрузки, которая по умолчанию входит в библиотеку Arduino.

Подключите библиотеку AsyncElegantOTA #include <AsyncElegantOTA.h> в начале скетча Arduino.

В методе setup() вставьте это - AsyncElegantOTA.begin(&server); перед этим - server.begin();

Вот и все!

Теперь скопируйте IP адрес из Монитора Порта и перейдите по ссылке http://<IP адрес>/update через браузер. Например http://192.168.1.123/update


Дополнительная безопасность:

Если вы хотите добавить логин с паролем на веб-страницу OTA, замените AsyncElegantOTA.begin(&server); на AsyncElegantOTA.begin(&server, "username", "password");. Это предотвратит несанкционированные запросы веб-страницы и загрузку прошивки на MCU.


Проблема с антивирусом: Если на вашем компьютере установлен антивирус с брандмауэром, индикатор выполнения на веб-странице мгновенно покажет 100% из-за кэширования запросов антивирусом. Для этого нет решения, если вы не хотите отключить антивирус или добавить локальные IP-адреса в исключения. То же самое будет с iOS, Safari, они будут кэшировать исходящие запросы.


Руководства

Руководства для AsyncElegantOTA доступны на RandomNerdTutorials.

ESP8266

Arduino IDE:

https://randomnerdtutorials.com/esp8266-nodemcu-ota-over-the-air-arduino/

PlatformIO (ручной метод):

https://randomnerdtutorials.com/esp8266-nodemcu-ota-over-the-air-vs-code/


ESP32

Arduino IDE:

https://randomnerdtutorials.com/esp32-ota-over-the-air-arduino/

PlatformIO (ручной метод):

https://randomnerdtutorials.com/esp32-ota-over-the-air-vs-code/


PlatformIO автоматический метод

  • Скопируйте файл «platformio_upload.py» из этого репозитория в ту же папку, где находится ваш файл platformio.ini.
  • Установите метод загрузки для вашего проекта в файле platformio.ini:
extra_scripts = platformio_upload.py
upload_protocol = custom
upload_url = <Ваш URL-адрес для загрузки, например http://192.168.1.123/update>

Примеры

Для ESP8266:

#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <AsyncElegantOTA_RU.h>

const char* ssid = "........";
const char* password = "........";

AsyncWebServer server(80);

void setup(void) {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println();

  // Ожидание подключения
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Подключен к: ");
  Serial.println(ssid);
  Serial.print("IP адрес: ");
  Serial.println(WiFi.localIP());

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(200, "text/plain", "Hi! I am ESP8266.");
  });

  AsyncElegantOTAru.begin(&server);
  Serial.println("AsyncElegantOTAru запущен");
  
  server.begin();
  Serial.println("HTTP сервер запущен");
}

void loop(void) {
}


Для ESP32:

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <AsyncElegantOTA_RU.h>

const char* ssid = "........";
const char* password = "........";

AsyncWebServer server(80);

void setup(void) {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println();

  // Ожидание подключения
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Подключен к: ");
  Serial.println(ssid);
  Serial.print("IP адрес: ");
  Serial.println(WiFi.localIP());

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(200, "text/plain", "Hi! I am ESP32.");
  });

  AsyncElegantOTAru.begin(&server);
  Serial.println("AsyncElegantOTAru запущен");

  server.begin();
  Serial.println("HTTP сервер запущен");
}

void loop(void) {
}