OTA – ESP32fota Test

OTA (Update over the Air) ist eine Konzept zum aktualisieren der Firmware über ein Netzwerk. An dieser Stelle teste ich die Esp32FOTA Biliothek.

Diese ist auf Github unter folgenden Link zu finden:

https://github.com/chrisjoyce911/esp32FOTA

Alle von mir verwendeten Dateien befinden sich in folgenden Github Verzeichnis:

https://github.com/sfambach/esp32/tree/master/test/ESP32fota

Sollte etwas nicht funktinieren, lieber die Github Dateien verwenden, diese sind aktueller als der Beitrag. Bei Problemen lasst einen Kommentar da.

Anwendungsbereiche

  • Für ESP32, vielleicht auch für ESP8266 (noch zu testen) und andere die über einen Netzwerkzugang verfügen
  • Bietet die Möglichkeit aktualisierung mehrere Clients ohne direkten Zugang durch zu führen.

Benötiget Komponenten

  • ESP32
  • Webserver (in meinem Fall ein Raspberry PI)

Versuchsaufbau

  • Der ESP wird initial mit einer Firmware bespielt.
  • Auf einem Webserver wird einen Jason Datei mit Update-Informationen abgelegt.
  • Gibt es eine neue Firmware, wird die Jason 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.

Webserver

Installation

Ich habe bereits einen PI als Webserver und werde hier nicht mehr auf die Installation eingehen. Folgender Link könnte aber dabei helfen:

Konfiguration

Für das Projekt habe ich ein neues Verzeichnis mit einer leeren Jason 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ühre-Rechte einräumen

sudo chmod 755 ../espupdate/ -R

ESP Programmierung

Bibliotheken

Benötigt wird die esp32Fota Bibiothek:

https://github.com/chrisjoyce911/esp32FOTA

Diese verwendet wiederum die Arduino Jason Biliothek. Normalerweise kopiere ich die Bibliotheken mit in das Projektverzeichnis, damit ich immer eine lauffähige Version habe, die unabhängig davon ist welche Bibliotheks Version in der Arduino GUI installiert ist.
Leider habe ich die ArduinoJason Bibliothek im Projektordner nicht zum Laufen bekommen (Pfadprobleme). Somit muss diese bitte über den LibManager der Arduino Gui installieret werden.

https://github.com/bblanchon/ArduinoJson

Die Einbindung von Bibliotheken im generellen ist unter folgenden Link beschrieben, hier werde ich nicht mehr näher darauf eingehen.
http://fambach.net/arduino-ide#Bibliotheken

Testprogramm

Das Testprogramm kann, wenn nicht schon geschehen, über fogenden Link herunter geladen werden.

https://github.com/sfambach/esp32/tree/master/test/ESP32fota

Bitte die WLan Daten und gg. 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:

Arduino Gui – Binary exportieren

Im Projektordner findet sich dann eine .BIN Datei. Dies gleich benennen wie in der Jason Datei (Hier esp32-heltec-kit-32-4.bin)

Und sie ins gleiche Verzeichnis wie die Jason Datei legen. Das folgende Video zeigt wie der Versionswechsel aussehen kann.

(Der Dateiname ist nicht so wichtig, wichtiger is die Version.)

esp32fota update Firmware von Version 4 auf 5

Probleme

Json/bin Datei wird nicht gefunden

Den Pfad und die Zugriffsrechte überprüfen (sudo chmod 755)

Fazit

Die Installation gestaltet sich einfach. Ein sehr nützliches Tool, besonders wenn man mehrere Knotentypen und unterschiedliche Version betreibt. Durch die Verwendung der ArduinoJson Bibliothek geht sehr viel Speicher schon für das OTA verloren. Der ESP32 verfügt zwar über genügen Speicher die Verwendung sollte gedoch gut überlegt sein.

Verwandte Beiträge

Quellen

https://github.com/bblanchon/ArduinoJson

https://github.com/sfambach/esp32/tree/master/test/ESP32fota

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/ota-over-the-air-esp-programmieren-uber-wlan-entwurf?ls=de&cache=false

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.