Selbst bauen · Schritt 4

Firmware flashen

Einmal je Board per USB. Danach kommen Updates über die Oberfläche, für den Hub per Netzwerk, für Module über den Hub per CAN.

Auf dieser Seite

Unter Windows

Im Projektordner liegt flash.bat.

  1. flash.bat doppelklicken.
  2. Board anstecken. Beim Hub die Buchse mit der Aufschrift „UART“ oder „COM“ nehmen. Das DevKitC-1 von Espressif hat dort Micro-USB, viele Nachbauten USB-C.
  3. Im Menü wählen: Hub, Modul (ESP32-C3 SuperMini, das einzige Modul-Board), Anzeige (am Bus) oder Anzeige (WLAN).
  4. Das Skript baut die Firmware, spielt sie auf und zeigt auf Wunsch die Logs.

Es geht auch direkt:

flash.bat hub
flash.bat supermini
flash.bat display
flash.bat waveshare
flash.bat wlan
flash.bat hub COM5
flash.bat monitor
flash.bat ports

Das Skript braucht PlatformIO unter Windows, weil Docker nicht an die USB-Ports kommt. Fehlt es, bietet das Skript die Installation an. Die Übermittlung von Nutzungsdaten an PlatformIO ist abgeschaltet.

Unter Linux und macOS

pio run -d firmware -e hub_esp32s3 -t upload
pio run -d firmware -e module_supermini -t upload
Umgebung Board
hub_esp32s3 Hub
module_supermini Modul auf ESP32-C3 SuperMini
display_esp32s3 Anzeige (am Bus), eigene Platine
display_waveshare Anzeige (am Bus), Waveshare-Board
network_display_waveshare Anzeige (WLAN), Waveshare-Board

Der erste Build lädt die Werkzeuge für den ESP32 herunter, einige hundert Megabyte.

Der SuperMini zeigt keinen Port

Beim SuperMini hängt der USB-Anschluss direkt am Chip. Erscheint kein Port oder bricht das Hochladen ab:

  1. BOOT gedrückt halten.
  2. USB einstecken. Steckt das Kabel schon, kurz RESET drücken.
  3. BOOT loslassen.
  4. Flashen.
  5. Danach einmal RESET drücken.

Was das Modul beim Start sagt

Beim Start gibt das Modul Board, Pinbelegung und das Ergebnis der Erkennung auf der Konsole aus, mit 115200 Baud: welche Chips es gefunden hat, an welcher Adresse, und ob sein Typ gesetzt, vorgeschlagen oder offen ist. So lässt sich die Verdrahtung gegenprüfen, bevor etwas angeschlossen wird.

Module laufen seit Version 0.10.0 nur noch auf dem ESP32-C3 SuperMini. Das ESP32-C3-DevKitM-1 ist entfallen, flash.bat devkitm1 gibt es nicht mehr. Ein Modul, das noch das DevKitM-1 als Board gespeichert hat, schreibt beim Start den SuperMini in seinen Speicher.

Den Typ eines Moduls setzen

Normalerweise braucht es dafür kein Werkzeug. Das Modul erkennt seine Sensoren und schlägt einen Typ vor, gesetzt wird er bei der Übernahme in der Oberfläche. Der Hub schickt ihn an das Modul. Wie das abläuft, steht unter Module.

Wer ein Modul ohne Hub vorbereiten will, kann den Typ als Werkseinstellung schreiben. Typ und Board stehen im Speicher des Moduls und werden mit einer kleinen Partition aus einer CSV-Datei geschrieben, der Typ zweimal mit demselben Wert (mod.type und mod.tset). Wie das geht, steht im Repository in firmware/README.md unter „Boards der Module“.

