Last active
February 20, 2018 09:03
-
-
Save janhajk/0f0e6663d2f5ac300f85933d28c4670c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Dieses Programm macht aus Deinem ESP8266 einen Webserver | |
// mit dem Du Dich via W-Lan über Dein Heimnetz verbinden kannst. | |
// Wenn Du dann mit dem Browser auf die Seite der zugewiesenen IP in Deinem Netz gehst | |
// spuckt sie einen Text aus und die LED blinkt | |
#include <ESP8266WiFi.h> // Brauchst Du, sobald du die W-Lan Funktionen benutzen willst | |
#include <WiFiClient.h> // Damit wird Deine ESP8266 zu einem Client von Deinem Heimnetz | |
#include <ESP8266WebServer.h> // Damit Du selber ein Webserver erstellen kannst | |
#include <ESP8266mDNS.h> // damit kannst Du deine ESP8266 einen Namen im Netz geben | |
// Das hier musst Du anpassen, damit sich dein ESP8266 in Deinem Heimnetz anmelden kann | |
const char* ssid = "........"; | |
const char* password = "........"; | |
// Hier wird der Webserver gestartet auf Port 80 (Standardport für Webseiten) | |
ESP8266WebServer server(80); | |
// GPIO Deiner LED; die LED auf der Platine ist mit einem PIN verbunden | |
const int led = LED_BUILTIN; | |
// das ist die Seite die kommt wenn Du die IP in deinem Browser aufrufst, als "/" | |
void handleRoot() { | |
digitalWrite(led, 1); // LED an | |
server.send(200, "text/gplain", "Hallo von Deinem ESP8266!"); | |
digitalWrite(led, 0); // LED wieder aus | |
} | |
// Fehler Funktion für alle Seiten, die es nicht gibt | |
void handleNotFound() { | |
digitalWrite(led, 1); | |
String message = "File Not Found\n\n"; | |
message += "URI: "; | |
message += server.uri(); | |
message += "\nMethod: "; | |
message += (server.method() == HTTP_GET) ? "GET" : "POST"; | |
message += "\nArguments: "; | |
message += server.args(); | |
message += "\n"; | |
for (uint8_t i = 0; i < server.args(); i++) { | |
message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; | |
} | |
server.send(404, "text/plain", message); | |
digitalWrite(led, 0); | |
} | |
void setup(void) { | |
// Jeden PIN kannst Du auf INPUT oder OUTPUT setzen. | |
// Für alle Aktoren musst Du den PIN auf OUTPUT setzen | |
// für alle Sensoren auf INPUT, also Lesen | |
pinMode(led, OUTPUT); | |
digitalWrite(led, 0); // mit digitalWrite wird der Wert digital auf 0 also Off gestellt | |
// alternative ist analogOut, dann kannst Du z.B. von 0-1000 einstellen | |
// und erhälst so eine graduellere Einstellung | |
Serial.begin(115200); // damit kann man dem Debuger sagen, dass er starten soll; 115200 baud ist die Taktung | |
// des Serial Ports (ja das ist wie beim alten Modem) | |
WiFi.begin(ssid, password); // mit Deinem Heimnetzwerk verbinden | |
Serial.println(""); // neue Zeile Debuggen | |
// Das Programm soll erst starten, wenn Deine ESP8266 mit dem Netzwerk verbunden ist. | |
// Er versucht also so lange mit der Verbindung und fährt erst dann mit dem Programm fort | |
while (WiFi.status() != WL_CONNECTED) { | |
delay(500); // eine halbe Sekunde warten... | |
Serial.print("."); // ............ | |
} | |
Serial.println(""); | |
Serial.print("Connected to "); | |
Serial.println(ssid); | |
Serial.print("IP address: "); | |
Serial.println(WiFi.localIP()); | |
// In Deinem Netzwerk registrieren mit dem Namen ESP8266 | |
if (MDNS.begin("ESP8266")) { | |
Serial.println("MDNS responder started"); | |
} | |
// das ganze REST zeugs. Das ist die Root-URL, also / | |
// Wenn Dein ESP8266 also von Deinem Netz die IP 192.168.1.10 bekommt | |
// ist das deine Root-URL, also 192.168.1.10/ oder direkt über ESP8266/ | |
server.on("/", handleRoot); | |
// Und ein weitere Pfad auf Deinem Server, z.B. ESP8266/hallo | |
server.on("/hallo", []() { | |
server.send(200, "text/plain", "Halloooooooooooooo!!!"); | |
}); | |
// und weitere Pfade nach belieben... | |
// Wenn eben ein ungültiger Pfad eingegeben wurde | |
server.onNotFound(handleNotFound); | |
// wenn der Server Konfiguriert wurde, dann Server anschmeissen | |
server.begin(); | |
Serial.println("HTTP server started"); | |
} | |
// loop wird quasi in jedem Takt des Prozessors ausgeführt | |
// da müssen wir ihm sagen, dass der Webserver am leben erhalten werden soll | |
void loop(void) { | |
server.handleClient(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment