📗 Welche Optionen beim Kompilieren gibt es?

Um den ESPuino auf die BedĂŒrfnisse seines Benutzers anzupassen zu können, gibt es ĂŒber die Settings-Dateien zahlreiche Direktiven. Was diese im Einzelnen bedeuten darauf geht dieses Dokument ein.

settings.h

HAL: Grundlegende Einstellungen werden in der settings.h durchgefĂŒhrt. DarĂŒber hinaus gibt es jedoch auch Einstellungen, die Develboard-spezifisch sind. Welches Board man verwenden möchte, legt man mit HAL fest. In AbhĂ€ngigkeit dessen Ă€ndern sich auch die zugrundelegende Develboard-spezifische Datei. Z.B. steht 1 fĂŒr settings-lolin32.h. Hast du ein Develboard, welches in dieser Liste nicht drinsteht, so verwende am besten settings-custom.h und passe dieses deinen BedĂŒrfnissen an. Hinweis: Wenn du Platformio verwendest, musst du HAL nicht setzen. Dies geschieht ĂŒber die Auswahl des passenden „Project Tasks“ (links oben) beim Kompilieren.

PORT_EXPANDER_ENABLE: Ermöglicht die Nutzung des Port-Expanders vom Typ PCA9555. Muss z.B. bei ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD) zwingend aktiviert werden.

I2S_COMM_FMT_LSB_ENABLE: Aktiviert LSB anstelle MSB auf dem I2S-Bus. Dies ist z.B. fĂŒr den DAC PT2811 notwendig. Nicht aktivieren, wenn MAX98357a, AC101, PCA5102A, UDA1334 oder MS6324 verwendet wird!

MDNS_ENABLE: Damit man nicht mit IP-Adressen hantieren muss, kann dieses Feature aktiviert werden. Nach dem Erstmaligen Starten öffnet der ESPuino einen Access-Point, ĂŒber den man via 192.168.4.1, neben der Zugangsdaten, auch den Hostname konfigurieren kann. Setzt man diesen z.B. auf espuino, so kann man im Anschluss den ESPuino ĂŒber die Adresse espuino.local erreichen. Heißt: Dem Hostname wird immer .local angehĂ€ngt. Wer eine FritzBox verwendet, benötigt dieses Feature nicht unbedingt, weil auch so etwas wie espuino.fritz.box von der Fritzbox bereitgestellt wird. Und wenn nicht, kann man es ĂŒber die AdministrationsoberflĂ€che der Fritzbox einstellen. Ist auf jeden Fall sehr empfehlenswert, dieses Feature zu aktivieren.

MQTT_ENABLE: Hier kann MQTT aktiviert werden, um Smarthome-FunktionalitÀten des ESPuino zu nutzen. Wichtig: Wird kein MQTT benutzt, so sollte es deaktiviert bleiben, da es sonst zu lÀstigen Timeouts kommen kann. Deaktiviere es auf jeden Fall, wenn du kein MQTT nutzt. Dies spart Speicher und potentiell auch Timeouts.

FTP_ENABLE: Hier kann der FTP-Dienst aktiviert werden. Da dieser eh nach jedem Neustart ĂŒber eine Tastenkombination aktiviert werden muss und er „kein Heu frisst“, wenn er nicht aktiviert ist, wĂŒrde ich empfehlen, dies zu aktivieren.

NEOPIXEL_ENABLE: Hier kann die Neopixel-Visualisierung aktiviert werden. Ich empfehle es, dies zu nutzen, da hierĂŒber viele Informationen visuell transportiert werden.

NEOPIXEL_REVERSE_ROTATION: Die Animationen auf deinem Neopixel-Ring werden entgegen des Uhrzeigersinns angezeigt? Dann bist du hier richtig: Aktiviere diese Option :slight_smile: .

LANGUAGE: Hier kann die Sprache des Serial-Loggings und der WebGUI eingestellt werden. Aktuell gibt es DE und EN.

STATIC_IP_ENABLE: Ermöglicht eine statische IP-Adresskonfiguration. Wichtig: Vergiss weiter unten nicht local_IP, gateway, subnet und subnet zu konfigurieren. Nur aktivieren, wenn du es unbedingt benötigst.

