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.
flash.batdoppelklicken.- 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.
- Im Menü wählen: Hub, Modul (ESP32-C3 SuperMini, das einzige Modul-Board), Anzeige (am Bus) oder Anzeige (WLAN).
- 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:
- BOOT gedrückt halten.
- USB einstecken. Steckt das Kabel schon, kurz RESET drücken.
- BOOT loslassen.
- Flashen.
- 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