Metainformationen zur Seite
ESP Wifi Relais
Datum: 02.07.2019 Quellen: https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/ https://www.instructables.com/id/Control-Stuff-From-the-Internet-Create-a-WIFI-Swit/ https://draeger-it.blog/wemos-d1-mini-projekt-relais-per-webseite-schalten/ https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/html-buttons https://www.mikrocontroller.net/topic/416329#5109679
#include <ESP8266WiFi.h> const char* ssid = ""; const char* password = ""; const char* HOSTNAME = ""; //Webserver auf Port 80 WiFiServer server(80); // Eine Variable um den HTTP Request zu speichern String header; // Die verwendeted GPIO Pins const int relayPin = D1; // The Shield uses pin D1 for the relay // Bei mini pro No 5 const int aufPin = D3; // Reed Tor auf // Bei mini pro No 0 const int zuPin = D4; // Reed Tor zu // Bei mini pro No 2 void setup() { Serial.begin(115200); // Die definierten Pins und setzen pinMode(relayPin, OUTPUT); digitalWrite(relayPin, LOW); pinMode(aufPin, INPUT); // definiere Pin als Eingang digitalWrite(aufPin, HIGH); // aktiviert den Pull- Up- Widerstand pinMode(zuPin, INPUT); // definiere Pin als Eingang digitalWrite(zuPin, HIGH); // aktiviert den Pull- Up- Widerstand // Per WLAN mit dem Netzwerk verbinden Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); //Wichtig Accesspoint deaktivieren WiFi.hostname(HOSTNAME); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Die IP vom Webserver auf dem seriellen Monitor ausgeben Serial.println(""); Serial.println("WLAN verbunden."); Serial.println("IP Adresse: "); Serial.println(WiFi.localIP()); server.begin(); } void loop(){ WiFiClient client = server.available(); // Hört auf Anfragen von Clients if (client) { // Falls sich ein neuer Client verbindet, Serial.println("Neuer Client."); // Ausgabe auf den seriellen Monitor String currentLine = ""; // erstelle einen String mit den eingehenden Daten vom Client while (client.connected()) { // wiederholen so lange der Client verbunden ist if (client.available()) { // Falls ein Byte zum lesen da ist, char c = client.read(); // lese das Byte, und dann Serial.write(c); // gebe es auf dem seriellen Monitor aus header += c; if (c == '\n') { // wenn das Byte eine Neue-Zeile Char ist // wenn die aktuelle Zeile leer ist, kamen 2 in folge. // dies ist das Ende der HTTP-Anfrage vom Client, also senden wir eine Antwort: if (currentLine.length() == 0) { // HTTP-Header fangen immer mit einem Response-Code an (z.B. HTTP/1.1 200 OK) // gefolgt vom Content-Type damit der Client weiss was folgt, gefolgt von einer Leerzeile: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); //Taster if (header.indexOf("GET /d1/push") >= 0) { Serial.println("Taster gedrückt"); digitalWrite(relayPin, HIGH); delay(2000) digitalWrite(relayPin, LOW); //HTML Seite angezeigen: client.println("<!DOCTYPE html><html>"); client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"); client.println("<link rel=\"icon\" href=\"data:,\">"); // Es folgen der CSS-Code um die Ein/Aus Buttons zu gestalten // Hier können Sie die Hintergrundfarge (background-color) und Schriftgröße (font-size) anpassen client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}"); client.println(".button { background-color: #333344; border: none; color: white; padding: 16px 40px;"); client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}"); client.println(".buttonAuf {background-color: #00FF00;}"); client.println(".buttonZu {background-color: #FF0000;}") client.println(".buttonNone {background-color: #0000FF;}</style></head>") // Webseiten-Überschrift client.println("<body><h1>Garagetor Web-Server</h1>"); //Button erstellen und link zum aufrufen erstellen client.println("<p><a href=\"/d1/push\"><button class=\"button\">PUSH</button></a></p>"); //Zustand anzeigen if ((digitalRead(aufPin) == HIGH) && (digitalRead(zuPin) == LOW)) client.println("<p><button class=\"buttonAuf\">AUF</button></p>"); if ((digitalRead(aufPin) == LOW) && (digitalRead(zuPin) == HIGH)) client.println("<p><button class=\"buttonZu\">ZU</button></p>"); if ((digitalRead(aufPin) == HIGH) && (digitalRead(zuPin) == HIGH)) client.println("<p><button class=\"buttonNone\">None</button></p>"); if ((digitalRead(aufPin) == LOW) && (digitalRead(zuPin) == LOW)) client.println("<p><button class=\"buttonNone\">None</button></p>"); //HTML Ende client.println("</body></html>"); // Die HTTP-Antwort wird mit einer Leerzeile beendet client.println(); // und wir verlassen mit einem break die Schleife break; } else { // falls eine neue Zeile kommt, lösche die aktuelle Zeile currentLine = ""; } } else if (c != '\r') { // wenn etwas kommt was kein Zeilenumbruch ist, currentLine += c; // füge es am Ende von currentLine an } } } // Die Header-Variable für den nächsten Durchlauf löschen header = ""; // Die Verbindung schließen client.stop(); Serial.println("Client getrennt."); Serial.println(""); } }