ESP8266/ESP32 3rd Party Firmware

Nicht jeder IoT-Bastler kann oder will eine eigene Firmware für den ESP8266 bauen. Letztlich stehen alle auch immer wieder vor den gleichen Problemen. Der Aufgabenstellung haben sich mehrere Personen unabhängig voneinander angenommen und jeder eine eigene "allgemeingültige Firmware" entwickelt, die Sie einfach auf einen ESP8266 laden und dann aus der Ferne konfigurieren können.

Überlegung

Bei der einfachen Entwicklung für den ESP8266 schreibe ich mir ein Programm, was genau und nur genau das macht, was ich da drin haben will. Ich nutze aber natürlich Bausteine und Module anderer Entwickler. Die "generische Firmware" der verschiedenen Entwickler soll es dem Nutzer aber noch einmal deutlich einfacher machen. Sie laden die Firmware direkt auf den ESP8266. Er startet dann meist einen WiFi AccessPoint, mit dem sie sich einfach verbinden. Über eine Webseite können Sie dann Funktionen aktivieren und Ports und Pins konfigurieren. Über vorbereitete Module können auch Fertigbausteine wie z.B. die Komponenten von SONOFF oder ein WLAN LED E27 Leuchte einfach mit einer alternativen Firmware versehen werden.

Sie müssen also gar nicht mehr richtig "Programmieren", wenn eine Firmware alles schon enthält und Sie nur noch Bausteine verbinden, z.B. dass ein Pin als Eingang den Pegel per MQTT weiter gibt oder einen Webseite anspricht. Umgekehrt können Ausgänge dann ebenfalls direkt per HTTPS oder MQTT oder andere Dinge angesteuert werden. Eine solche Firmware ist auf jeden Fall einen Blick wert. Vielleicht ist ihr Problem schon lange gelöst

Sonderfall Tuya

Siehe dazu die mittlerweile eigene Seite Tuya - IoT as a Service -Viele Geräte haben einen ESP8266 mit Tuya Firmware. Besser geht es ohne.

Alte Firmware sichern!

Ehe sie bei einem bestehenden ESP8266 einfach eine neue Firmware drauf schreiben, sollten Sie vielleicht die vorhandene Werksfirmware sichern. Das geht bei Shelly 1/2 mit einem 2MB Flash-Speicher z.B. mit:

# per Python
esptool.py --p COM5 --baud 115200 read_flash 0x00000 0x200000 Backup_2MB.bin

# per EXE
esp_tool.exe -pCOM5 -b115200 -a0x0000 -s0x200000 -or Shelly1_Backup.bin

Bei Shelly kann man die Firmware später so auch wieder einspielen. Bei meinem Sonoff hat es nicht geklappt, die Sicherung von einem Gerät auf einem anderen Gerät einzuspielen. Eventuell ist da ja eine Kopplung an die MAC-Adresse eingebaut.

Übersicht

Ich bin nicht mal sicher, ob ich nun alle alternativen Firmware-Lösungen beschrieben habe. Aufgrund der hohen Dynamik bei der Entwicklung bin ich sicher dass die Funktionen sich auch sehr schnell erweitern werden und die Tabelle veraltet. Alle laufen mit dem ESP8266 aber ich kann mir vorstellen, dass bald auch der ESP32 bedient wird.

Die Liste versuche ich zu ergänzen, soweit ich mit den verschiedenen Firmware-Varianten Erfahrungen gesammelt habe.

Firmware ESPEasy Tasmota ESPurna

Chip

ESP8266

ESP8266

ESP8266

Initalkonfig

WLAN AP "ESP-01"
Browser

WLAN AP
Browser

WLAN AP
Browser

Devices

WeMos und andere
Sonoff

WeMos und andere
Sonoff
Shelly

Generic

Digital In

Schalter, Taster
HC-SR04 Abstand

?

Taster, Schalter,

1Wire

DS18B12
DHT11/22

?

