Библиотека для автоматической проверки ОТА обновлений проекта с GitHub и других источников
ESP8266/ESP32
- Указать в прошивке текущую версию и путь к файлу с информацией
project.json
- При обновлении загрузить бинарники и повысить версию в файле информации
- Программа проверит версию и предложит обновиться
Библиотека принимает три варианта пути к файлу project.json
:
https://...json
- полностью свой путь к файлу, порт будет определён автоматически 80 или 443, если не задан вручную в конструктореuser/repo
- файл на GitHub в корне репозитория веткиmain
user/repo/main/folder/file.json
- файл на GitHub по указанному пути в указанной ветке
AutoOTA(const char* cur_ver, const char* url, uint16_t port = 0);
// текущая версия
const char* version();
// проверить обновления. Можно передать строки для записи информации
bool checkUpdate(String* version = nullptr, String* notes = nullptr, String* bin = nullptr);
// есть обновление. Вызывать после проверки. Само сбросится в false
bool hasUpdate();
// обновить прошивку из loop
void update();
// обновить прошивку сейчас и перезагрузить чип
bool updateNow();
// тикер, вызывать в loop. Вернёт true при попытке обновления
bool tick();
// есть ошибка
bool hasError();
// прочитать ошибку
Error getError();
Локальный объект, обновление сразу
// AutoOTA ota("1.0", "GyverLibs/GyverHub-example"); // если файл лежит в корне репозитория ветки main
AutoOTA ota("1.0", "GyverLibs/GyverHub-example/main/project.json");
if (ota.checkUpdate()) {
ota.updateNow();
}
Обновление из loop
// AutoOTA ota("1.0", "GyverLibs/GyverHub-example"); // если файл лежит в корне репозитория ветки main
AutoOTA ota("1.0", "GyverLibs/GyverHub-example/main/project.json");
void setup() {
if (ota.checkUpdate()) {
ota.update();
}
}
void loop() {
ota.tick();
}
Получение инфо об обновлении
String ver, notes;
if (ota.checkUpdate(&ver, ¬es)) {
Serial.println(ver);
Serial.println(notes);
}
Инструкция по оформлению репозитория и манифеста есть здесь.
- v1.0
- v1.2.0
- Библиотеку можно найти по названию AutoOTA и установить через менеджер библиотек в:
- Arduino IDE
- Arduino IDE v2
- PlatformIO
- Скачать библиотеку .zip архивом для ручной установки:
- Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
- Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
- Распаковать и положить в Документы/Arduino/libraries/
- (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
- Читай более подробную инструкцию по установке библиотек здесь
- Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
- Через менеджер библиотек IDE: найти библиотеку как при установке и нажать "Обновить"
- Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!
При нахождении багов создавайте Issue, а лучше сразу пишите на почту [email protected]
Библиотека открыта для доработки и ваших Pull Request'ов!
При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:
- Версия библиотеки
- Какой используется МК
- Версия SDK (для ESP)
- Версия Arduino IDE
- Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
- Какой код загружался, какая работа от него ожидалась и как он работает в реальности
- В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код