Nummer Typ Kennung
03 Leistung DC power_dc
04 Relais 4-fach relay4
05 Antrieb drive
08 Einspeisung supply
09 Universal universal
0A Wind wind
0B Relais 8-fach relay8
0D Temperatur/Feuchte temp_humidity
0E CO₂ co2
0F Lichtsensor light_sensor
10 BME280 bme280
11 Bodenfeuchte soil_moisture
12 Temperatur temperature
13 Bodentemperatur soil_temp
14 Wassertemperatur water_temp
15 Füllstand level
16 Regensensor rain_sensor
17 Durchfluss flow

Die Sammelmodule (alt) behalten ihre Nummern: 01 Klima, 02 Boden, 06 Wasser, 07 Außen.

Von 0.2 auf 0.3.0

Mit Version 0.3.0 ändern sich Topics und Kennungen der Modultypen. Deshalb gilt beim Update eine Reihenfolge: zuerst den Hub aktualisieren, danach die Module über ihn. Die Nummer des Typs im Speicher bleibt, ein bespieltes Modul behält seinen Typ.

Von 0.3.0 auf 0.4.0

Der Hub bekommt eine neue Partitionstabelle mit 2 MB Puffer für Updates. Bestehende Hubs einmal per USB flashen (flash.bat hub), gespeicherte Daten bleiben erhalten. Die Anzeige hat ein eigenes Abbild (display.bin); flash.bat kennt sie, auch das Waveshare-Board zum Entwickeln. Beim Hub die BOOT-Taste beim Einstecken gedrückt halten, nach dem Flashen RESET.

Hub von 0.3.x oder 0.4.0 auf 0.5.0

Seit Version 0.5.0 spricht der Hub nur noch verschlüsselt mit dem Server. Ältere Hubs erreichen den Server nach dessen Update nicht mehr, also auch kein Update über die Oberfläche. Einmal per USB flashen (flash.bat hub); WLAN, Zugangsdaten und Übernahme bleiben erhalten. Danach öffnet der Hub sein Einrichtungs-WLAN und bittet um den vollständigen Einrichtungscode mit Server-Schlüssel (Geräte, „Neues Gerät einrichten“). Code eintragen, speichern: Der Hub verbindet sich wieder, ohne neue Übernahme.

Anzeige (WLAN) von 0.7.x auf 0.8.0

Einmal per USB flashen (flash.bat wlan). Übernahme und Einstellungen bleiben, solange das Board nicht gelöscht wird.

Auf 0.9.0: Motordaten der Antriebe

Vorher alle Klappen schließen. Nach dem Update stehen die Antriebe mit „Einrichtung ausstehend“, bis ihre Motordaten eingetragen sind; so lange schließen sie auch bei Regen, Wind oder Frost nicht. Die Kalibrierung bleibt. Mehr unter Antriebe.

Auf 0.10.0: Sensormodule

Reihenfolge: erst der Server, dann der Hub, dann die Module, dann die Anzeigen. Ein älterer Hub kennt die neuen Modultypen nicht. Deshalb spielt der Server Modul-Firmware 0.10.0 nur über einen Hub mit 0.10.0 ein. Vorhandene Module behalten Typ, Kanäle und Verlauf; Klima, Boden, Wasser und Außen heißen danach „(alt)“. Ein Klima- oder Außenmodul startet nach seinem Update einmal ohne gesetzten Typ, der Hub setzt ihn aus seiner Konfiguration wieder, und das Modul startet noch einmal neu.

Das Einrichtungs-WLAN des Hubs ist seit 0.10.0 offen, ein Passwort-Aufkleber gilt nicht mehr. flash.bat zeigt nach dem Flashen nur noch den WLAN-Namen.

Die Firmware selbst bauen und testen

Auf dem Rechner braucht es dafür nur Docker. PlatformIO, Compiler und die Werkzeuge für den ESP32 laufen im Container.

pnpm firmware:test     # Tests am Rechner, etwa 12 Minuten
pnpm firmware:build    # Firmware für Hub und Module

    Durchsucht alle Seiten. Die Suche läuft im Browser, nichts wird übertragen.