// nodeMCU Amica V2 Modul mit ESP8266 12E
// Board: NodeMCU 1.0 (ESP12E Module) - WiFiWebServer-3

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

#define ssid "mrge-ap-bu46" // anpassen
#define password ""         // anpassen, "" bedeutet kein Password  
const byte led1  =  D0;	    // Onboard-LED auf ESP8266

ESP8266WebServer server(80);

void handleRoot() {
  digitalWrite(led, not digitalRead(led));
  String info="<h1>Hallo vom ESP8266</h1>";
  server.send(200, "text/html; charset=UTF-8", info);
} 

void ledan() {
  digitalWrite(led, LOW);
  String info="<h3>Onboard LED ist AN</h3>";
  server.send(200, "text/html; charset=UTF-8", info);
}

void ledaus() {
  digitalWrite(led, HIGH);
  String info="<h3>Onboard LED ist AUS</h3>";
  server.send(200, "text/html; charset=UTF-8", info);
}

void ledblinken() {
  int a = server.arg("a").toInt();
  int b = server.arg("b").toInt();
  String info="<h3>Onboard LED blinkt " + server.arg("a") + " Mal mit einer Wartezeit von je ";
  info +=  + server.arg("b") + " ms</h3>" + server.arg("b") + "</h3>";
  server.send(200, "text/html; charset=UTF-8", info);
  for(int i=0;i<2*a;i++) { digitalWrite(led, not digitalRead(led)); delay(b);};
}

void handleNotFound() {
String info = "<h4>ESP8266-Webserver kann darauf keine Antwort geben!</h4>";
  server.send(404, "text/html", info);
}

void setup() {
  Serial.begin(115200); Serial.println("\nStart: WiFiWebServer-3");
  WiFi.mode(WIFI_STA);
  pinMode(led,OUTPUT);    // Onboard-LED aktivieren
  WiFi.begin(ssid, password);
  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("."); delay(100);
  }
  Serial.print("\nConnected!");
  
  server.on("/", handleRoot);
  server.on("/on", ledan);
  server.on("/off", ledaus);
  server.on("/blink", ledblinken);
  server.onNotFound(handleNotFound);
  
  server.begin(); Serial.println(" - HTTP server started");
  Serial.println("http://" + WiFi.localIP().toString() + "/blink?a=10&b=200"); 
}

void loop() {
  server.handleClient();
}