DS18B12
DHT11/22
u.a

I2C

Druck, Feuchte, Strom, Lux, Motor, Display

?

Umfangreich

Analog In

Ja

?

Umfangreich

Digital Out

Relais

?

Relays, Delay Switch

Kommunikation

MQTT
Domoticz
HTTP
UDP
Thinkspeak

MQTT
Domoticz
Hausautomation

MQTT
Domoticz
HomeSpeak
ThinkSpeak

Sonst

 

 

Scheduler
Alexa

Die Liste ist sicher nicht komplett aber es ist gut sehen, dass ESPEASY am umfangreichsten ist und fast alle Sensoren und Aktoren unterstützt. Tasmota hingegen wurde zuerst auf die SONOFF-Geräte optimiert und bedient neben Shelly auch andere Geräte. Es ist also weniger für Leute, die ihr Gerät selbst zusammen bauen sondern für Besitzer eines ESP8266 Geräts, die dieses von der Hersteller-Firmware befreien wollen.

ESPEasy

Mit ESPEasy gibt es nun eine Firmware, die den Einstieg noch einfacher machen soll. Sie laden sich ESPEasy herunter und flashen diese auf ihren ESP822. Nach dem Neustart finden SIe ein neues WLAN, mit dem Sie sich verbinden können. Über die Webseite können Sie den ESP8266 konfigurieren und in ein Haus-LAN aufnehmen. Danach können Sie wieder über die Webseite die weitere Konfiguration vornehmen, mit der Sie die Funktion der Ein/Ausgänge festlegen und per einfacher Skriptsprache sogar Aktionen auslösen können.

  1. Firmware herunter laden
    Die gibt es bei https://www.letscontrolit.com/wiki/index.php/ESPEasy
  2. Firmware flashen
  3. Per WLAN mit der SSDI "ESP-01" verbinden
    Kennwort ist "configesp"
  4. Browser auf http://192.168.4.1 gehen
    Es kann durchaus etwas dauern, bis die Webseite erscheint
  5. Modul mit dem HausWLAN SSID und Kennwort konfigurieren
  6. Nun wieder im LAN mit dem ESP8266 verbinden

Jetzt brauchen Sie also nicht einmal mehr viel Programmieren oder ihre eigenen Projekte erst als Code mit den WLAN-Zugangsdaten schreiben und flashen. Genau genommen wird so ein ESP8266 auch zur einfachen Basis für Schülerprojekte u.a., wenn Sie nun nur noch ein geeignetes "Shield" aufsetzen müssen. Zumal auch ein MQTT-Stack schon enthalten ist.

ESPurna

Vergleichbar mit ESPEasy, Sehr große Sensor und Aktor-Unterstützung.

Tasmota

Die Tasmota-Firmware ist vermutlich aufgrund der Endgeräte von SONOFF entstanden. Diese recht günstigen Geräte erlauben mit dem ESP8266 das Schalten von 230V-Verbrauchern und einigem Mehr. Mittlerweile gibt es auch andere Geräte wir z.B. Shelly, die ebenfalls unterstützt werden. Tasmota hat also weniger den Bastler, der an einen ESP8266 die verschiedensten Sensoren anbinden als Zielgruppe, sondern die Hausautomatisierungsfreunde, die Fertiggeräte umdefinieren und die meist chinesische Firmware durch eine offen Firmware ersetzen wollen.

Meine persönlichen Spickzettel:

Aufgabenstellung Aktion

Reset

