📗 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.

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 oder PCA5102A 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.

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 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 Mofifikationskarte ist. Siehe: Speichern der letzten Position im Hörspielmodus.

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 flashbar ist.

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. Hinweise: FW-Version 4.1 wird auf dem PN5180 benötigt und ein weitere GPIO für IRQ ebenfalls.

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.

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

accessPointNetworkSSID: Hier lässt sich der Name des Access-Points festlegen, den der ESPuino öffnet, wenn er keinem WLAN beitreten kann, das er kennt.

nameBluetoothDevice: Hier lässt sich der Name festlegen, unter dem der ESPuino als Bluetooth-Gerät sichtbar ist.

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).

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.

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:)