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

Links

  • Download des finalen Sketch ESP8266 Webserver WebClient
  • NodeMCU V2 auf Aliexpress *
  • Amazon (Suchlink für NodeMCU V2 mit CP2102 *)
  • Amazon (Alternativ: Wemos D1 pro Mini *)

Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Affiliate/Provision-Links. Wenn du auf so einen Verweis klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine (kleine) Provision. Für dich verändert sich der Preis dadurch nicht. Ich empfehle nur Produkte die ich selber besitze und wenn ich überzeugt bin, dass sie für andere Maker interesssant sind.

 

Links

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