Skip to content

Instantly share code, notes, and snippets.

@janhajk
Last active February 20, 2018 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save janhajk/0f0e6663d2f5ac300f85933d28c4670c to your computer and use it in GitHub Desktop.
Save janhajk/0f0e6663d2f5ac300f85933d28c4670c to your computer and use it in GitHub Desktop.
// 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