Webserver - Empfangen von sonstigen Daten
So wie wir Daten von einem Browser empfangen und Aktionen durchführen können, können wir auch übermittelte Daten speichern und weiterverarbeiten.
Zur Vervollständigung unseres webservers am ESP8266 werden wir nun noch die Daten die uns ein anderer Client sendet entgegennehmen.
Das Muster entspricht der Entgegenname von Kommandos - nur geht es in diesem Fall um Daten.
Wir ergänzen daher wieder einen Handler im setup() - dieses mal für die Entgegennahme von Daten
server.on("/d.php", handleData);
Der Handler im Tab "server" liest dann nur die Paramter aus und befüllt entsprechende Variablen:
void handleData() { // receives data from a remote board // and saves data to local variables // it uses similar method like the command processing: // we receive parameters and store them in variables Serial.println(F("D323 handleData()")); uint8_t counter = 0; // will count valid values for (uint8_t i = 0; i < server.args(); i++) { Serial.print(server.argName(i)); Serial.print(F(": ")); Serial.println(server.arg(i)); if (server.argName(i) == "board") { remoteBoardId = server.arg(0).toInt(); counter++; } else if (server.argName(i) == "vcc") { remoteVcc = server.arg(i).toInt(); counter++; } else if (server.argName(i) == "output1") { remoteOutput1 = server.arg(i).toInt(); counter++; } else if (server.argName(i) == "button1") { remoteButton1 = server.arg(i).toInt(); counter++; } } //example for errorhandling if (counter >= 1) { remoteLastMessage = millis() / 1000; // store the timestamp remoteMessagesSucessfull++; // increase successfull submits } server.send(200, "text/plain", "OK"); }
Da ich die Reihenfolge der Parameter nicht vorherbestimmen möchte, lese ich die ganze Parameter durch und übernehme jene - die ich benötige. Jeder gefundene Parameter erhöht einen Zähler (counter). Bei ausreichend vielen gefunden Parametern handelt es sich um eine erfolgreiche Meldung.
Als Antwort erhält der Webclient ein kurzes OK. Während des Testens kann man hier auch mehr Ausgaben ergänzen.
Stehen diese Daten nun am Webserver zur Verfügung können diese auf einer Webseite dargstellt werden. Dafür benötigt man lediglich eine entsprechende Ausgabe auf einer HTML-Seite. Man kann diese Daten auch an einen weiteren Webserver als Webclient weitersenden. Hier stehen einem alle Möglichkeiten offen.
Zum Abschluss gibt es noch eine Zusammenfassung