Hallo Heinz,
nun bin ich an einer Stelle wo es (mommentan) nicht mehr weitergeht. Ich habe nun die Webseite(n) als char-Konstanten angelegt und arbeite mit der processor-Funktion zum ersetzen. Das klappt alles recht ordentlich.
Beim Speichern der Optionen-Form lese ich die request-Params aus und speichere diese in Variablen und einer JSON-Datei (Wertepaar). Läuft sauber und per serial.print() erhalte ich auch alle Werte der Optionsfelder wie folgt (Auszug!):
// Optionen-Seite soll bei POST Variablenfelder speichern
server.on("/", HTTP_POST, [](AsyncWebServerRequest *request){
int params = request->params();
// Anzahl Parameter durchlaufen und auslesen
for (int i=0; i<params; i++){
AsyncWebParameter* p = request->getParam(i);
if(p->isPost()){
// HTTP-Post stationname-Wert
if(p->name() == PARAM_INPUT_10){
stationname = p->value().c_str();
Wenn ich nun die Optionen-Seite aufrufe, sollen per prozessor()-Funktion die Optionen wieder gesetzt werden. Das klappt auch optimal bei Textfeldern, nur beiCheckboxen und Select-Auswahlfeldern klappt das so gar nicht. Hier auch mal einen Auszug aus dem Aufruf und der Funktion:
// Optionen-Seite im Browser öffnen
server.on("/options", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", optionen_html, processor);
});
.....
String processor(const String& var){
if(var == "STATION_NAME"){
return stationname;
}
if(var == "C1V"){
return ch1alertvalue;
Bei Textfeldern kann ich problemlos den Wert über die value=""-Option und dem Platzhalter %STATION_NAME% setzen, so wie im folgenden Codeauszug:
<div class="StationName">
<label class="StationNameLabel">Gerätename</label>
<input id="stationname" type="text" name="stationname" maxlength="20" value="%STATION_NAME%">
Bei Input-Feldern mit type=checkbox und auch bei select-Feldern mit option-Auswahlen kann ich keine Ersetzungen vornehmen bzw. Einträge über die prozessor-()-Funktion vorbelegen. Für das Input-Feld als checkbox bekomme ich beim Speichern den Text-Wert "on" wenn es gechecked ist. Bei den Select-Feldern bekomme ich beim Speichern die Klartext-Werte des gewählten ioption-Eintrags (im Beispiel "Temperatur"). Hier auch ein kurzes Snippet mit einem input als checkbox und einem select mit 3 Optionseinträgen:
<div class="SwitchChannel1">
<label>Kanal #1</label>
<input class="CH1-OnOff" id="ch1onoff" type="checkbox" name="ch1onoff" value="%C1C%">
<select id="selectsensor1" name="selectsensor1" selected="%C1S%">
<option>Temperatur</option>
<option>Luftfeuchte</option>
<option>Luftqualität</option>
</select>
</div>
Wie schaffe ich es nun beim HTTP_GET der Optionen-Seite (siehe oben) mit der processor()-Funktion die Checkboxen (Werte: on oder off) und die Select-Boxen (Werte: Temperatur, ...) zu setzen bzw. zu belegen?
Ich bin für jeden Tipp dankbar.
Sonnige Grüße und Merci,
Manfred