HEADPHONE_ADJUST_ENABLE: Hast du eine Kopfhörerplatine angeschlossen, so kann der ESPuino dies erkennen. Im eingesteckten Zustand kann eine zweite LautstĂ€rke aktiviert werden, die man ĂŒber die WebGUI konfigurieren kann. So lĂ€sst sich die max. KopfhörerlautstĂ€rke auf einen anderen Wert setzen als die des Lautsprechers.

PLAY_MONO_SPEAKER: Wenn dies aktiv ist, was bei nur einem Lautsprecher Sinn macht, dann erfolgt die Ausgabe in mono. Hinweis: Ist HEADPHONE_ADJUST_ENABLE aktiv, so dass der ESPuino mitkriegt, wenn ein Kopfhörer in die Buchse eingesteckt wurde, so wird der Modus bei eingestecktem Kopfhörer automatisch (und unverÀnderlich) auf stereo umgeschaltet.

SHUTDOWN_IF_SD_BOOT_FAILS: Kommt es beim Starten zu einem Fehler (SD-Karte nicht lesbar), so schaltet der ESPuino nach einer Zeit x ab, wenn diese Option aktiviert ist. Im Batteriebetrieb wĂŒrde ich diese Option absolut empfehlen, da man ansonsten ggf. keine Möglichkeit mehr hat, den ESPuino auszuschalten, wenn alles in ein GehĂ€use eingebaut ist.

MEASURE_BATTERY_VOLTAGE: Ist diese Option aktiviert, so wird zyklisch die Spannung gemessen, geloggt und ĂŒber MQTT versendet (sofern aktiv). Ist Neopixel aktiv, so lĂ€sst sich mit einem Tastendruck auf den Drehencoder auch darauf die Spannung visualisieren und zudem wird eine Warnung angezeigt, wenn die Spannung unter einen Wert x (konfigurierbar via WebGUI) sinkt.

PLAY_LAST_RFID_AFTER_REBOOT: Aktiviert man dies, so wird sich der ESPuino an die RFID-Karte „erinnern“, die beim letzten Mal aufgelegt wurde (ĂŒber Neustart hinweg). D.h. diese Karte wird automatisch wieder gespielt. Hinweis: Kommt es mit einer Karte zu einem Problem, kann es passieren, dass man hiermit in einer Endlosschleife landet, aus der man nur rauskommt, indem man den ESP32 neu flasht. Dabei muss man so vorgehen, dass man den ESPuino ohne aktiviertes PLAY_LAST_RFID_AFTER_REBOOT neu flasht. Anschließend eine Karte auflegen, die keine Probleme bereitet und zum Schluss nochmal flashen mit aktiviertem PLAY_LAST_RFID_AFTER_REBOOT. Es ist allerdings ein Mechanismus implementiert, der eine solche Bootschleife nach drei Ereignissen unterbrechen sollte. Aber man weiß ja nie :woman_shrugging:

USE_LAST_VOLUME_AFTER_REBOOT: Erinnert sich ĂŒber einen Neustart hinweg, welche LautstĂ€rke zuletzt verwendet wurde und stellt diese automatisch wieder ein.

USEROTARY_ENABLE: Ermöglicht die Verwendung eines Drehencoders.

BLUETOOTH_ENABLE: Aktiviert Bluetooth-UnterstĂŒtzung (a2dp-sink). Um den Bluetooth-Modus zu starten wird eine Modifikationskarte benötigt, die via WebGUI angelernt werden kann. Alternativ kann auf eine Taste auch die Aktion TOGGLE_BLUETOOTH_MODE gelegt werden, um den Wechsel per Tastendruck herbeizufĂŒhren.

IR_CONTROL_ENABLE: Ermöglicht die Nutzung einer Infrarot-Fernbedienung. Achte darauf, die zugehörige Konfiguration im Develboard-spezifischen Configfile ebenfalls anzupassen und die Aktionen gemĂ€ĂŸ deiner Fernbedienung anzulernen (Neues Feature: Fernsteuerung per Infrarot-Fernbedienung).

