/* Generuje stronę internetową z temperaturą i wilgotnością */

// Poniższy kod należy umieścić w szkicu 
// odpowiedzialnym za wyświetlanie temperatury i wilgotności:

#include <Ethernet.h>
// Czujnik będzie się komunikował za pośrednictwem magistrali SPI, stąd konieczność dołączenia tej biblioteki:
#include <SPI.h>

// Znaki X należy zastąpić adresem MAC modułu sieciowego:
byte mac[] = { 
  0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX };

// Poniżej należy wpisać adres IP modułu sieciowego. Adres w tej formie w niektórych sieciach może działać:
byte ip[] = { 
  192, 168, 1, 110 };

// Te wiersze kodu należy umieścić na początku funkcji setup():

Ethernet.begin(mac, ip);
server.begin();


// Ten wiersz należy umieścić na początku funkcji loop():

listenForClients();


// Tę funkcję należy umieścić na końcu szkicu:

void listenForClients() {
  // nasłuchuje żądań klientów
  Client client = server.available();
  if (client) {
    Serial.println("Otrzymano żądanie klienta");
    // żądanie HTTP kończy się pustym wierszem
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // jeśli otrzymano koniec wiersza (otrzymano znak
        // końca wiersza) i jeśli nowy wiersz jest pusty, żądanie HTTP zostało zakończone,
        // zatem można wysłać odpowiedź
        if (c == '\n' && currentLineIsBlank) {
          // wysyła standardowy nagłówek odpowiedzi HTTP
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          // wyświetla bieżące odczyty w formacie HTML:
          client.print("Temperatura: ");
          client.print(temperature);
          client.print(" stopni C");
          client.println("<br />");
          client.print("Wilgotność: " );
          client.print(humidity);
          client.print("%");
          client.println("<br />"); 
          break;
        }
        if (c == '\n') {
          // początek nowego wiersza
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // otrzymano znak w bieżącym wierszu
          currentLineIsBlank = false;
        }
      }
    }
    // przeglądarka WWW potrzebuje czasu na odebranie danych
    delay(1);
    // zamyka połączenie:
    client.stop();
  }
}

