ESP8266ESP8266 - Einführung

Arduino OTA Update – Update über WLAN

In diesem Artikel zeige ich Dir, wie Du den Sketch auf einem ESP8266 oder Arduino-Mikrocontroller über OTA (Over-the-air) updaten kannst.

Für einen Arduino bzw. ESP8266 Mikrocontroller gibt es im Smart-Home interessante Verwendungsmöglichkeiten. Gerade wenn dann ein Sensor oder Aktor aber fest verbaut ist, wird es meist schwierig und aufwändig Software-Anpassungen auf dem Mikrocontroller zu flashen. Für dieses Problem stellt die Bibliothek ArduinoOTA eine gute Lösung zu Verfügung.

Mit der Bibliothek wird auf dem Mikrocontroller eine Schnittstelle für das sogenannte OTA-Update zur Verfügung gestellt. Bei einem OTA (Over-the-Air) Update wird der Sketch per WLAN aktualisiert und erfordert somit keine serielle Verbindung mehr zum PC. Im Artikel zeige ich Dir die Verwendung der Bibliothek an einem kleinen Beispiel.

Im ersten Schritt müssen wir nun Python installieren. Ich habe mir dazu auf der Python-Webseite die aktuellste Version 3.9.0 (Stand 14.11.2020) heruntergeladen und installiert.

https://www.python.org/downloads/

Nach dem Python installiert wurde, können wir nun die ArduinoIDE starten und hier mit der Installation der Bibliothek beginnen. Dazu klickst Du im Hauptmenü auf die Schaltfläche Werkzeuge Bibliotheken verwalten.

Im Bibliotheksverwalter suchst Du dann nach der Bibliothek ArduinoOTA. In meinem Fall habe ich dann über die Schaltfläche Installieren die aktuelle Version 1.0.5 installiert (Stand 14.1.2020).

Nach dem wir nun die Bibliothek installiert haben, können wir direkt mit dem Sketch beginnen. Ich empfehle euch dazu den Sketch BasicOTA im Bereich Beispiele der ArduinoOTA Bibliothek als Grundlage zu verwenden.

Der Sketch BasicOTA zeigt das Grundgerüst eines OTA-Update fähigen Sketchs, welches ich direkt als Grundlage für mein Beispiel verwende.

Im ersten Schritt habe ich den Beispiel-Sketch dazu in meinem Sketch-Verzeichnis gespeichert. Im nächsten Schritt habe ich dann die WLAN-Konfiguration angepasst. Hierzu einfach die Konstanten ssid und password mit euren WLAN-Daten ergänzen.

Der Sketch ist relativ einfach, in der Setup-Methode wird die Verbindung zum WLAN hergestellt und zudem die OTA-Schnittstelle bereitgestellt. Im Sketch könnt ihr den Standard-Port umstellen (setPort-Methode) sowie den Hostnamen des ESP8266 setzen. Standardmäßig bekommt er den Namen „esp8266-<clientid>“. Zudem kannst Du für das Updaten des Sketches eine Authentifizierung in Form eines Passworts im Klartext oder als MD5-Hash hinterlegen. Standardmäßig ist die Authentifizierung deaktiviert.

In meinem Beispiel habe ich jetzt an den Port D5 sowie D7 eine LED inkl. Vorwiderstand angeschlossen, welche als Wechselblinker gesteuert werden. Wichtig ist hierbei, dass in der Loop-Funktion deines Sketchs keine Delay() Methoden verwendet werden, da ansonsten ein OTA-Update nicht möglich ist.

Hier der Sketch als Beispiel zum Download

Arduino OTA Beispiel Sketch (2069 Downloads)

Nach dem wir den Sketch heruntergeladen und gespeichert haben, müssen wir den Sketch nun einmalig über die serielle Schnittstelle (USB-Kabel) auf den ESP8266-Mikrocontroller übertragen.

Nach der Übertragung des Sketchs sollten die beiden LED abwechselnd blinken (Wechselblinker-Schaltung). Jetzt solltest Du die ArduinoIDE komplett schließen und wieder neu starten. Wenn Du dann wieder den Sketch wählst, und den ESP8266-Mikrocontroller zwischenzeitig vom PC entfernt und z.B. mittels einem 5V Netzteil wieder gestartet hast, solltest Du in der Port-Auswahl den neuen Netzwerk-Port sehen.

Ich hoffe Dir gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

3 Gedanken zu „Arduino OTA Update – Update über WLAN

  • Frank

    Hallo,
    wäre nett, wenn beschrieben würde wozu Python benötigt wird, was macht die Software?
    MfG

    Antwort
  • Sascha Gutherz

    Hi.
    Sie schreiben „Wichtig ist hierbei, dass im kompletten Sketch keine Delay() Methoden verwendet werden, da ansonsten ein OTA-Update nicht möglich ist.“.
    Dabei verwenden Sie selbst in der Setup() in Zeile 23 : delay(5000);

    Ist vielleicht gemeint, daß in der Loop() kein Delay() benutzt werden darf?

    Antwort
    • Matthias Korte

      Hallo Sascha,
      ja, das ist natürlich korrekt, werde ich berichtigen. Danke!
      Kein Delay in der Loop() Funktion 🙂
      LG Matthias

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.