OTA - ESP8266 "Over the Air" flashen

 

Der ESP8266 macht extrem viel Spaß, zumal es mitlerweile mehrere Möglichkeiten gib, den kleinen Burschen über WIFI zu flashen.
Weil wireless, wird keine physische Verbindung mit dem ESP mehr benötigt, auch das Setzen des BootModes entfällt.

Grundvoraussetzung für diese Möglichkeit ist, dass alte Firmware und neue Firmware zusammen in den Flashspeicher passen.
Da zur Laufzeit des alten Sketches der neue Sketch in den Speicher kopiert werden muss. Erst nach dem Hochladen des gesamten neuen Sketches wird der alte überschieben.

 

Stabil läuft OTA ab Arduino V1.6.7 und esp8266 V2.1.0-rc2

Um die aktuelle "staging" - Version im Boardmanager zu finden ist folgende URL anzugeben.

http://arduino.esp8266.com/staging/package_esp8266com_index.json

 

Eine ausführliche Beschreibung der Funktionen ist hier zu finden:

https://github.com/esp8266/Arduino/blob/master/doc/ota_updates/ota_updates.md

 

Erste Schritte sind hier zu finden:

http://www.s6z.de/cms/index.php/homeautomation-homecontrol/hardwareplattformen/esp8266/110-hello-led-das-erste-lebenszeichen

 


 

Folgende Möglichkeiten können zum Flashen einer neuen Firmware "Over the Air" genutz werden.

  1. Arduino OTA
    Hier wird neben der Arduino IDE auch noch eine Python Installation in der Version 2.7 benötigt.
    Das Flashen erfolgt dann analog zum Flashen über die serielle Schnittstelle.

  2. WEB-Interface OTA
    Hier stellt die alte Software einen HTTP-Server zur Verfügung über den ein fertig kompilierter *.bin File hochgeladen werden kann.
    Besonders interessant weil keine zusätzliche Software (Arduino / Python) mehr benötigt wird.

  3. HTTP-Server OTA
    Hier erfolgt das Flashen der neuen Firmware aus dem laufenden Code heraus. Im Code wird der Pfad zum *.bin File hinterlegt, der ESP kann sich somit selber Flashen!
    Interessant ist diese Option für automatische Firmwareupdates. Tagsüber mal schnell was am Code geändert, diesen einmal zentral bereitgestellt und die Firmware Flasht sich nacht selber.

 


 

Arduino OTA

 

Vor der Nutzung muss noch die Python-Version V2.7 für die entsprechende Plattform (WIN, Linux, MAC) installiert werden.

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

Wichtig ist es beim Installationspunkt "Customize Python 2.7.x" den Auswahlpunkt "Add python.exe to Path" mit anzugeben.
Sonst wird die Python.exe nicht von der Arduino IDE gefunden.

 

Beispielsketch: ArduinoOTS/BasicOTA laden und die Zugangsdaten (SSID/Passwort) ändern und wie gewohnt den ESP seriell flashen.

 

Nach dem Reboot besitzt der ESP einen "WIFI-Bootloader".
In der Arduino IDE kann jetzt unter Werkzeuge/Upload Using: von seriel auf OTA umgestellt werden.
Das wars! Bein nächsten Hochladen wird der Sketch über Python und WIFI auf den ESP geladen.

Ganz ohne das lästige Drücken der BootMode-Buttons und schneller geht es auch noch (als 115200).

 


 

WEB-Interface OTA

 

 Beispielsketch: ESP8266HTTPUpdateServer/WebUpdater laden und die Zugangsdaten (SSID/Passwort) ändern und wie gewohnt den ESP seriell flashen.

 

Nach dem Reboot besitzt der ESP einen "WEB-Interface-Bootloader".

Das WEB-Interface ist im Browser unter der IP des ESP zu erreichen.

192.168.1.43/update oder http://esp8266-webupdate.local/update

 

Der hochzuladende *.bin File ist nach dem kompilieren ein wenig tricky zu finden.

Standartmäßig liegen die kompilierten Files unter:

C:\Users\MyName\AppData\Local\Temp\build.........tmp\WebUpdater.ino.bin

Einfach mal auf das Datum des Verzeichnises schauen.

 

File auswählen und ab geht die wilde Fahrt.....

 


 

HTTP-Server OTA

 ToDo

 


 

Links

https://github.com/esp8266/Arduino/blob/master/doc/ota_updates/ota_updates.md
http://esp8266.github.io/Arduino/versions/2.1.0-rc2/doc/ota_updates/ota_updates.html

 

 

Kommentare (4)

Cancel or

  • Egon Wisberg
    Bitte keine weiteren Bemühungen, es klappt nun.
    Da die Fehlermeldung auf phyton.exe verwies habe ich Phyton deinstalliert und noch einmal neu installiert. Bei der zweiten Installation sah ich im Bereich "Customize Python 2.7.x", nach dem ich den sichtbaren Bildausschnitt in diesem Fenster nach unten geschoben habe, auch den zu ändernden Eintrag unter "Add python.exe to Path".
  • Egon Wisberg
    Hallo Alexander.
    Du hast diesen deinen Beitrag am 07.02.2016 veröffentlich. Ich beschäftige mich jetzt (01.12.2018) mit diesem Thema erstmalig und habe die Arduino IDE Version 1.8.5.
    Nach deinen Vorgaben habe ich die Python-Version V2.7.15 installiert. Was mir bei der Installation nicht möglich war: ich bekam keine Eingabemöglichkeit am Installationspunkt "Customize Python 2.7.x" den Auswahlpunkt "Add python.exe to Path" anzugeben!
    Da ich nach dem Neustart in der IDE unter Datei/Beispiele/ArduinoOTA/BasicOTA den Sketch BasicOTA.ino fand denke ich mir, dass Python wohl richtig gestartet wurde. Über die USB Kopplung habe ich nach Eintragung meiner SSID und meinem Passwort den Sketch BasicOTA.ino auf einen WeMos D1 mini geflasht. Hat alles ohne Fehlermeldung funktioniert.
    Das zweite Beispiel in dem Verzeichnis OTALeds.ino habe ich entsprechend meinen Daten angepasst. Als ich dann unter Werkzeuge/Port auch noch den esp8266-14610 at 192.xxx.xxx.xxx fand, war ich höchst zufrieden. Deine Vorgabe unter Werkzeuge/Upload Using: von seriel auf OTA umzustellen habe ich aufgrund der aktuelleren IDE-Version als hinfällig angesehen - zumal ich diesen Punkt auch nicht finden konnte.
    Nur: Bei Hochladen des Sketches ist ein Fehler aufgetreten!!!
    Folgender weiterer Text:
    java.io.IOException: Cannot run program "python.exe": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
    at java.lang.Proc........
    ...
    Kannst du oder sonst wer mir da einen Rat geben?



  • Alexander Schulz
    Danke fürs Info, klingt interessent :)
  • Jochen
    Wir haben ein Tool entwickelt mit welchem ein bin file direkt zum ESP per OTA hochgeladen werden kann:
    Siehe
    http://1st.bitbumper.de/ota-firmware-update-tool-for-esp8266/