Neues Feature: OTA-Update via WebGUI

Es wurde hier schon öfter mal angesprochen und gewünscht - daher habe ich es nun final hinzugefügt (nachdem es @tuniii bereits vor längerer Zeit implementiert hatte): OTA-Update. Hiermit ist es möglich, einen ESPuino zu flashen, ohne ihn direkt am Rechner anzuschließen.

Welche Voraussetzungen sind notwendig?

Grundsätzlich wird OTA von allen ESP32-Chips unterstützt. Das Problem ist jedoch, dass das Firmware-Image zwischengespeichert werden muss. Insbesondere, wenn Bluetooth aktiviert ist, ist das Firmware-Image des ESPuino deutlich größer als 2 MB und passt damit nicht mehr doppelt in den 4MB großen Speicher. Deswegen habe ich hinsichtlich des offiziellen Supports festgelegt, dass dies nur mit ESP32-WROVER möglich ist, die 16 MB Flashspeicher besitzen. Ein passendes Partitions-Layout wird in platformio.ini festgelegt und lautet: custom_16mb_ota.csv. Damit ESPuino OTA-Update für ein Profil akzeptiert, muss in build_flags zusätzlich -DBOARD_HAS_16MB_FLASH_AND_OTA_SUPPORT gesetzt sein. Für den Lolin D32 pro ist das z.B. der Fall. Ist dies nicht der Fall, so wird der Flashvorgang abgelehnt.

Wie schnell ist das Ganze?

Ich hatte einen Durchsatz von etwa 100 kB/s. Bei einer Firmware-Größe von 2,3 MB etwa kann man sich das dann leicht ausrechnen.

Welche Datei wird benötigt und woher kriege ich diese?

Zuerst wähle unter Project Tasks in Platformio das passende Profil aus (beispielsweise lolin_d32_pro). Klicke dann auf build, so dass die Firmware erstellt wird. Im Anschluss existiert im Projektverzeichnis ein Unterordner .pio/build. In build steckt nun ein weiterer Unterordner, der je nach Project Task unterschiedlich benannt ist - also beispielsweise lolin_d32_pro. In diesem Verzeichnis befindet sich eine Datei namens firmware.bin. Genau diese wird benötigt. Wir reden also z.B. von .pio/build/lolin_d32_pro/firmware.bin.

Wie kommt die Firmware auf den ESPuino?

Rufe die WebGUI deines ESPuino auf und klicke auf den Tab „Tools“. Dort gibt es unten den Punkt „Firmware-Update“. Wähle hier das passende Firmware-Image (die o.g. .bin-Datei) aus und lade sie hoch. Hinweis: Ggf. zeigt dein Browser das o.g. Build-Verzeichnis nicht an, da es durch den vorangestellten „.“ versteckt ist. In diesem Falle kopiere die .bin-Datei an eine andere Stelle und lade sie von dort hoch.

Gibt es etwas zu beachten?

Man sollte darauf achten, dass man bei der Konfiguration der SD-Karte (benutzte GPIOs, SD_MMC ja/nein) keine Fehler macht. Tut man das, so wird der ESPuino nicht mehr normal starten und man hat keine Möglichkeit mehr, ihn erneut über OTA zu flashen.

2 „Gefällt mir“

Würde mich freuen, wenn der ein oder andere, der bereits den aktuellen Master-Branch benutzt, und zudem beispielsweise einen Lolin D32 pro verwendet, das Ganze mal testen würde.

Vielleicht gibt es ja auch einfachere Wege, an die .bin-Dateie zu kommen. Ich bin ganz Ohr :slight_smile:

1 „Gefällt mir“

Dafür muss ich das Flashen via Commandline aber auch noch hinzufügen. Aber ist kein Problem @tuniii hat das ja alles schon gemacht :+1:

@biologist
Habe 2 Espuinos mit Wrover und meiner neuen Hardware über OTA geflasht , alles bestens . Jetzt kann ich es final in meine Boxen einbauen . Good job !

Kannst du noch die Akkuspannung ins Info einfügen . Log ist jetzt schön groß und man sieht es ja auch da …aber dann wäre das Info-Fenster noch kompletter .

VG und Danke

OK, danke für dein Feedback.
Die Anzeige kann man ja einfach hinzufügen. Kann ich mal machen.

Erledigt. Viel Spaß damit :slight_smile:

Hi,
bei so vielen neuen Features, musste ich meinen Espuino einfach mal auf den neuen refactoring master bringen :slight_smile:
@biologist echt toll was du da gemacht hast! Die neuen Features sind alle sinnvoll, funktionieren einwandfrei und der Umzug ins neue NVS war kinderleicht! Danke für deine Arbeit.

Bzgl. des Firmware-Update Eintrages auf der HTML Seite habe ich einen Kommentar. Dieser muss einen Container weiter nach innen damit dieser Eintrag auch nur unter Tools sichtbar ist. Der fix ist hier. Zum Einspielen des Fix auf meinen Espuino habe ich dann das OTA Feature getestet :smiley:

@Harry
Oh, vielen Dank. Das ist mir gar nicht aufgefallen :woman_shrugging:
Schön, dass alles soweit funktioniert. Lustig, dass du gerade schreibst, denn ich habe mir gerade deinen Webtransfer nochmal angeschaut. Habe eine kleine Statistik eingebaut und ein WDT-Reset durch ein delay ersetzt. Ich würde sagen, dass sich der Transfer jetzt schneller einpendelt.

Bin jetzt gerade noch dabei ein Feature zu implementieren, das sich ganz viele Leute ja schon ganz lange wünschen: Musik aus, wenn die Karte entfernt wird :slight_smile: Für den PN5180 habe ich es auch schon, für den RC522 muss ich noch.

Dann werde ich so langsam aber mal wieder etwas auf die Bremse treten und den Leuten Zeit geben, den ganzen neuen Kram auch zu testen :joy:

1 „Gefällt mir“

@biologist
Ich bin total begeistert. Meine neuen Boards sind im Dauertest , habe mehrmals mit OTA geflasht , alles funktioniert richtig gut . Klappt sogar in knapp 40 Sek. wenn Webradio läuft . Nochmals , tolle Arbeit und natürlich auch von deinen Zuspielern . Die letzten Änderungen haben es richtig rund gemacht . Mir fällt fast nichts mehr ein ( stimmt nicht , aber das per PN )
VG

1 „Gefällt mir“

Ich habe es heute auch erfolgreich getestet.

1 „Gefällt mir“

Ist es beabsichtigt, dass „Firmware Update“ auf jeder Seite im WebGUI angezeigt wird?

Nein. Das war das, was @Harry ein paar Posts weiter oben bereits angesprochen hatte. Das wurde hier bereits gefixt.

Ah, ok - nur für DE. Das erklärt, warum das bei EN nicht funktioniert :wink:

Kacke, wieder nicht aufgepasst :joy: