Die Steuerung der WeatherLox Wetterstation basiert auf einem ESP32. Als Firmware nutzen wir ESPEasy, ergänzt um alle Plugins, die für die WeatherLox-Sensoren gebraucht werden – einschließlich des Blitzsensors AS3935. Das fertige Image mit Firmware, Konfiguration und Rules steht auf GitHub zum Download bereit. Wer möchte, kann die Firmware auch selbst bauen.

Es gibt zwei Wege, die Firmware auf den ESP32 zu bringen:

  • Fertiges Image von GitHub flashen – direkt im Browser, ohne zusätzliche Software. Das ist der einfachste Weg.
  • Firmware selbst bauen – nur nötig, wenn die Firmware angepasst oder eine neuere ESPEasy-Version verwendet werden soll.

Image von GitHub flashen

Geflasht wird mit dem ESP Tool von Espressif, dem Hersteller des ESP32. Das Tool läuft komplett im Browser und überträgt das Image per USB auf den ESP32.

Was benötigt wird

  • das ESP32-Board der Steuerung
  • ein USB-Datenkabel (reine Ladekabel funktionieren nicht)
  • ein PC mit Chrome, Edge oder Opera. Firefox und Safari unterstützen den Zugriff auf die serielle Schnittstelle (Web Serial) nicht.

Schritt 1: Image herunterladen

Auf GitHub wird der Ordner firmware/v0100/bin geöffnet. Dort liegen zwei Dateien. Benötigt wird die Datei, deren Name auf _full.bin endet, aktuell WeatherLox_20261018_custom_ESP32_4M316k_full.bin. Nach einem Klick auf die Datei lässt sie sich über das Download-Symbol rechts herunterladen.

Die Full-Datei ist ein komplettes Abbild des Flash-Speichers (4 MB): Bootloader, Partitionstabelle, Firmware und das Dateisystem mit der WeatherLox-Konfiguration und den Rules. Die Datei ohne „_full“ im Namen enthält nur die Firmware. Sie ist für spätere Updates über die Weboberfläche des ESP32 gedacht (OTA-Update).

Schritt 2: ESP32 anschließen

Der ESP32 wird per USB mit dem PC verbunden. Er meldet sich als serielle Schnittstelle an, meist als „CP210x USB to UART Bridge“ oder „CH340“. Wird er nicht erkannt, fehlt der passende USB-Treiber. Die Treiber und eine Anleitung gibt es bei Espressif.

Schritt 3: ESP Tool öffnen und verbinden

Das ESP Tool wird unter https://espressif.github.io/esptool-js/ geöffnet. Die voreingestellte Baudrate von 921600 kann übernommen werden. Nach einem Klick auf Connect (1) zeigt der Browser eine Liste der seriellen Schnittstellen. Dort den ESP32 auswählen und auf Verbinden klicken.

Klappt die Verbindung nicht, beim Klick auf Connect die Taste BOOT auf dem ESP32-Board gedrückt halten und loslassen, sobald die Verbindung steht. Hilft auch das nicht, die Baudrate auf 115200 stellen.

Schritt 4: Image flashen

Nach dem Verbinden zeigt das ESP Tool den erkannten Chip und darunter den Bereich zum Flashen:

  1. Flash Address (1): Voreingestellt ist 0x1000. Der Wert muss auf 0x0 geändert werden. Die Full-Datei beginnt mit dem Bootloader und muss deshalb ab Adresse 0 geschrieben werden.
  2. Datei auswählen (2): die in Schritt 1 heruntergeladene _full.bin-Datei auswählen.
  3. Program (3): Startet den Flashvorgang. Flash Mode, Flash Frequency und Flash Size bleiben auf den Voreinstellungen.

Der Fortschritt wird in der Konsole unter dem Formular angezeigt. Das Flashen dauert ein paar Minuten. Die Full-Datei überschreibt den kompletten Speicher, also auch eine vorher installierte Firmware und alle alten Einstellungen. Wurde die Steuerung schon einmal benutzt, sollten die eigenen Einstellungen aus rules1 vorher notiert werden.

Ist der Vorgang abgeschlossen, auf Disconnect klicken und den ESP32 neu starten, indem man ihn kurz vom USB trennt oder die Taste EN (Reset) drückt.

Schritt 5: Erster Start

Nach dem Neustart öffnet der ESP32 ein eigenes WLAN mit dem Namen „weatherlox“. Wie die Steuerung mit dem eigenen WLAN verbunden und eingerichtet wird, steht im nächsten Kapitel 2. Grundkonfiguration.

Firmware selbst bauen

Soll die Firmware angepasst oder eine neuere ESPEasy-Version verwendet werden, lässt sie sich auch selbst bauen. Mit etwas PC-Erfahrung ist das keine Raketenwissenschaft. Gebaut wird mit Visual Studio Code und der Erweiterung PlatformIO. Die WeatherLox-spezifischen Einstellungen stecken in der Datei Custom.h.

Was benötigt wird

Schritt 1: Quellcode herunterladen

Den ESPEasy-Quellcode über den Link oben herunterladen und das ZIP-Archiv in ein beliebiges Verzeichnis entpacken.

Schritt 2: Visual Studio Code einrichten

Visual Studio Code installieren und starten. Links die Extensions öffnen (das Symbol aus vier Quadraten, von denen eines herausragt). Dort nacheinander nach den folgenden Erweiterungen suchen und sie mit dem blauen Button Install installieren:

  • C/C++ Extension Pack (von Microsoft) – installiert automatisch auch die Erweiterung C/C++
  • PlatformIO IDE (von PlatformIO)

