#include <ESP8266WiFi.h>
const char* ssid = "*******"; //SSID aus dem Router
const char* password = "**********"; //Passwort für den Zugang zum WLAN
const String htmlOK = "HTTP/1.1 200 OK";
const String htmlContentType = "Content-Type: text/html";
const String htmlBegin = "<!DOCTYPE HTML><html>";
const String htmlLinks = "<head><link rel='stylesheet' href='http://reni-land.ch/arduino.css'/></head><body>";
const String htmlEnd = "</body></html>";
const String htmlBreakLine = "</br>";
int ledPin = D5; //digitaler PIN 5 des Wemos D1 an welchem die LED angeschlossen ist.
int ledPin1 = D6; //digitaler PIN 6 des Wemos D1 an welchem die LED angeschlossen ist.
int ledStatus = LOW; //aktueller Status der LED (default / start -> AUS)
int ledStatus1 = LOW; //aktueller Status der LED (default / start -> AUS)
WiFiServer server(80); //Port auf welchem der Server laufen soll.
void setup() {
pinMode(ledPin, OUTPUT); //Den LEDPin als ausgang setzen.
pinMode(ledPin1, OUTPUT); //Den LEDPin als ausgang setzen.
digitalWrite(ledPin, ledStatus); //Die LED initial auf den Status "AUS" setzen.
digitalWrite(ledPin1, ledStatus1); //Die LED initial auf den Status "AUS" setzen.
WiFi.begin(ssid, password); //Initialisieren der Wifi Verbindung.
while (WiFi.status() != WL_CONNECTED) { //Warten bis die Verbindung aufgebaut wurde.
delay(500);
}
server.begin(); // Starten des Servers.
}
/**
* Die Funktion gibt den HTML Kopf auf dem Client aus.
* Dieses wird für jeden Respond verwendet.
**/
void printHtmlHeader(WiFiClient client){
client.println(htmlOK);
client.println(htmlContentType);
client.println("");
client.println(htmlBegin);
client.println(htmlLinks);
}
void loop() {
//Prüfen ob sich ein Client verbunden hat, wenn nicht die Loop "verlassen"
WiFiClient client = server.available();
if (!client) {
return;
}
// Wenn sich ein Client verbunden hat solange warten bis Daten gesendet werden.
while(!client.available()){
delay(1);
}
//Lesen der Anfrage vom Client
String request = client.readStringUntil('\r');
client.flush();
//Wenn in der Anfrage die Zeichenkette "/ledpinA" vorkommt dann...
if (request.indexOf("/ledpinA") != -1) {
if(ledStatus == HIGH){
ledStatus = LOW;
} else {
ledStatus = HIGH;
}
digitalWrite(ledPin, ledStatus);
}
if (request.indexOf("/ledpinB") != -1) {
if(ledStatus1 == HIGH){
ledStatus1 = LOW;
} else {
ledStatus1 = HIGH;
}
digitalWrite(ledPin1, ledStatus1);
}
//Gibt den Html Header auf der Antwort aus.
printHtmlHeader(client);
//Ab hier wird die Webseite zusammengesetzt.
client.println("<div class='mainWrapper'>");
String value = "-undefined-";
String valueA = "-undefined-";
//Die Adresse für die Bilder
const String imgStartUrl = "http://reni-land.ch/";
String imgUrl = imgStartUrl + "light_on.png";
const String imgStartUrlA = "http://reni-land.ch/";
String imgUrlA = imgStartUrlA + "light_on.png";
//HTML Code
if(ledStatus == HIGH) {
value = "AN";
} else {
value = "AUS";
imgUrl = imgStartUrl + "light_off.png";
}
if(ledStatus1 == HIGH) {
valueA = "AN";
} else {
valueA = "AUS";
imgUrlA = imgStartUrlA + "light_off.png";
}
client.print("<table width='100%' border='1'>");
client.print("<tr>");
client.print("<td>LED I</td>");
client.print("<td>LED II</td>");
client.print("<td>LED III</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td align='center'><img src='"+imgUrl+"' widht='64' height='64'/></td>");
client.print("<td align='center'><img src='"+imgUrlA+"' widht='64' height='64'/></td>");
client.print("<td align='center'><img src='"+imgUrl+"' widht='64' height='64'/></td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td>Status: ");
client.print(value);
client.print("</td>");
client.print("<td>Status: ");
client.print(valueA);
client.print("</td>");
client.print("<td> </td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td><div class='headline'><a href=\"/ledpinA\">Start</a></div></td>" );
client.print("<td><div class='headline'><a href=\"/ledpinB\">Start</a></div></td>");
client.print("<td> </td>");
client.print("</tr>");
//SSID und IP Adresse Anzeige
client.print("<tr>");
client.print("<td colspan='3' bgcolor='ccff33'>");
client.print("reni-land.ch: ");
client.print(ssid);
client.print(" IP: ");
client.print(WiFi.localIP());
client.print(" <br> ");
client.print(WiFi.macAddress());
client.print("</td>");
client.print("</tr>");
client.print("</table>");
//client.println(htmlBreakLine);
client.println(htmlBreakLine);
client.println(htmlEnd);
delay(1); //1ms. Pause
} |