CACHED_PLAYLIST_ENABLE: Beim Auflegen einer Karte wird eine Playlist generiert. Je nachdem, wie viele Titel zu einer solchen Playlist gehören, kann das mehr oder weniger lange dauern. Bei einer Cached-Playlist wird eine einmal generierte Playlist (unter bestimmen Voraussetzungen) auf der SD-Karte abgespeichert, so dass beim nĂ€chsten Mal darauf zugegriffen werden kann. Dies kann zu deutlichen Geschwindigkeitsvorteilen fĂŒhren. Weitere Infos hier: Neues Feature: Cached-Playlist.

PAUSE_WHEN_RFID_REMOVED Ist diese Option aktiviert, so muss die RFID-Karte aufgelegt bleiben. Sobald sie entfernt wird, wird die Wiedergabe pausiert. Weitere Infos hier: Neues Feature: Pausieren, wenn RFID-Karte entfernt wurde.

SAVE_PLAYPOS_BEFORE_SHUTDOWN: Normalerweise wird im Hörspielmodus die letzte Titelposition nicht automatisch beim Ausschalten des ESPuino gespeichert. D.h. es muss vorher Pause gedrĂŒckt werden. Ist diese Option aktiviert, so ist dies nicht notwendig. D.h. wĂ€hrend der Ausschaltphase wird, sofern aktuell gerade etwas im Hörspielmodus abgespielt wird, die Wiedergabe automatisch auf Pause gesetzt, so dass eine Speicherung (regulĂ€r) initiiert wird. Diese Funktionsweise sei hier jedoch nur zur VollstĂ€ndigkeit erwĂ€hnt, da dies so schnell geht, dass man es nicht mitbekommt. Siehe: Speichern der letzten Position im Hörspielmodus.

SAVE_PLAYPOS_WHEN_RFID_CHANGE: Siehe SAVE_PLAYPOS_BEFORE_SHUTDOWN, jedoch in diesem Falle, wenn eine neue RFID-Karte aufgelegt wurde, die keine Modifikationskarte ist. Siehe: Speichern der letzten Position im Hörspielmodus.

HALLEFFECT_SENSOR_ENABLE: UnterstĂŒtzung fĂŒr Hallsensor. Weitere Infos hier.

SD_MMC_1BIT_MODE: Aktiviert SD_MMC. Hinweis: Der SD-Reader muss dies unterstĂŒtzen und passend angeschlossen sein. Ein etwaiger PullUp-Widerstand an GPIO2 (MISO) muss entfernt sein, da der ESP32 sonst nicht mehr drahtgebunden flashbar ist (OTA mĂŒsste dennoch funktionieren).

SINGLE_SPI_ENABLE: LĂ€sst RFID und SD via SPI in der gleichen SPI-Instanz laufen. Spart GPIOs, ist aber nicht gut getestet. Besser nicht verwenden, außer du weißt, was du tust :slight_smile:

RFID_READER_TYPE_MFRC522_SPI: Aktiviert SPI fĂŒr den RFID-Reader RC522.

RFID_READER_TYPE_MFRC522_I2C: Aktiviert I2C fĂŒr den RFID-Reader RC522.

RFID_READER_TYPE_PN5180: Aktiviert den RFID-Reader PN5180. Darf nicht zusammen mit RC522 aktiviert werden!

PN5180_ENABLE_LPCD: Aktiviert das Aufwecken des ESPuino durch den PN5180 mittels Auflegen einer Karte. 📗 Was ist LPCD und wie funktioniert es?.

rfidGain: Hier kann die SensitivitÀt des RC522 (nicht PN5180!) eingestellt werden. Die möglichen Werte sind:

  RxGain_18dB				= 0x00 << 4,	// 000b - 18 dB, minimum
  RxGain_23dB				= 0x01 << 4,	// 001b - 23 dB
  RxGain_18dB_2			= 0x02 << 4,	// 010b - 18 dB, it seems 010b is a duplicate for 000b
  RxGain_23dB_2			= 0x03 << 4,	// 011b - 23 dB, it seems 011b is a duplicate for 001b
  RxGain_33dB				= 0x04 << 4,	// 100b - 33 dB, average, and typical default
  RxGain_38dB				= 0x05 << 4,	// 101b - 38 dB
  RxGain_43dB				= 0x06 << 4,	// 110b - 43 dB
  RxGain_48dB				= 0x07 << 4,	// 111b - 48 dB, maximum
  RxGain_min				= 0x00 << 4,	// 000b - 18 dB, minimum, convenience for RxGain_18dB
  RxGain_avg				= 0x04 << 4,	// 100b - 33 dB, average, convenience for RxGain_33dB
  RxGain_max				= 0x07 << 4		// 111b - 48 dB, maximum, convenience for RxGain_48dB

