74 lines
2.0 KiB
Arduino
74 lines
2.0 KiB
Arduino
#include <ESP8266WiFi.h>
|
|
#include <ESP8266WebServer.h>
|
|
#include <ESP8266mDNS.h>
|
|
|
|
// --- Zugangsdaten ---
|
|
const char* ssid = "Wayne Manor";
|
|
const char* password = "einfach10zeichen!";
|
|
const char* hostname = "licht";
|
|
|
|
// --- Hardware ---
|
|
const int relayPin = 2; // Pin, an dem das Relais hängt
|
|
bool relayState = false;
|
|
|
|
ESP8266WebServer server(80);
|
|
|
|
// HTML Webseite
|
|
String getHTML() {
|
|
String html = "<!DOCTYPE html><html><head><meta charset='UTF-8'>";
|
|
html += "<title>Licht Steuerung</title>";
|
|
html += "<style>body { font-family: sans-serif; text-align: center; padding-top: 50px; }";
|
|
html += ".button { padding: 20px 40px; font-size: 24px; cursor: pointer; border: none; border-radius: 5px; color: white; }";
|
|
html += ".on { background-color: #4CAF50; } .off { background-color: #4CAF50; }</style></head>";
|
|
html += "<body><h1>Licht Steuerung</h1>";
|
|
|
|
if (relayState) {
|
|
html += "<a href='/toggle'><button class='button off'>schalten</button></a>";
|
|
} else {
|
|
html += "<a href='/toggle'><button class='button on'>schalten</button></a>";
|
|
}
|
|
|
|
html += "</body></html>";
|
|
return html;
|
|
}
|
|
|
|
void handleRoot() {
|
|
server.send(200, "text/html", getHTML());
|
|
}
|
|
|
|
void handleToggle() {
|
|
relayState = !relayState;
|
|
digitalWrite(relayPin, relayState ? LOW : HIGH); // Relais sind oft Low-Level-Triggered
|
|
server.sendHeader("Location", "/");
|
|
server.send(303);
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
pinMode(relayPin, OUTPUT);
|
|
digitalWrite(relayPin, HIGH); // Standardmäßig aus (bei High-Trigger umkehren)
|
|
|
|
WiFi.begin(ssid, password);
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
delay(500);
|
|
Serial.print(".");
|
|
}
|
|
|
|
// mDNS (Hostname) starten
|
|
if (MDNS.begin(hostname)) {
|
|
Serial.println("mDNS Responder gestartet");
|
|
}
|
|
|
|
server.on("/", handleRoot);
|
|
server.on("/toggle", handleToggle);
|
|
|
|
server.begin();
|
|
Serial.print("Verbunden! IP-Adresse: ");
|
|
Serial.println(WiFi.localIP());
|
|
Serial.printf("Hostname: http://%s.local\n", hostname);
|
|
}
|
|
|
|
void loop() {
|
|
MDNS.update();
|
|
server.handleClient();
|
|
} |