AsyncElegantOTA¶
MEEGELEVERD · ACCESSPOINT · UPLOADPAGINA · GEEN UPSTREAM
De uploadpagina waarmee een ESP32-node nieuwe firmware binnenkrijgt, komt uit AsyncElegantOTA. Die library staat niet in de registry maar als kopie in de MeshCore-repo zelf, en heeft daarmee geen versiebereik en geen updatepad.
[!NOTE] Bron. Deze pagina is geverifieerd tegen de firmware zelf:
MeshCorev1.16.0, commit03b6ef4, 28 juli 2026 — bestandenplatformio.ini,arch/esp32/AsyncElegantOTA/library.propertiesensrc/helpers/ESP32Board.cpp.
Wat het doet¶
AsyncElegantOTA zet bovenop een asynchrone webserver een uploadpagina neer. Je opent hem in een browser, kiest een firmwarebestand, en de library schrijft dat naar de OTA-partitie en herstart het bord. De ingebouwde pagina bevat een voortgangsbalk en een foutmelding als het bestand niet past.
De library.properties in arch/esp32/AsyncElegantOTA/ noemt versie 2.2.8
en Ayush Sharma als auteur, met
https://github.com/ayushsharma82/AsyncElegantOTA als herkomst.
Hoe MeshCore hem binnenhaalt¶
platformio.ini r.70
file://arch/esp32/AsyncElegantOTA
Een lokaal pad in de sectie [esp32_ota]. Het gevolg is dat er geen
versiebereik is en dat PlatformIO nooit iets ophaalt: de code die in
arch/esp32/AsyncElegantOTA/ staat, is de code die je krijgt. Een nieuwere
upstream-versie komt hier alleen terecht als iemand de map bijwerkt.
Hoe MeshCore hem gebruikt¶
De library wordt geïncludeerd in dezelfde blok als de webserver:
src/helpers/ESP32Board.cpp r.9
#include <AsyncElegantOTA.h>
De OTA-sessie begint met een accesspoint en het blokkeren van de slaapstand:
src/helpers/ESP32Board.cpp r.13-18
bool ESP32Board::startOTAUpdate(const char* id, char reply[]) {
inhibit_sleep = true; // prevent sleep during OTA
WiFi.softAP("MeshCore-OTA", NULL);
sprintf(reply, "Started: http://%s/update", WiFi.softAPIP().toString().c_str());
MESH_DEBUG_PRINTLN("startOTAUpdate: %s", reply);
Daarna wordt de webserver aangemaakt, krijgt AsyncElegantOTA het ID van de node mee en hangt hij zichzelf aan die server:
src/helpers/ESP32Board.cpp r.34-36
AsyncElegantOTA.setID(id_buf);
AsyncElegantOTA.begin(server); // Start ElegantOTA
server->begin();
Wat het voor een node betekent¶
De volledige route zoals een gebruiker die ziet: op de node wordt een
OTA-sessie gestart, waarna de node een open WiFi-netwerk MeshCore-OTA
uitzendt. De node antwoordt met het adres van de uploadpagina, in de vorm
http://<ip>/update. Wie verbinding maakt met dat netwerk en die pagina
opent, kan een firmwarebestand uploaden; na afloop herstart het bord met de
nieuwe firmware.
Het accesspoint heeft geen wachtwoord — WiFi.softAP("MeshCore-OTA", NULL).
Wat de sessie beschermt, is dat hij alleen gestart kan worden door iemand die
het adminwachtwoord van de node kent, en dat hij niet blijft draaien. Zolang
hij loopt, kan iedereen binnen radiobereik van het accesspoint erbij.