Веб-сервис для загрузки скомпилированной прошивки на ESP8266/ESP32, работает на основе ESP Web Tools.
Для добавления своему проекту поддержки AlexGyver OTA нужно:
- Создать репозиторий проекта на GitHub
- Создать в корне репозитория в ветке main файл манифеста project.json и оформить его согласно инструкции ниже
- Скомпилировать прошивку, загрузить в репозиторий или в релиз и указать путь к бинарнику в project.json
Манифест содержит информацию о проекте и пути к файлам скомпилированной прошивки для разных платформ в формате, который используется в GyverHub и ESPHome:
{
"name": "Название проекта",
"about": "Краткое описание проекта",
"version": "1.0",
"notes": "Комментарии к обновлению",
"builds": [
{
"chipFamily": "ESP8266",
"parts": [
{
"path": "https://raw.githubusercontent.com/GyverLibs/GyverHub-example/main/bin/firmware.bin",
"offset": 0
}
]
}
]
}Если проект может быть запущен на разных ESP-шках - можно приложить отдельный бинарник для каждой и указать пути к ним. Библиотека сама определяет, на какой платформе запущена и выберет нужный файл.
Поддерживаемые платформы и значения параметра chipFamily:
ESP8266ESP32ESP32-C3ESP32-C6ESP32-S2ESP32-S3ESP32-H2
Путь должен вести к скомпилированному файлу прошивки. Его можно разместить как в самом репозитории, так и в релизах:
https://raw.githubusercontent.com/<аккаунт>/<проект>/main/<путь от корня репозитория>
Примеры:
- bin
- firmware.bin
- esp8266
- firmware.bin
- esp32
- firmware.bin
https://raw.githubusercontent.com/GyverLibs/GyverHub-example/main/bin/firmware.bin
https://raw.githubusercontent.com/GyverLibs/GyverHub-example/main/bin/esp8266/firmware.bin
https://raw.githubusercontent.com/GyverLibs/GyverHub-example/main/bin/esp32/firmware.bin
https://github.com/<аккаунт>/<проект>/releases/latest/download/<файл>
Пример:
https://github.com/GyverLibs/GyverHub-example/releases/latest/download/firmware.bin
Чтобы определить платформу внутри программы, используем следующие проверки:
#if CONFIG_IDF_TARGET_ESP32
// ESP32
#endif
#if CONFIG_IDF_TARGET_ESP32S2
// ESP32-S2
#endif
#if CONFIG_IDF_TARGET_ESP32S3
// ESP32-S3
#endif
#if CONFIG_IDF_TARGET_ESP32C3
// ESP32-C3"
#endif
#if CONFIG_IDF_TARGET_ESP32C6
// ESP32-C6
#endif
#if CONFIG_IDF_TARGET_ESP32H2
// ESP32-H2
#endif
#if defined(ESP8266)
// ESP8266
#endif