void loop() { DateTime aktuell = rtc.now(); float Temperatur; float Luftfeuchtigkeit; String Nummer; // auf Clienten warten ... EthernetClient Client = Server.available(); // neue Anfrage if (Client) { // solange der Client verbunden ist ... while (Client.connected()) { if (Client.available()) { char Zeichen = Client.read(); // \n = Seite vom Clienten vollständig geladen if (Zeichen == '\n') { // HTTP-Anforderung senden Client.println(F("HTTP/1.1 200 OK")); Client.println(F("Content-Type: text/html")); // Leerzeile zwingend erforderlich Client.println(); /* HTML-Seite aufbauen die folgenden Anweisungen müssen mit print oder println gesendet werden println "verschönert" den Quelltext (jede Anweisung in einer eigenen Zeile) " innerhalb einer HTML-Anweisung muss mit \" maskiert werden */ Client.println(F("")); Client.println(F("")); Client.println(F("")); // alle 60 Sekunden aktualisieren mit meta-Tag Client.println(F("")); Client.println(F("

Temperatur und Luftfeuchtigkeit messen

")); Client.println(F("
")); Client.print(F("

Letzte Messung: ")); /* Wochentag anzeigen 0 = Sonntag 1 = Montag ... 6 = Samstag */ switch (aktuell.dayOfTheWeek()) { case 0: Client.print(F("Sonntag")); break; case 1: Client.print(F("Montag")); break; case 2: Client.print(F("Dienstag")); break; case 3: Client.print(F("Mittwoch")); break; case 4: Client.print(F("Donnerstag")); break; case 5: Client.print(F("Freitag")); break; case 6: Client.print(F("Samstag")); break; } Client.print(", "); // Datum und Zeit schreiben char Datum[] = "DD.MM.YYYY "; char Zeit[] = "hh:mm:ss Uhr"; Client.print(aktuell.toString(Datum)); Client.print(F(" ")); Client.print(aktuell.toString(Zeit)); Client.print(F("


")); // Button formatieren Client.print(F("")); Client.println(F("")); Client.println(F("
")); gespeichertesDatum[Zaehler] = aktuell.toString(Zeit); dht22.read2(&Temperatur, &Luftfeuchtigkeit, NULL); // in Strings umwandeln, . durch , ersetzen String AnzeigeTemperatur = String(Temperatur); AnzeigeTemperatur.replace(".", ","); // Temperatur speichern gespeicherteTemperatur[Zaehler] = AnzeigeTemperatur; // Luftfeuchtigkeit lesen String AnzeigeLuftfeuchtigkeit = String(Luftfeuchtigkeit); AnzeigeLuftfeuchtigkeit.replace(".", ","); Client.print(F("Temperatur:
")); Client.println(AnzeigeTemperatur + " °C
"); Client.println(F("
")); Client.println(F("
")); Client.println(F("Gespeicherte Werte:
")); for (int i = 0; i <= Zaehler; i ++) { Client.println("" + String(i + 1) + ": " + gespeichertesDatum[i] + " ▶ " + gespeicherteTemperatur[i] + " °C"); Client.println(F("
")); } Client.println(F("
")); Client.print(F("
Luftfeuchtigkeit:
")); Client.println(AnzeigeLuftfeuchtigkeit + " %

"); Client.println(F("
")); Client.print(F("Eigene IP: ")); Client.print(Client.remoteIP()); Client.print(F("")); Client.print(F("
IP des Ethernet-Shields: ")); Client.print(Ethernet.localIP()); Client.print(F("")); Client.println(F("")); Client.print(F("")); // Zeit, um die Antwort zu übertragen delay(1); // Verbindung beenden Client.stop(); // Zaehler erhöhen und bei > AnzahlDaten zurücksetzen if (Zaehler < AnzahlDaten) Zaehler ++; if (Zaehler >= AnzahlDaten) Zaehler = 0; Serial.println(Zaehler); Serial.println(AnzahlDaten); } } } } }