📗 Wechsel zum Refactoring-Branch: Was ist zu beachten?

Vorwort

Zum Zeitpunkt, wenn ich diese Zeilen schreibe, ist die bisherige Implementierung in GitHub als master hinterlegt und dessen Nachfolger (unterteilt in Modulen) als refactoring. Irgendwann in den nächsten Wochen, wird refactoring nach master verschoben und master nach old. Für old wird es dann nur noch (kleinere) Bugfixes geben, sofern dies notwendig sein sollte. Die neue modulare Aufteilung wird damit der neue Standard werden.
Update: Der Branchwechsel wurde inzwischen vorgenommen.

Du bist hier, weil du in der seriellen Konsole eine Warnung erhalten hast?

Gut! :slight_smile: Lies diese Seite bitte aufmerksam durch. Die Warnung wird nach fünf Neustarts wieder verschwinden. Allerdings auch dann, wenn du nichts unternimmst (und dich nachträglich vielleicht ärgerst).

Für wen ist diese Seite wichtig?

Insbesondere für alle, die bereits eine ältere ESPuino-Version verwenden und nun ein Update durchgeführt haben. Von „alt“ rede ich, wenn du zuvor eine Version benutzt hast, in deren Unterverzeichnis src nur eine große main.cpp zu finden war; nicht jedoch Dateien wie Port.cpp, Mqtt.cpp` usw…

Gab es eine kritische Änderung?

Ja! Und es ist wichtig, diese zu verstehen, da sie Benutzerinteraktion erfordert!
Alle permanenten Einstellungen, die über die WebGUI gemacht werden (Wlan-Zugangsdaten, Hostname, maximale Lautstärke…) werden im sog. NVS (non volatile storage) des ESP32 gespeichert. NVS ist ein Teil des Flash-Speichers und kann in seiner Größe mehr oder weniger frei definiert werden. Wie groß er ist hängt vom Partitionsschema des Flash-Speichers ab, welches in platformio.ini über den Parameter board_build.partitions definiert wird. Hier wurde die bisher immer huge_app.csv verwendet. Hier sind 20 kByte für NVS definiert. Es hat sich jedoch gezeigt, dass dieser Speicher voll ist, wenn die RFID-Kartenzuweisungen etwa Richtung 100 tendieren. Daher wird für 4 MB Flash (ESP32-WROVER, ESP32-A1S und manche ESP32-WROVER) nun ein Custom-Layout custom_4mb_noota.csv bereitgestellt. Für 16 MB Flash (nur ESP32-WROVER) steht custom_16mb_ota.csv zu Verfügung.
Das Problem ist nun, dass beim Ändern des Partitions-Layouts das gesamte NVS überschrieben wird. Das klingt erstmal dramatisch, ist aber gar nicht so wild. Welche Schritte sind also notwendig, um den alten Stand wieder zu erreichen?

  1. Nach dem Flashen wird euer ESPuino erstmal viele komische Meldungen auf der Konsole anzeigen. Lasst euch von diesen nicht schocken, diese werden beim nächsten Start nicht mehr da sein.
  2. Der ESPuino macht nun wieder einen Access-Point auf, da er die WLAN-Zugangsdaten nicht mehr kennt. Verbindet euch mit diesem und tragt WLAN-Zugangsdaten + Hostname ein. Anschließend Neustart.
  3. Lies dir 📗 Die Backupfunktion des ESPuino durch und befolge die Anweisungen.
  4. Gehe in die WebGUI in den Tab Allgemein und schaue nach, ob hier Dinge wieder anzupassen sind. Optional, sofern aktiviert, können auch Anpassungen in MQTT und/oder FTP notwendig sein.

Das war’s. Anschließend sollte dein ESPuino wieder ganz der Alte sein. Insbesondere das Einspielen des Backups ist sehr wichtig, da der ESPuino sonst keine einzelne Karte mehr kennt und ein neues Anlernen sehr nervig ist.

Was hat sich geändert?

Bisher lebte der ganze Code in main.cpp. Was für die erste Zeit ok war, ist zwischenzeitlich mit über 5000 Zeilen ziemlich unübersichtlich geworden. @tuniii hat sich freundlicherweise dieser Sache angenommen und den Code in einzelne Module unterteilt:

  • Audioplayer: Hier lebt alles, was Musik/Hörbücher abspielt
  • Battery: Messung und Reporting der Akkuspannung
  • Bluetooth: BT-Behandlung
  • Button: Auslesen der Buttons
  • Cmd: Hier sind alle Aktionen, die der ESPuino unterstützt, implementiert
  • Ftp: FTP-Server-Behandlung
  • IrReceiver: Behandlung des Infrarot-Stacks
  • Led: Alles, was LED-Anzeige (Neopixel) betrifft
  • Log: Helper-Funktionen für das Logging
  • MemX: Wrapper-Speicher-Funktionen, um PSRAM/Heap transparent zu kapseln
  • Mqtt: Alles zum Thema MQTT
  • Port: Integration des Port-Expanders PCA9555
  • Queues: Verwendete Queues
  • RfidCommon: Allgemeine RFID-Behandlung
  • RfidMfrc522: Spezifische RFID-Behandlung für RC522
  • RfidPn5180: Spezifische RFID-Behandlung für PN5180
  • RotaryEncoder: Behandlung des Drehencoders
  • SdCard: SD-Integration
  • System: Allgemeine Systemsachen (insbesondere Deepsleep)
  • Web: Serverintegration der GUI-Komponente
  • Wlan: Alles, was mit WLAN zu tun hat

… hier werden im Laufe der Zeit ggf. noch weitere hinzukommen

Was hat sich nicht geändert?

  • Der Aufbau ist zwar nun modular, aber dennoch weiterhin prozedural und damit nicht objektorientiert.
  • Die Configfiles befinden sich weiterhin in src und tragen die gleichen Namen. Sich haben sich strukturell auch nicht geändert.

Ansonsten gab es noch eine ganze Reihe von neuen Features und Bugfixes. Der Wechsel lohnt sich auf jeden Fall :slight_smile:

Der Umzug des bisherigen Refactoring-Branches in den neuen Master wurde HEUTE vollzogen. Gleiches gilt für den bisherigen Master: Dieser ist nun der neue Branch old und wird nicht mehr weiterentwickelt.

1 „Gefällt mir“