Last Updated on 3. October 2026 by SuffocationLink status: OK
OTA (Update over the Air) ist ein Konzept zum Aktualisieren der Firmware über ein Netzwerk. Ich habe mir die Esp32FOTALink status: OK Bibliothek hier mal genauer angesehen.
Alle von mir verwendeten Dateien befinden sich in folgendem Github Verzeichnis:
https://github.com/sfambach/esp32/tree/master/test/ESP32fotaLink status: Broken
Sollte etwas nicht funktionieren, lieber die Github Dateien verwenden, diese sind aktueller als der Beitrag. Bei Problemen lasst einen Kommentar da.
Areas of application
- Für ESP32, vielleicht auch für ESP8266 (noch zu testen) und andere, die über einen Netzwerkzugang verfügen
- Bietet die Möglichkeit der Aktualisierung mehrerer Clients ohne direkten Zugang
Benötigte Komponenten
- ESP32
- Webserver (in meinem Fall ein Raspberry PI)
Experimental setup
- Der ESP wird initial mit einer Firmware bespielt.
- Auf einem Webserver wird eine JSON Datei mit Update-Informationen abgelegt.
- Gibt es eine neue Firmware, wird die JSON Datei aktualisiert und der neue Code in einem Verzeichnis auf dem Webserver abgelegt.
- Der ESP schaut jede Runde in seiner Loop Funktion, ob eine neue Version vorhanden ist. Ist dies der Fall, lädt er diese herunter und aktualisiert sich.
Web server
Installation
Ich habe bereits einen PI als Webserver und werde hier nicht mehr auf die Installation eingehen. Folgender Link könnte aber dabei helfen:
Configuration
Für das Projekt habe ich ein neues Verzeichnis mit einer leeren JSON Datei auf dem Webserver angelegt:
cd /var/www/html/
sudo mkdir espupdate
cd espupdate
touch update.json
In die Datei schreibe ich den folgenden Code (sudo nano update.jason).
{
"type": "esp32-heltec-kit-32",
"version": 4,
"host": "pi1",
"port": 80,
"bin": "/espupdate/esp32-heltec-kit-32-4.bin"
}
Noch allen Lese-/Ausführungsrechte einräumen
sudo chmod 755 ../espupdate/ -R
ESP Programmierung
Libraries
Benötigt wird die esp32Fota Bibliothek:
Diese verwendet wiederum die ArduinoJson Bibliothek. Normalerweise kopiere ich die Bibliotheken mit in das Projektverzeichnis, damit ich immer eine lauffähige Version habe, die unabhängig davon ist, welche Bibliotheksversion in der Arduino GUI installiert ist.
Leider habe ich die ArduinoJson Bibliothek im Projektordner nicht zum Laufen bekommen (Pfadprobleme). Somit muss diese bitte über den LibManager der Arduino Gui installiert werden.
The integration of libraries in general is described under the following link, and I will not go into further detail here.
https://fambach.net/arduino-ide#BibliothekenLink status: OK
Test programme
Das Testprogramm kann, wenn nicht schon geschehen, über folgenden Link heruntergeladen werden.
https://github.com/sfambach/esp32/tree/master/test/ESP32fotaLink status: Broken
Bitte die WLAN Daten und ggf. die Serverdaten in der Datei P32fota.ino anpassen. Diese compilieren und auf den ESP spielen.
Binary mit neuer Version erstellen
In der Datei ESP32fota.ino die Version erhöhen:
#define VERSION 5 // hier die version um eins erhöhen
esp32FOTA esp32FOTA("esp32-heltec-kit-32", VERSION);
Danach über die Arduino Gui ein Binary erzeugen:

Im Projektordner findet sich dann eine .BIN Datei. Diese gleich benennen wie in der JSON Datei (hier esp32-heltec-kit-32-4.bin)
Und sie ins gleiche Verzeichnis wie die JSON Datei legen. Das folgende Video zeigt, wie der Versionswechsel aussehen kann.
(Der Dateiname ist nicht so wichtig, wichtiger ist die Version.)
Problems
Json/bin Datei wird nicht gefunden
Den Pfad und die Zugriffsrechte überprüfen (sudo chmod 755)
Conclusion
Die Installation gestaltet sich einfach. Ein sehr nützliches Tool, besonders wenn man mehrere Knotentypen und unterschiedliche Versionen betreibt. Durch die Verwendung der ArduinoJson Bibliothek geht sehr viel Speicher schon für das OTA verloren. Der ESP32 verfügt zwar über genügend Speicher, die Verwendung sollte jedoch gut überlegt sein.
Related Posts
Sources
Arduino JSonLink status: OK
ESP32FOtaLink status: Broken
AZ-Delivery ProjektLink status: Unknown
| Date | Change | Author |
|---|---|---|
| 03.10.2026 | Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatik Log-Liste eingefügt | Suffocation |
| 06.09.2019 | Post created | Suffocation |
Super Sache, funktioniert!
Eine bedeutende Verbesserung wäre noch der Umstieg von HTTP auf HTTPS, aber daran bin ich bisher immer gescheitert.
Vllt. einen weiteren Blogeintrag wert 😉
Kind regards!
Hallo Martin, ja Https wäre schön, in nächster Zeit wird das hier aber leider kein Beitrag, meine „Projektzeit“ ist aktuell mit „Hometeaching“ … und anderen Projekten mehr als ausgebucht :). Ich versuche es aber im Hinterkopf zu behalten.
Hello
Stef
😀 und mein Problem ist gelöst!
Da sieht man mal wieder, dass man seine Probleme häufig auch selber lösen kann, wenn man nur darüber spricht:
Ich Trottel habe im Pfad das Protokoll http mit angegeben. Daher klappte es auch im Browser….
Habe jetzt http weggelassen und siehe da, es klappt.
Trotzdem vielen Dank und ich hoffe, du machst mit deinem Blog weiter so 🙂
Kind regards!
Moin und vielen Dank für deinen Beitrag, schön dass du es selbst gefunden hast.
Greetings Stefan
Zunächst erst mal „Danke“ für deinen Beitrag hier! Du erklärst es echt gut und dank dir habe ich es bisher weit geschafft mit meinem ESP32.
Jedoch habe ich ein kleines Problem:
Der ESP32 liest die json-Datei aus und bemerkt auch, dass es eine neue Version gibt. Jedoch kommt dann die folgende Fehlermeldung:
————————–
updating
Connecting to: http://www…..de
Fetching Bin: /OTA/esp32-heltec-kit-32-2.bin
Got a non 200 status code from server. Exiting OTA Update.
contentLength : 0, isValidContentType : 0
There was no content in the response
————————-
Der Pfad ist definitiv richtig, da ich mit meinem Browser die bin-Datei unter eben diesen Pfad runterladen kann. Dementsprechend sind auch alle Rechte richtig vergeben (755). Die bin-Datei ist 873 kb Groß – und nicht Null.
Woran könnte das liegen? Ich habe schon verschiedene Pfade ausprobiert und weiß momentan nicht weiter.
Über eine kurze Rückmeldung würde ich mich freuen..
Wobei mir noch eine kurze Frage kommt 🙂 Du sagst, dass für die Json-Bibliothek viel Speicher benötigt wird. Gibt es auch eine alternative, die weniger Speicher frisst?
Viele Grüße!!