expanderI2cAddress: I2C-addresse des Port-Expanders.

Button-Layout (allgemein): Bitte das hier lesen: 📗 Das dynamische Button-Layout

serialDebug: Hier lĂ€sst sich einstellen, wie viele Informationen ĂŒber die serielle Konsole angezeigt werden.

buttonDebounceInterval: Sollten Tasten prellen, so kann man hier die Zeit verlÀngern. Im Zweifelsfalle lieber unverÀndert lassen.

intervalToLongPress: Es gibt Aktionen, bei den man Tasten lange drĂŒcken muss. Hier ist definiert, wie lange „lange“ genau/mindestens ist.

CONTROLS_LOCKED_BY_DEFAULT: Wenn aktiviert, dann ist standardmĂ€ĂŸig nach dem Start die Tastensperre aktiv. Sie kann mittels Modifikationskarten oder MQTT aufgehoben werden.

INCLUDE_ROTARY_IN_CONTROLS_LOCK: Wenn aktiviert, dann schließt eine (optional) aktivierte Tastensperre den Drehencoder mit ein.

RFID_SCAN_INTERVAL: Legt fest, wie oft nach neuen RFID-Karten gesucht wird.

accessPointNetworkSSID: Ist fĂŒr deinen ESPuino kein WLAN festgelegt, in das eine Anmeldung erfolgen soll oder das WLAN ist nicht verfĂŒgbar, so startet ESPuino ein eigenes WLAN, mit dem du dich verbinden kannst. Der Name dieses WLANs wird hier festgelegt.

accessPointNetworkPassword: Hier lĂ€sst sich ein Passwort fĂŒr das WLAN festlegen, das mittels accessPointNetworkSSID definiert wurde. An dieser Stelle nochmal der Hinweis: Es geht hierbei NICHT um das WLAN, in das sich ESPuino einbuchen soll, sondern um das WLAN, dass ESPuino selbst aufspannt, sofern keines verfĂŒgbar bzw. konfiguriert ist.

nameBluetoothSinkDevice: Hier lÀsst sich der Name festlegen, unter dem der ESPuino als Bluetooth-GerÀt sichtbar ist, wenn man per Bluetooth darauf streamen möchte (vom Handy zum Beispiel).

nameBluetoothSourceDevice: Will man von ESPuino auf ein externes BT-GerÀt streamen (BT-Kopfhörer zum Beispiel), so legt man hier den Namen fest, zu dem sich ESPuino in diesem Modus verbinden soll.

backupFile: Alle VerknĂŒpfungen zwischen RFID-Karten und Aktionen werden im ESP32 gespeichert, jedoch zusĂ€tzlich auch in einer Datei auf der SD-Karte. Einerseits als Backup, andererseits jedoch auch, um diese woanders importieren zu können. Hier wird Pfad+Dateiname dieser Datei festgelegt.

playlistCacheFile: Wenn das Feature CACHED_PLAYLIST_ENABLE aktiv ist, werden in dieser Datei die Playlists gecacht. Wichtig: Pro Verzeichnis wird eine solche Datei angelegt. Deswegen befindet sich, im Gegensatz zu backupFile auch kein „/“ davor. Es geht hier also nur um den Dateinamen und NICHT um den Pfad.

NUM_LEDS: Anzahl der Neopixel-LEDs.

CHIPSET: Typ des Neopixels. Im Zweifelsfalle hier mal schauen, was unterstĂŒtzt ist.

COLOR_ORDER: Siehe Userkommentare (weiter unten).