Um ein Tasmota-Device zurück zu setzen gibt es mehrere Wege:

  1. 40s die Taste 1 (GPIO0) gedrückt halten.
    Das funktioniert mit SONOFF Geräten z.B. gut
  2. 6x die Stromversorgung ein/aus-schalten (Max 10 Sek zwischen jeder Schaltung. Beim 7ten Einschalten macht es einen Factory Reset.
  3. Über die serielle Schnittstelle
RESET 1   Rücksetzung auf firmware defaults und Neustart. Stromversorgung muss danach kurz unterbrochen werden
RESET 2 = Flash löschen, Reset auslösen und Firmware Defaults laden (Stromversorgung kann an bleiben)

WLAN seriell konfigurieren

Wenn ich das Gerät seriell mit Tasmota geflashed habe, dann kann ich zwar auf den Restart warten, mich dann mit dem WiFi-Manager verbinden und die Erstkonfiguration vornehmen. Solange ich aber noch eine serielle Verbindung habe, kann ich ersten Einstellungen für WLAN, MQTT und Syslog schon direkt per Konsole vornehmen.

Backlog SSID1 <myssid>; Password1 <mypassword>
Backlog MqttHost 192.168.178.10
Backlog Loghost 192.168.178.10; LogPort 514; Syslog 2

ESP32 Bluetooth

Wenn Tasmota32-Bluetooth auf einem ESP32 eingesetzt wird, kann man Bluetooth-Beacons empfangen. Auch das muss aber eingeschaltet werden.

iBeacon 1
iBeaconPeriod 60
iBeaconOnlyAliased 1
BLEMaxAge 60

Statusmeldung abfragen

Wenn ich die IP-Adresse habe, kann ich per Powershell schnell die Informationen sammeln.

PS C:\> (Invoke-RestMethod http://192.168.180.12/cm?cmnd=Status)

Status
------
@{Module=18; DeviceName=Tasmota; FriendlyName=System.Object[]; Topic=tasmota_A207CD; Bu…

Wenn Sie z.B. "Status 1"ausösen wollen müssen Sie bei HTTP-Requests das Leerzeichen als "%20" codieren.

Command    JSON-Root  Bedeutung
"Status":  STATUS     StatusGerätestatus
"Status0":            Alle Informationen
"Status 1" StatusPRM: Basisparameter, Baurate etc.
"Status 2" StatusFWR: Firmware 
"Status 3" StatusLOG: Logging (Syslog)
"Status 4" StatusMem: Speichernutzung
"Status 5" StatusNET: WLAN, IP-Adresse etc
"Status 6" StatusMQT: MQTT Server Information
"Status 7" StatusTIM: Zeitinformationen
"Status 8" StatusSNS siehe Status 10. Rückwärtskompatibilität
"Status 9" StatusPWR: Geräte mit Energiemessung liefern hier Daten
"Status 10" StatusSNS: Status der Sensoren
"Status 11" StatusSTS: Anzeige der "Teleperiod" Ausgabe

Achtung: Das Property in der Antwort ändert sich.

PS C:\> (Invoke-RestMethod http://192.168.180.12/cm?cmnd=Status%201)

StatusRPM
------
@{Baudrate=115200; SerialConfig=8N1; GroupTopic=tasmotas; OtaUrl=http://ota.tasmota…

Der Upload der Firmware ist über einen USB/Seriell-Adapter mittlerweile sogar direkt über Edge/Chrome möglich.

The COMPLETE Guide to Tasmota 2019
https://www.youtube.com/watch?v=08_GBROKQH0

Cloudfreie Software für Sonoff-Schalter (Tasmota)
https://www.youtube.com/watch?v=SxPYNPPobRY

Aber die Anleitung macht mir auch deutlich, dass MQTT eine wichtige Entwicklung im Bereich dieser Steuerungen ist. Also wird es Zeit sich damit auseinander zu setzen. Es gibt massenhaft Videos zu Tasmota und den Einsatz mit MQTT. Hier nur ein paar Beispiele

ESPHome

Eine weitere Firmware ist ESPHome. Sie benötigen dazu einen PC mit Python, auf dem Sie dann eine Konfigurationsdatei erstellen und auf die verschiedenen Geräte einspielen. Es gibt hier also keine Weboberfläche, über die Sie sich mit dem ESP verbinden und einzelne Ports konfigurieren. Stattdessen erstellen Sie auf einem PC eine Konfigurationsdatei (YAML), aus der dann eine passende Firmware kompiliert und hochgeladen wird.

Die Zielgruppe sind hier die Anwender von "Home Assistant", da hiermit die Geräte automatisch erkannt werden. Die yaml-Dateien ähnelnd auch der Konfiguration von Home Assistant.

Es gibt auch keinen Weg mehr von einem ESP die Konfiguration wieder zu lesen. Das Prinzip ist dennoch interessant, da so die Konfiguration selbst auf einem PC oder Docker-Container erfolgt und Sie mehrere ESP-Geräte dann sehr einfach nacheinander betanken können. Der Einstieg ist hier also etwas aufwändiger aber kann sich lohnen.

OpenMQTTGateway

Diese Firmware verspricht, per IR, RS232, Bluetooth, 433MHz empfangene Daten per WLAN auf einen MQTT-Server zu senden. Ich habe das Projekt bei der Suche nach einem BTLE-Empfänger gesucht, der BTLE-Beacons sammelt. Die Einstiegshürde ist hier besonders niedrig, da ein Chromium Browser reicht. Chromium kann direkt per USB ihren ESP32 flashen.

Danach sollten Sie ein neues WLAN mit dem Namen "OpenMQTTGateway-*" mit dem Kennwort "your_password" finden. Nutzen sie einen PC oder Smartphone, um sich mit dem WiFi Manager zu verbinden den dann die SSID und Kennwort des gewünschten WLAN und die Daten des MQTT-Servers einzutragen. Danach bootet das Device und meldet z.B. jedes gefundene BTLE-Gerät per MQTT.

Tipp: Wenn sie z.B. einen M5Stick-C nutzen, dann wird auch das Display für Fehlermeldungen genutzt. Ansonsten loggt openMQTTGateway auch über die serielle Schnittstelle. Nur eine Konfiguration ist darüber, anders als bei Tasmota, (noch) nicht möglich

Die Konfiguration erfolgt aber dann über den MQTT-Server, d.h. die Firmware sendet nicht nur Daten per MQTT sondern nimmt so auch Einstellungen entgegen. Eine eigene Webseite hat das Gateway nach der Einbindung in das WLAN nicht mehr, zumindest hat ein Intensive Scan mit NMAP nicht gefunden. Wer die Konfiguration ändern möchte, muss das Gateway entweder neu flashen und wieder neu einrichten oder muss über MQTT-Server die entsprechenden Einstellungen vornehmen. Die sind aber auf der Projektseite gut beschrieben.

#307 How To Lose Weight with a Raspberry Pi and an ESP32
https://www.youtube.com/watch?v=noUROhtf0E0

vhESP (verschwunden ?)

Andreas van Haaren ist der Autor dieser Firmware, die speziell für die ESP-01-Module entwickelt wurde. Sie wird einmal aufspielt. Alle Funktionen lassen sich dann per Browser einrichten. Der ESP01 agiert dazu als Access-Point, mit dem man sich verbinden kann. Durch die Fokussierung auf den ESP01 kann man die beiden UART-Anschlüsse und den seriellen Anschluss programmieren. Durch die Firmware kann das Modul sowohl aktiv als Sender als auch passiv als Server betrieben werden. Ebenso kann zwischen UDP, TCP und Webservermodus gewählt werden. Die Firmware wird vom Autor schön dokumentiert und auf der Webseite www.vhesp.com bereitgestellt.

Im Vergleich zu ESPEasy oder ESPurna ist vhESP deutlich einfacher. Da ein ESP01-Modul (sehr günstig) reicht, beschränkt sich die Firmware auf 2 digital Ein/Ausgänge, deren Status per UDP/TCP/XML gesendet wird. Für einfache Aufgaben mit eben zwei Schaltkontakten, z.B. Briefkastenschlitz o.ä. kann so etwas komplett ausreichen und sie müssen sich nicht in größere Pakete einarbeiten

Sensate

Eine Sonderstellung nimmt die Firmware "Sensate" ein, da Sie mit einem Cloud-Backend kommuniziert und es eine passende App für Mobilgeräte gibt. Dahinter steht diesmal keine chinesische oder amerikanische Firma, sondern die Sensate Digital Solutions GmbH mit Sitz in Österreich. Auf https://www.sensate.io/de/impressum findet sich ein gut erreichbares Impressum.

In der Firmware findet sich eine BridgeURL, die auf hub.senate.cloud verweist und von der IP-Adresse beim Provider IONOS/1&1/Schlund verortet ist (Aug 2020). Das Protokoll ist HTTPS samt im Code hinterlegtem Fingerprint (Certificate Pinning).

Was noch unklar ist, ist das Geschäftsmodell, denn auf der Webseite wurden Mitte 2020 zwei nicht verfügbare Produkte, Sensate Grill als Grillüberwachung und Sensate Terra für Terrarien angekündigt. Die Entwicklung und der Betrieb des Servers kostet aber auch Geld und wer heute mit IoT hantiert, möchte ja sicher nicht morgen "offline" sein, weil der Sponsor keine Zeit und Mittel mehr hat. Allerdings kann man die Firmware auch anweisen, zusätzlich einen eigenen MQTT-Server zu verwenden.

Die Parametrisierung der eigenen Lösung erfolgt über die Webseite:

Sie laden dann die Firmware auf das Board, richten Sie im Netzwerk ein und spielen die Parametrisierung ein. Auf der Webseite gibt es schon erste Bauanleitungen und Links zu Videos

Das sieht alles ganz brauchbar für Einsteiger an, die einen ESP8266 mit den unterstützten Sensoren in Betrieb nehmen wollen. 

LUA/NodeMCU Builder

Die Firmware "NodeMCU" ist keine klassisches Paket zur fertigen Steuerung des ESP8266 sondern eigentlich eine Laufzeitumgebung, die man aber über den nodemcu-Builder auf seinen Anwendungsfall zurechtschneidert. Die Programmierung müssen Sie aber mit LUA immer noch selbst machen.

ESPruino

Diese Firmware funktioniert auf den eigenen Boards aber es gibt auch "unsupportet" Portierungen auf den ESP32, ESP8266 und BBC Microbit. Interessant ist ESPruino für all die Entwickler, die bislang schon mit JavaScript gearbeitet haben. Über eine GUI, die lokal oder im Browser gestartet wird und per Bluetooth oder Seriel mit dem Board kommuniziert. Ich selbst nutze diese Firmware aktuell nicht.

Basecamp für IoT mit MQTT

Ich habe Basecamp hier mit aufgeführt, auch wenn es keine eigenständige alternative Firmware ist. Basecamp ist nicht allein lauffähig sondern eine Bibliothek, die die Entwicklung eigener Projekte sehr einfach macht, indem Sie Basisfunktion wie z.B. einen WebServer zur Verwaltung mitbringt. Sie funktioniert aber wohl erst ab dem neueren ESP32 und nicht mit dem originalen ESP01 oder ESP8266.

Der Auslöser zur Entwicklung dieser Firmware dürfte der Wunsch gewesen sein, IoT-Projekte ohne öffentliche Clouds zu nutzen. Basecamp vereinfacht sehr stark die Entwicklung eigener Sensoren mit einer Anbindung an einen MQTT-Broker, der problemlos auch intern stehen kann.

ESP-Link

Diese Firmware ist eine Bridge zwischen zwei unterschiedlichen Welten. Man kann damit z.B. serielle Datenströme (z.B. Modbus/RS485) über WLAN in ein Netzwerk bringen u.a.

Frankenstein

Etwas außer der Reihe sehe ich die Firmware, die den ESP8266 per TELNET erreichbar und steuerbar macht.

FreeRTOS

Ich habe selbst noch keine Erfahrung mit FreeRTOS gesammelt. Daher hier nur ein paar Links

Weitere Links