Die Installation dauert eine Weile. Den Fortschritt zeigt ein kleines Fenster unten rechts. Danach Visual Studio Code einmal neu starten.

Schritt 3: Projekt öffnen

Links den Explorer öffnen und auf Open Folder klicken. Gewählt wird das Verzeichnis mit dem entpackten Quellcode, und zwar das, in dem die Unterverzeichnisse src, lib, boards usw. liegen. Den Haken bei „Trust the authors of all files in the parent folder …“ setzen und mit Yes, … bestätigen. PlatformIO richtet das Projekt nun ein. Auch das dauert beim ersten Mal einige Minuten.

Schritt 4: WeatherLox-Einstellungen einfügen

Die Datei Custom.h von GitHub herunterladen (Button „Download raw file“) und im Verzeichnis src des Quellcodes speichern. Der Dateiname muss genau Custom.h lauten.

Die Datei legt fest, welche Plugins und damit welche Sensoren in der Firmware enthalten sind, darunter BME280, SHT3x, VEML7700 und der Blitzsensor AS3935. Außerdem enthält sie die WeatherLox-Voreinstellungen wie Gerätename, WLAN-Passwort für die Ersteinrichtung und die MQTT-Topics.

Schritt 5: Korrektur für das Rules-Update einfügen

In der ESPEasy-Version steckt ein Fehler, durch den das Herunterladen von Dateien vom Server scheitert und damit auch das automatische Update der Rules (ESPEasy-Issue #5663). Bis ESPEasy ihn behebt, wird vor dem Bauen eine kleine Korrektur eingefügt. Sie liegt als Patch im GitHub-Ordner firmware/v0100/build.

Am einfachsten geht das in Visual Studio Code von Hand: die Datei src/src/Helpers/Networking.cpp öffnen, mit Strg+H Suchen und Ersetzen aufrufen und nach WiFiClient *stream = &client; suchen. Es gibt zwei Treffer, beide werden ersetzt durch:

WiFiClient *stream = http.getStreamPtr(); if (stream == nullptr) { stream = &client; }

Mit installiertem Git lässt sich der Patch auch im Terminal von Visual Studio Code im Verzeichnis des Quellcodes einspielen: git apply ESPEasy_download_stream_fix.patch

Schritt 6: Firmware bauen

Links PlatformIO auswählen (das Symbol mit dem kleinen Alien). Unter Project Tasks erscheint eine lange Liste. Jeder Eintrag ist eine Firmware-Variante, die gebaut werden kann. Alle Varianten, die mit custom_ beginnen, nutzen die gerade eingefügte Custom.h. Die Variante custom_ESP32_4M316k aufklappen. Die Liste ist nicht alphabetisch sortiert.

4M steht für 4 MB Flashspeicher, 316k für die Größe des Dateisystems. Beim ersten Aufklappen arbeitet PlatformIO eine Weile und klappt den Eintrag danach wieder zu. Den Eintrag erneut aufklappen und unter General auf Build klicken.

Das Bauen dauert beim ersten Mal recht lange, weil PlatformIO zuerst die nötigen Werkzeuge herunterlädt. Im Terminal unten erscheint am Ende die Meldung SUCCESS.

Schritt 7: Firmware flashen

Die fertige Firmware liegt im Verzeichnis build_output/bin. Für die Erstinstallation wird die Datei mit .factory.bin am Ende gebraucht. Sie enthält Bootloader, Partitionstabelle und Firmware, aber noch keine Konfiguration. Geflasht wird genau wie oben ab Schritt 2 von „Image von GitHub flashen“ beschrieben, ebenfalls ab Adresse 0x0, nur mit der .factory.bin-Datei statt der Full-Datei.

Schritt 8: Konfiguration und Rules einspielen

Die selbst gebaute Firmware startet mit den ESPEasy-Grundeinstellungen. Die WeatherLox-Konfiguration und die Rules, die aus den Messwerten die Wetterdaten berechnen, werden anschließend über die Weboberfläche des ESP32 eingespielt. Dazu zuerst das WLAN einrichten, wie in 2. Grundkonfiguration unter „Schritt 1: WLAN einrichten“ beschrieben, und an der Weboberfläche anmelden.

Aus dem GitHub-Ordner firmware/v0100/build diese Dateien herunterladen:

  • config.dat – die Konfiguration
  • rules1.txt bis rules4.txt – die Rules
  • json.keys – Schlüssel, die die Rules zum Auslesen von Webdiensten brauchen
  • provisioning.dat – die Adresse des WeatherLox-Servers für die automatischen Updates der Rules

Konfiguration einspielen: Im Reiter Tools im Bereich Settings auf Load klicken. Unter „Upload settings file“ die Datei config.dat auswählen und auf Upload klicken. Den ESP32 danach mit Reboot now neu starten. Die WLAN-Zugangsdaten und das Passwort der Weboberfläche bleiben dabei erhalten, sie stehen nicht in der config.dat.

Rules einspielen: Im Reiter Rules oben Rules Set 1 wählen, den Inhalt des Textfelds durch den Inhalt von rules1.txt ersetzen und auf Save klicken. Das für Rules Set 2 bis 4 mit den Dateien rules2.txt bis rules4.txt wiederholen.

json.keys und provisioning.dat einspielen: Im Reiter Tools den File browser öffnen und auf Upload klicken. Die Datei json.keys auswählen und hochladen, danach genauso provisioning.dat. Die Dateinamen müssen unverändert bleiben.

Zum Schluss den ESP32 über Tools → Reboot neu starten. Danach geht es weiter mit 2. Grundkonfiguration ab „Schritt 2: Uhrzeit einstellen“.

Weiter mit 2. Grundkonfiguration →