`NUM_LEDS_IDLE_DOTS: Anzahl der LEDs, die (rotierend) den Idle-Zustand signalisieren. StandardmĂ€ĂŸig sind das vier, die um 90 Grad versetzt sind.

OFFSET_PAUSE_LEDS: Ist diese Option aktiv, so werde die Pause-LEDs immer zentriert.

PROGRESS_HUE_START: Siehe Ein paar neue Features.

PROGRESS_HUE_END: Siehe Ein paar neue Features.

DIMMABLE_STATES: Dies bestimmt, wie viele ZwischenzustĂ€nde eine LED zwischen „aus“ und „eingestellter Helligkeit“ hat. Letztlich ist es so, dass durch die Anzahl der LEDs die „Auflösung“ etwas eingeschrĂ€nkt ist. Beispielsweise wenn man ein Hörspiel hört, das 48 Minuten lang ist, so wird der Spielfortschritt bei 24 LEDs in zwei Minuten pro LED angezeigt. FĂŒr den Zeitraum dazwischen wird die nĂ€chst folgende LED gedimmt, was gewissermaßen ZwischenzustĂ€nde ermöglicht und somit die Auflösung erhöht. Trage hier eine 1 ein, wenn du keine ZwischenzustĂ€nde angezeigt haben möchtest.

LED_OFFSET: Siehe Ein paar neue Features.

warningLowVoltage: Voreinstellung, ab welcher Akkuspannung eine Warnung auf dem Neopixel angezeigt wird. Hinweis: Kann ĂŒber WebGUI ĂŒberschrieben werden.

voltageCheckInterval: Wie oft die Batteriespannung gemessen wird. Hinweis: Kann ĂŒber WebGUI ĂŒberschrieben werden.

voltageIndicatorLow: Voreinstellung, was die untere Spannungsgrenze auf dem Neopixel ist. Hinweis: Kann ĂŒber WebGUI ĂŒberschrieben werden.

voltageIndicatorHigh: Voreinstellung, was die obere Spannungsgrenze auf dem Neopixel ist. Hinweis: Kann ĂŒber WebGUI ĂŒberschrieben werden.

headphoneLastDetectionDebounce: Sollte der Kopfhörerstecker beim Einstecken prellen, so kann diese Zeit verlÀngert werden, damit dies nicht mehr passiert.

jumpOffset: Über die Kommandos CMD_SEEK_FORWARDS und CMD_SEEK_BACKWARDS kann man eine definierte Zeitspanne in einem Titel vor- oder zurĂŒckspringen. Wie lange diese Zeitspanne ist, wird mittels jumpOffset in Sekunden definiert.

mqttRetryInterval: Wie oft versucht wird, den MQTT-Server zu erreichen.

mqttMaxRetriesPerInterval: Wie oft pro Intervall versucht wird, den MQTT-Server zu erreichen.

Diverse MQTT-Einstellungen: Hier lassen sich die MQTT-Topics definieren.

settings-%boardspezifisch%.h

WAKEUP_BUTTON: Definiert einen GPIO, der zum Aufwecken des ESP32 verwendet wird. Nutzt man einen Port-Expander, so sollte hier der gleiche Wert stehen wie auch bei PE_INTERRUPT_PIN.
POWER: Definiert den GPIO/PE-Pin, der eine Mosfet-Schaltung ansteuert. Im Betrieb wird ein HIGH ausgegeben, im Deepsleep undefiniert.
INVERT_POWER: Invertiert die Ansteuerung der Mosfet-Schaltung. D.h. im Betrieb wird ein LOW ausgegeben, im Deepsleep undefiniert.
PE_INTERRUPT_PIN: Definiert einen GPIO, der Interrupts des Port-Expander empfÀngt. Wird nur bei Verwendung eines Port-Expanders benötigt und trÀgt dann in der Regel den gleichen Wert wie WAKEUP_BUTTON. REVERSE_ROTARY`: Kehrt die Drehrichtung des Drehencoders um.

Damit wird die Farbreihenfolge im Datenstrom bestimmt .
Dieser Parameter muß evtl .geĂ€ndert werden wenn man andere LEDÂŽs , wie ich z.Bsp. die APA106 nimmt , sonst stimmen die Farben nicht . Macht man das nicht ist zum Beispiel GrĂŒn dann Rot und umgekehrt .

1 „GefĂ€llt mir“

Das braucht man fĂŒr die Addressierung der einzelnen Lichtpunkte, also der Farben in jedem Pixel. Die sind in Reihe geschaltet und können je nach Hersteller und Modell variieren.
Wenn es also zu komischen Farben kommt kann man hier die Reihenfolge wechseln.

Edit: Da war compactflash schneller (Schnell wie der Blitz? :sweat_smile:)