FOTA für ESP32

Firmware Over The Air, kurz FOTA, beschreibt die Möglichkeit wireless Sketches auf einen ESP oder Arduino zu spielen, ohne USB-Kabel, ohne FTDI! Wir kennen die Sache seit unseren Experimenten mit den RFM69-Funkmodulen. Felix Rusu hatte FOTA schon seit langem bei seinen Moteinos implementiert.

Was ist dazu nötig?

  • ein spezieller Boatloder, z.B. DualOptiboot
  • Flash-Speicher

Das oben ist eine “einfache” Möglichkeit wireless Sketches auf den Microcontroller zu bekommen. Noch komfortabler und flexibler ist es, wenn das Firmware-Update nicht mehr von außen angestoßen werden muss, sondern sich der node das neue update vom Server holt und autark installiert.

todo: Sammeln, wie und mit was das beim ESP32 geht.

Der ESP8266 von luftdaten.info hat in der Konfiguration eine Möglichkeit updates automatisiert einzuspielen, toto: Recherche, ob das schon tut oder nur vorgemerkt ist.

Linksammlung

Basis: Frühe Implementierungen (2015)

Wie ein Over-The-Air update bei ESP8266 bzw. ESP32 Maschinchen grundsätzlich über die Bühne gehen kann, beschreibt Thorsten von Eicken sehr schön im Blog von Jean-Claude Whippler (of JeeLabs fame) bei » Over-The-Air update » JeeLabs.

In diesem Kontext stellt der esphttpd Server von Jeroen Domburg “OTA update functionality” zur Verfügung. Jeroen beschreibt ihn selbst unter Introducing esp-httpd: webserver on an ESP8266. - Everything ESP8266 und Thorsten hat ihm ebenfalls einen eigenen Artikel unter » Web server software » JeeLabs gewidmet.

https://github.com/Spritetm/esphttpd/commit/fbca81d7

Die Kernimplementierung ist wohl innerhalb von GitHub - Spritetm/libesphttpd: Libesphttpd mirror of http://git.spritesserver.nl/libesphttpd.git/ angesiedelt, hier findet sich auch ein Verweis auf die Softwarebibliothek GitHub - atomicobject/heatshrink: data compression library for embedded/real-time systems.

Aktuellere Implementierungen

Im Folgenden ein paar Beispiele aus der Praxis, wie es anderswo konkret gemacht wird, teilweise konzeptionell eingebettet in modernere Softwareframeworks.

OTA mit Homie

Jan-Piet Mens zitiert den Artikel auch in seinem Beitrag Jan-Piet Mens :: MQTT on an ESP8266 Thing, in dem er das Softwareframework Homie von Marvin Roger vorstellt:

OTA updates are triggered by publishing a version number to the $ota endpoint; Homie then verifies if the version it received is higher than the one which is running, and instructs the ESP to boot and get the update via HTTP/HTTPS. (How this works is rather well explained here.) I think it’s important to mention that the homie-esp8266 framework is cloudless; it doesn’t require a cloud service, and it talks exactly to the servers you configure it to speak to.

Siehe dazu auch http://marvinroger.github.io/homie-esp8266/docs/2.0.0/others/homie-implementation-specifics/.

OTA server in Python for Homie

Jan-Piet Mens hat zur backendseitigen Steuerung der OTA Programmierung folgenden Server in Python bereitgestellt:

OTA mit ESPEasy

Auch das ESPEasy Framework bietet OTA Funktionalitäten ab Werk, siehe EasyOTA - Let's Control It.

OTA mit Particle

Mit der Device Cloud von Particle lassen sich ebenfalls OTA Firmware Updates mit blinkenden Lämpchen gestalten, siehe Over-The-Air Firmware: The Critical Driver of IoT Success – Particle Blog.

Man könnte vermuten, dass man das mit dem GitHub - particle-iot/spark-server: An API compatible open source server for interacting with devices speaking the spark-protocol auch in der “Local Cloud” tun kann. In dieser Richtung könnte man per Search results for 'ota' - Particle stöbern.