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