Hallo piggituX,
vielen Dank für die schnelle Reaktion.
... Verdammt... das ist die verkehrte Version. Die mit dem eingebundnen Taster habe ich vermutlich überschrieben!
Aber der Sinn sollte doch noch aus dem Script zu erkennen sein?
Code:
// Einstellung Arduino Software
//siehe "NodeMCU-Boardeinstellung.jpg"
//zusätzliche BoarVerwalter-URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json
// Boot- Bereich - Variablen deklarieren
#include <ESP8266WiFi.h>
// Parameter Festlegungen Zgänge für Netzwerk
WiFiServer server(80); // Webserver auf Port 80
String header; // Eine Variable um den HTTP Request zu speichern
const char* ssid = "xxxxxxx"; //SSID eintragen
const char* password = "xxxxxxx"; //Passwort eintragen
String OutputState = "AUS"; // Status "EIN"/"AUS" des Relais (Anzeige für WebSite)
// IOs deklarieren
#define AusZeit 60000; // 60 s (60000ms) Zeit für Timer
long AutoAus; // Automatische AusZeit
bool Taster = 0; // Variable für (Taster)
bool Relais = 0; // Variable für (Relais)
//████████████████████████████ SETUP ████████████████████████████
void setup() {
pinMode(5, INPUT_PULLUP); // PIN5 (Taster) mit PullUp
//pinMode(LED_BUILTIN, OUTPUT); // internet Board-LED
//digitalWrite(LED_BUILTIN, LOW);
pinMode(12, OUTPUT); // PIN12 (Relais)
digitalWrite(12, LOW); // PIN12 auf AUS
// Initialisierung und Einwahl ins Netzwerk
WiFi.setAutoConnect(false);
WiFi.mode(WIFI_STA); // AP-Mode (IP:4.1) im ESP abzuschalten
Serial.begin(9600);
Serial.println("Starten");
delay(10);
IPAddress ip(xxx, xxx, xxx, xxx); // IP-Adresse eintragen
IPAddress dns(xxx, xxx, xxx, xxx); //DNS-Server eintragen
IPAddress gateway(xxx, xxx, xxx, xxx); //Gateway eintragen
IPAddress subnet(255, 255, 255, 0); //SubNetMask eintragen
WiFi.config(ip, dns, gateway, subnet);
WiFi.begin(ssid, password);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WLAN verbunden.");
Serial.println("IP Adresse: ");
Serial.println(WiFi.localIP());
server.begin();
}
//████████████████████████████ LOOP ████████████████████████████
void loop() {
// Webseiten-Zeugs
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()) { // Fall 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)
// Hier wird die HTML Seite angezeigt:
{
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE html><html>");
// client.println("<meta http-equiv=\"refresh\" content=\"10; URL=http://xxx.xxx.xxx.xxx\">");
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 Hintergrundfarge (background-color) und Schriftgröße (font-size) anpassen
client.println("<style>html { font-family: Verdana; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #888899; border: 3; color: black; padding: 50px 50px;");
client.println("text-decoration: none; font-size: 35px; margin: 4px; cursor: pointer;}");
client.println(".button2 {background-color: #00FF00;}</style></head>");
// Webseiten-Überschrift
client.println("<body><u><h2>SiSi Server-Schalter</h2></u>");
// WebSite aktueller Relais Status, und AN/AUS Button
client.println("<p><h1>Momentaner Status " + OutputState + "</p></h1>"); // ◄◄◄◄
if (OutputState == "AUS") {
client.println("<p><a href=\"/5/on\"><button class=\"button\">EIN</button></a></p>");
} else {
client.println("<p><a href=\"/5/off\"><button class=\"button button2\">AUS</button></a></p>");
}
client.println("</body></html>");
client.println();
break; // und wir verlassen mit einem break die Schleife
} 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
}
}
}
// Relais ein- oder ausgeschaltet usw.
LokalTaster:
/* pinMode(1, INPUT); >> Setzt den Digital-Pin 1 als Eingang
pinMode(1, INPUT_PULLUP); >> setzt Pin1 als Eingang und aktiviert Pullup
digitalWrite(LED, HIGH; >> LED nach +UB leuchtet nicht >> LED nach GND leuchtet
digitalWrite(LED, LOW); >> LED nach +UB leuchtet >> LED nach GND leuchtet nicht */
// Variablen initialisieren/ verarbeiten
if (digitalRead(5) == LOW) { Taster == 1; } else { Taster == 0; }; //Var Taster (PIN5)
if (Relais == 1) { digitalWrite(12, HIGH); } else { digitalWrite(12, LOW); }; //Var Relais (PIN12)
//Relais automatisch abschalten, wenn Zeit "AutoAus" abgelaufen ist
if (Taster == 1 || Relais == 1)
{
OutputState = "EIN";
Serial.println("Relais EIN 133");
Relais == 1;
}
if (millis() > (AutoAus)) // Wenn AusZeit abgelaufen ist,
{
OutputState = "AUS";
Relais == 1;
}
if (Relais == 0)
{
AutoAus = millis() + AusZeit;
OutputState = "AUS";
Serial.println("Relais AUS 147");
}
if (header.indexOf("GET /5/on") >= 0)
{
Serial.println("Relais AN 152");
OutputState = "EIN";
Relais == 1;
}
else if (header.indexOf("GET /5/off") >= 0)
{
Serial.println("Relais AUS 158");
OutputState = "AUS";
Relais == 0;
}
// Debugger
/* Serial.print("millis() ");
Serial.println(millis());
Serial.print("AutoAus ");
Serial.println(AutoAus);
Serial.print("OutputState ");
Serial.println(OutputState);
Serial.print("Var.Taster ");
Serial.println(Taster);
Serial.print("Var.Relais ");
Serial.println(Relais);
*/
// Die Header-Variable für den nächsten Durchlauf löschen
header = "";
// Die Verbindung schließen
client.stop();
Serial.println("Client getrennt.");
Serial.println("");
}
}
Lesezeichen