Code:
	/*  
Lazy gardener V1 - Server
Der Server zeigt über die angeschlossenen LEDs an, wie der Status der Beete, 
des Wassertankes und des Netzwerkes ist.
 */
#include <SPI.h>
#include <ESP8266WiFi.h>
/* Im folgenden werden die Ausgänge für die LEDs definiert. 
Die Pinnummern unterscheiden sich von den Bezeichnungen auf dem Board*/
#define led_Tomaten_rot 16       //LED für Tomaten rot
#define led_Tomaten_gruen 5      //LED für Tomaten grün
#define led_Kraeuter_rot 4        //LED für Kraeuter rot
#define led_Kraeuter_gruen 0      //LED für Kraeuter grün
#define led_WIFI_rot 14       //LED für WIFI rot
#define led_WIFI_gruen 2      //LED für WIFI grün
#define led_Blumen_rot 12       //LED für Blumen rot
#define led_Blumen_gruen 13     //LED für Blumen grün
#define led_Wassertank_rot 15       //LED für Wassertank rot
#define led_Wassertank_gruen 3      //LED für Wassertank grün
/************************************************************************/
/* Im folgenden werden Netzwerkdaten definiert. DIese Daten müssen dem 
Netzwerk entsprechend angepasst werden*/
char ssid[] = "Netzwerk";           // Name des Netzwerkes
char pass[] = "Passwort";     // Passwort des Netzwerkes
WiFiServer server(80);  
                 
