Rothschopf Werner

rowex ganz privat

Angebote

Der 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 also wieder einen Handler im setup() - dieses mal für die Entgegennahme von Daten

server.on("/d.php", handleData); // receives data from another module

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, can be used for error-handling
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; // if ok we store the timestamp as we have received at least one valid value
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 counter, bei ausreichend vielen gefunden Parametern handelt es sich um eine erfolgreiche Meldung.

Als Antwort erhält der Webclient ein knappes OK. Während des testen kann man hier natürlich mehr Ausgaben ergänzen.

Stehen diese Daten nun am webserver zur Verfügung können diese natürlich auch auf einer Webseite dargstellt werden. Dafür benötigt man lediglich eine entsprechende Ausgabe auf einer HTML-Seite. Oder man kann diese Daten natürlich auch an einen weiteren Webserver als Webclient weitersenden. Hier stehen einem alle Möglichkeiten offen.

Zum Abschluss gibt es noch eine Zusammenfassung:

 

Es geht weiter mit der Zusammenfassung


Links

  • Amazon (Suchlink für NodeMCU V2 mit CP2102)
  • Amazon (Alternativ: Wemos D1 pro Mini)

Protokoll

erstellt: 2018-09-02 | Stand: 2018-09-02