/********* Rui Santos Complete project details at http://randomnerdtutorials.com *********/ // Load Wi-Fi library #include #include "SSD1306.h" // alias for `#include "SSD1306Wire.h" // jfs Wemos lolin32 // jfs Heltec WiFi kit 32 (weisses Board) // #define HELTEC #define DEBUG // Initialize the OLED display using Wire library #ifdef HELTEC SSD1306 display(0x3c, 4, 15); #else SSD1306 display(0x3c, 5, 4); #endif //// WIFI const int mxSize=4; String ssids[mxSize] ={"GAST","pipanet","FRITZ!Box Gastzugang","WLAN-DE8245"}; String ssidp[mxSize] = {"passatvr6","passatvr6","praxis123","4955065570896956"}; boolean conok =false; void netfound(int i){ display.clear(); display.setColor(BLACK); display.fillRect(0, 0, 128, 10); display.setColor(WHITE); display.drawString(0,0,String(i)); display.drawString(20,0,"networks found"); display.display(); } bool myWiFiFirstConnect = true; boolean init_wifi(){ int stat = WL_IDLE_STATUS; boolean ok = false; WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); int n = WiFi.scanNetworks(); Serial.println("scan done"); if (n == 0) { Serial.println("no networks found"); netfound(0); } else { Serial.print(n); Serial.println(" networks found"); netfound(n); for (int i = 0; i < n; ++i) { for (int p=0;p 10){ esp_sleep_enable_timer_wakeup(5000000); esp_deep_sleep_start(); } } display.drawString(0, 20, "\nWiFi connected, IP address: "); display.drawString(0, 30, WiFi.localIP().toString()); server.begin(); // server starten display.display(); // Initialize the output variables as outputs pinMode(output26, OUTPUT); pinMode(output25, OUTPUT); // Set outputs to LOW digitalWrite(output26, LOW); digitalWrite(output25, LOW); // check server running // SVP server 1 pinMode(input36, INPUT); // SVN server 2 pinMode(input39, INPUT); } void loop(){ WiFiClient client = server.available(); // Listen for incoming clients if (client) { // If a new client connects, currentTime = millis(); previousTime = currentTime; Serial.println("New Client."); // print a message out in the serial port String currentLine = ""; // make a String to hold incoming data from the client while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected currentTime = millis(); if (client.available()) { // if there's bytes to read from the client, char c = client.read(); // read a byte, then Serial.write(c); // print it out the serial monitor header += c; if (c == '\n') { // if the byte is a newline character // if the current line is blank, you got two newline characters in a row. // that's the end of the client HTTP request, so send a response: if (currentLine.length() == 0) { // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) // and a content-type so the client knows what's coming, then a blank line: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); // turns the GPIOs on and off if (header.indexOf("GET /pw1/on") >= 0) { Serial.println("PW1on"); digitalWrite(output25, HIGH); delay(200); digitalWrite(output25,LOW); } else if (header.indexOf("GET /pw1/off") >= 0) { Serial.println("PW1 off"); digitalWrite(output25, HIGH); delay(5000); digitalWrite(output25,LOW); } else if (header.indexOf("GET /pw2/on") >= 0) { Serial.println("PW2 on"); digitalWrite(output26, HIGH); delay(200); digitalWrite(output26,LOW); } else if (header.indexOf("GET /pw2/off") >= 0) { Serial.println("PW2 off"); digitalWrite(output26, HIGH); delay(5000); digitalWrite(output26,LOW); } else if (header.indexOf("GET /auto1/on") >= 0) { Serial.println("Auto1 on"); auto1 = true; } else if (header.indexOf("GET /auto1/off") >= 0) { Serial.println("Auto1 off"); auto1 = false; } else if (header.indexOf("GET /auto2/on") >= 0) { Serial.println("Auto2 on"); auto2 = true; } else if (header.indexOf("GET /auto2/off") >= 0) { Serial.println("Auto2 off"); auto2 = false; } // Display the HTML web page client.println(""); client.println(""); client.println(""); // CSS to style the on/off buttons // Feel free to change the background-color and font-size attributes to fit your preferences client.println(""); // Web Page Heading client.println("

ESP32 Web Server

"); client.println("

"); client.println("

"); if (digitalRead(input36)== HIGH){ client.println("

Server 1 ist online

"); } else { client.println("

Server 1 ist offline

"); } if (auto1== true) { client.println("

"); } else { client.println("

"); } client.println("

"); client.println("

"); if (digitalRead(input39)== HIGH){ client.println("

Server 2 ist online

"); } else { client.println("

Server 2 ist offline

"); } if (auto2== true) { client.println("

"); } else { client.println("

"); } client.println("

"); client.println(""); // The HTTP response ends with another blank line client.println(); // Break out of the while loop break; } else { // if you got a newline, then clear currentLine currentLine = ""; } } else if (c != '\r') { // if you got anything else but a carriage return character, currentLine += c; // add it to the end of the currentLine } } } // Clear the header variable header = ""; // Close the connection client.stop(); Serial.println("Client disconnected."); Serial.println(""); } if ((auto1 == true) && (digitalRead(input36)== LOW)){ if (auto1start== true){ digitalWrite(output25, HIGH); delay(200); digitalWrite(output25,LOW); auto1start = false; auto1timer = millis(); } else { now1is = millis(); if ( now1is - auto1timer > now1max){ auto1start = true; } } } if ((auto2 == true) && (digitalRead(input39)== LOW)){ if (auto2start== true){ digitalWrite(output26, HIGH); delay(200); digitalWrite(output26,LOW); auto2start = false; auto2timer = millis(); } else { now2is = millis(); if ( now2is - auto2timer > now2max){ auto2start = true; } } } }