Reduzierung der #defines, stattdessen Einstellungen in Web-UI

Wir haben jetzt sehr viele Compiler-Parameter (#defines), die zur Kompilierzeit gesetzt werden müssen und später nur durch einen erneuten Upload geändert werden können. Das ist ziemlich umständlich, schwer für Einsteiger und verhindert den Weg zu einem einheitlichen Build.

Ich habe dazu mal einen Entwurf gemacht, einige #defines zur Laufzeit im Webinterface einstellbar zu machen. So könnte es aussehen:

Wenn gewünscht ist eine andere Gruppierung in der Weboberfläche die geringste Arbeit.

Diese Einstellungen habe ich bereits umgesetzt:

	PLAY_MONO_SPEAKER
	USE_LAST_VOLUME_AFTER_REBOOT
	PAUSE_ON_MIN_VOLUME
	VOLUMECURVE
	SAVE_PLAYPOS_BEFORE_SHUTDOWN
	SAVE_PLAYPOS_WHEN_RFID_CHANGE
	PLAY_LAST_RFID_AFTER_REBOOT	

Diese Einstellungen fehlen noch:

	PAUSE_WHEN_RFID_REMOVED
	DONT_ACCEPT_SAME_RFID_TWICE
	HEADPHONE_ADJUST_ENABLE

Eigentlich ist es ganz einfach: Einstellungen werden im NVS gespeichert und über den bestehenden REST-API Endpunkt /settings mit dem Webinterface konfigurierbar gemacht. Die #defines werden dann im Code durch die NVS Einstellung ersetzt. Man könnte die übrigen #defines nach und nach portieren (alle Einstellungen auf einmal - daran bin ich gescheitert).

Eine NVS Backup/Restore Funktion für die Einstellungen wäre auch schnell & schlank umgesetzt, wir haben das schon für die RFID Zuweisungen gemacht.

Ziel für mich wäre auch die Änderungen minimal zu halten um neue Bugs zu vermeiden. Hier könnt Ihr reinschnuppern: Make some player settings customizable at runtime · biologist79/ESPuino@a3a4273 · GitHub

In einem weiteren Schritt könnte man auch die Hardware-Einstellungen über die Weboberfläche machen, evt. schon in Accesspoint.html den RFID-Leser, Anzahl Neopixel usw festlegen.

Wenn das durch ist haben wir einen einheitlichen Build!

Was haltet ihr generell von diesem Weg? Habt Ihr Vorschläge?

14 „Gefällt mir“

Sehr cool @tueddy!
Kriegen wir da vielleicht noch hinten ein (?)-Feld dran, in dem man kurz beschreiben kann, um was es geht?

Super, für mich sind vorallem REVERSE_ROTARY und NUM_INDICATOR_LEDS relevant, wollte ich beides sowieso umbauen, aber dann warte ich damit bis du soweit fertig bist.

EDIT:
Aktuell hast du die default Optionen fest im Code drin, die würde ich noch in defines umbauen mit #ifndefs drummherum (Analog wie es bei der natural sort option ist):

Naja das geht schon, habe es mal testweise für eine Einstellung umgesetzt:

grafik

Aber ist das hilfreich? Meine Meinung: Die meisten Optionen sind mehr oder weniger selbsterklärend und der Tooltip wird da nur wenig weiterhelfen.

@biologist Hast Du spezielle Einstellungen im Kopf oder sollen alle ein Hilfe-Tooltip erhalten? Oder meinst Du einen einzigen Hilfeschalter neben der „Optionen“ Überschrift die dann auf eine Hilfeseite verlinkt?

1 „Gefällt mir“

Das ist halt scheinbar nur selbsterklärend, weil du da quasi drinsteckst :slight_smile:. Es muss etwas ausführlicher beschrieben werden, dann macht das aus meiner Sicht absolut Sinn.

Ja das wäre auch ok - dann kann man es ausführlich beschrieben. Da würde ich dann aber eine Wiki-Seite draus machen, so dass das auch andere Leute anpassen können. Das nmüsste dann aber auch dt + en sein. fr tue ich mir persönlich nicht an, das war für mich in der Schule damals schon immer ein Graus :rofl:

Edit: Ich habe mal eine Wiki-Seite angelegt. Da kann man Sektionen machen und die kann man direkt verlinken. So kann man das Webinterface dann zusammenhängend beschreiben.

4 „Gefällt mir“

Das ist der Weg! :slight_smile: um dieses fantastische Projekt zugänglicher zu gestalten! Freut mich sehr!

Würde aber auch Empfehlen die einzelnen Optionen detaillierter zu beschreiben.

Vielleicht so: Create inline help tips for your site with a bit of CSS - Tutorialzine

Oder wie weiter oben bereits vorgestellt!

Ich denke ein einziger Hilfe-Button mit Verlinkung auf die Dokumentation ist ein guter Weg. Oder einen Hilfe-Button pro Kategorie.

Weil da kann man die Einstellung ausfürhlicher beschreiben & evt. auf Detail-Beiträge weiter verlinken. In einen Tooltip passt immer nur eine kürzere Beschreibung rein, siehe Bild oben. Ich werde es noch ein wenig ausarbeiten & dann hier vorstellen

5 „Gefällt mir“