/****************************************************************************/
/*Alle Anweisungen der Funktion setup() werden nur einmal am Start des Programs 
ausgeführt*/
void setup() {
  Serial.begin(115200);                    // Startet die Serielle Schnittstelle
  WiFi.begin(ssid, pass);                  // Baut eine Verbindung zum W-LAN Router auf.
  
  pinMode(led_Tomaten_rot, OUTPUT);        // LED zeigt an das Wasser knapp ist. LED wird als Ausgang definiert.
  pinMode(led_Tomaten_gruen, OUTPUT);      // LED zeigt an das Wasser vorhanden ist. LED wird als Ausgang definiert.
  pinMode(led_Kraeuter_rot, OUTPUT);       // LED zeigt an das Wasser knapp ist. LED wird als Ausgang definiert.
  pinMode(led_Kraeuter_gruen , OUTPUT);    // LED zeigt an das Wasser vorhanden ist.  LED wird als Ausgang definiert.       
  pinMode(led_WIFI_rot, OUTPUT);           // LED zeigt an das keine Verbindung zum W-LAN besteht. LED wird als Ausgang definiert.
  pinMode(led_WIFI_gruen, OUTPUT);         // LED zeigt an das eine Verbindung zum W-LAN besteht. LED wird als Ausgang definiert.
  pinMode(led_Blumen_rot, OUTPUT);         // LED zeigt an das Wasser knapp ist. LED wird als Ausgang definiert.
  pinMode(led_Blumen_gruen, OUTPUT);       // LED zeigt an das Wasser vorhanden ist. LED wird als Ausgang definiert.
  pinMode(led_Wassertank_rot, OUTPUT);     // LED zeigt an das Wasser knapp ist. LED wird als Ausgang definiert.
  pinMode(led_Wassertank_gruen, OUTPUT);   // LED zeigt an das Wasser vorhanden ist. LED wird als Ausgang definiert.  
//Da die folgeden PINS beim booten HIGH sind, werden selbige hier zur Sicherheit noch einmal auf LOW gesetzt
  digitalWrite(led_Tomaten_rot, LOW);
  digitalWrite(led_WIFI_gruen, LOW);  
  digitalWrite(led_Wassertank_gruen, LOW);  
  
  while (WiFi.status() != WL_CONNECTED)   // Schleife läuft so lange, bis eine Verbindung zum W-LAN aufgebaut ist.
    {
      Serial.print(".");
      digitalWrite(led_WIFI_rot, HIGH);   //Zeigt an das keine Netzwerkverbindung besteht
      delay(500);
      }
 
  server.begin();                         // Startet die Serverfunktion
  Serial.println(" ");
  Serial.println("Connected to wifi");
  Serial.print("IP: ");     Serial.println(WiFi.localIP());         // Zeigt die IP an
  Serial.print("Subnet: "); Serial.println(WiFi.subnetMask());      // Zeigt die Subnet Mask an
  Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP());      // Zeigt die Gateway Adresse an
  Serial.print("SSID: "); Serial.println(WiFi.SSID());              // Zeigt den Netzwerknamen an
  Serial.print("Signal: "); Serial.println(WiFi.RSSI());            // Signalstärke in dBm
}
void loop () {
  //Folgende Abfrage klärt ob noch immer eine Netzwerkverbindung besteht.
  if (WiFi.status() != WL_CONNECTED)
    {
      //Zeigt an das keine Netzwerkverbindung besteht.
      digitalWrite(led_WIFI_rot, HIGH);   
      digitalWrite(led_WIFI_gruen, LOW);
      digitalWrite(led_Tomaten_gruen, LOW);
      digitalWrite(led_Kraeuter_gruen, LOW);
      digitalWrite(led_Blumen_gruen, LOW);
      digitalWrite(led_Wassertank_gruen, LOW);
      digitalWrite(led_Tomaten_rot, LOW);
      digitalWrite(led_Kraeuter_rot, LOW);
      digitalWrite(led_Blumen_rot, LOW);
      digitalWrite(led_Wassertank_rot, LOW); 
      } 
      
   else {
      //Zeigt an das eine Netzwerkverbindung aufgebaut wurde.
      digitalWrite(led_WIFI_rot, LOW);   
      digitalWrite(led_WIFI_gruen, HIGH);
        }
       
  int a = -1;                                // speichert Übergabe des Clients
  WiFiClient client = server.available();
  if (client) {
    if (client.connected()) {
      Serial.println(".");
     while(a == -1) //Schleife läuft so lange bis ein passendes Ergebnis übertragen wird.
           { 
            a = client.read();                      // Liest die Übergabe des Clients
           }
      
      Serial.println("Kontrollwert: ");             // Gibt gelesenen Wert zur Kontrolle aus 
      Serial.print(a);                              // Gibt gelesenen Wert zur Kontrolle aus 
      
      switch(a)                                     // Mehrfachauswahl Anfang
      {
       case 0:                                       //Tomaten hat genug Wasser
       digitalWrite(led_Tomaten_rot, LOW);         
       digitalWrite(led_Tomaten_gruen, HIGH);
       break;
       case 1:                                      //Tomaten müssen bewaessert werden
       digitalWrite(led_Tomaten_rot, HIGH);        
       digitalWrite(led_Tomaten_gruen, LOW);
       break;
       case 2:                                     //Kraeuter hat genug Wasser
       digitalWrite(led_Kraeuter_rot, LOW);       
       digitalWrite(led_Kraeuter_gruen, HIGH);
       break;  
       case 3:                                     //Kraeuter muss bewaessert werden
       digitalWrite(led_Kraeuter_rot, HIGH);        
       digitalWrite(led_Kraeuter_gruen, LOW);
       break;  
        case 4:                                    //Blumen hat genug Wasser
       digitalWrite(led_Blumen_rot, LOW);         
       digitalWrite(led_Blumen_gruen, HIGH);
       break;
       case 5:                                    //Blumen muss bewaessert werden
       digitalWrite(led_Blumen_rot, HIGH);        
       digitalWrite(led_Blumen_rot, LOW);
       break;
        case 6:                                   //Wassertank hat genug Wasser
       digitalWrite(led_Wassertank_rot, LOW);         
       digitalWrite(led_Wassertank_gruen, HIGH);
       break;
       case 7:                                    //Wassertank muss nachgefuellt werden
       digitalWrite(led_Wassertank_rot, HIGH);        
       digitalWrite(led_Wassertank_rot, LOW);
       break;
       }// Mehrfachauswahl Ende
    }
    client.stop();                // Beendet die Verbindung mit dem Client
  }
}
 
						
Lesezeichen