Vorwort
Alles Nachfolgende kann als obsolet betrachtet werden!
Du bist hier, weil du in der seriellen Konsole eine Warnung erhalten hast?
Gut! 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?
- 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.
- 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.
- Lies dir đź“— Die Backupfunktion des ESPuino durch und befolge die Anweisungen.
- Gehe in die WebGUI in den Tab
Allgemein
und schaue nach, ob hier Dinge wieder anzupassen sind. Optional, sofern aktiviert, können auch Anpassungen inMQTT
und/oderFTP
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.