Een ESP32 microcontroller die is ingesteld als Webserver (internetadres: 192.168.1.xx), sturen we via de browser op een smartphone of PC een relais dat een lamp op 230 V aan- en uitschakelt.
link naar de webpagina met uitleg: ESP32 Relay Module – Control AC Appliances (Web Server) | Random Nerd Tutorials
Via de browser op adres : http://192.168.1.184 kun je de 2 relais via WiFi aan en uitschakelen
/*
ESP32_TTGO relais_sturen_via_webserver.ino L. Torfs 2 aug 2022
Stuur 2 relais via digitale uitgangen
De webserver genereert een webpagina naar de browser op url: 192.168.1.184
Via hyperlinks kan men de relais draadloos over Wifi aan- of uitzetten
*/
# include <wifi> // library voor draadloos station
// 2 relais als output op GPIOpin
define relais1 15
define relais2 13
// toegang tot de Wifi Router met ssid naam en wachtwoord
const char* ssid = “TP-LINK_2.4GHz_XXXXXX”;
const char* password = “XXXXXXXXX”;
// vast lokaal IP adres voor de webserver op de ESP32 TTGO microcontroller
IPAddress local_IP(192, 168, 1, 184); // indien local Static IP address, needs to be set up a same fixed IP adress onto the wifi – router gateway
IPAddress gateway(192, 168, 1, 1); // IP address gateway
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8,8,8,8); // optional
IPAddress secondaryDNS(8,8,4,4); // optional
WiFiServer server(80); // set web server port number to 80
void setup(void) {
Serial.begin(115200); // open seriele communicatie naar Arduino IDE
// relais initieren
pinMode(relais1, OUTPUT);
pinMode(relais2, OUTPUT);
// ———————
init_wifi_connect(); // verbind de ESP32 TTGO module met de Wifi
// ———————
delay(3000); // wacht 3 seconden om de wifi verbinding te kunnen maken
}
void init_wifi_connect() {
// Wifi draadloze communidatie initieren
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println(“STATION MODE failed to configure”);
}
// connecteer met Wifi Gateway (internet router)
Serial.print(“Connected to “);
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
// Print local IP adress and start webserver
Serial.println(“”);
Serial.println(“Wifi connected”);
Serial.print(“IP adresss:”);
Serial.println(WiFi.localIP());
Serial.print(“MAC address:”);
Serial.println(WiFi.macAddress());
Serial.println(“——-“);
server.begin();
}
void luister_client(){
WiFiClient client = server.available(); // listen for incomming clients
if(client) {
Serial.println(“New Client”);
String currentLine = ""; // string hold incomming data from the client
while(client.connected()) {
if (client.available()) { // if there 's bytes to read from the client
char c = client.read(); // read a byte then
Serial.write(c); // print received character on serial monitor
if (c=='\n') { // if received character is a new line
if (currentLine.length() == 0) {
// ---------------------- stuur webpage naar de client
client.println("HTTp/1,1 200 OK");
client.println("Content-type:text/html");
//client.println("Connection:close");
client.println();
// HTML webpagina
client.println("<!DOCTYPE html><html>");
client.println("<body><h1>ESP32 Webserver</h1>");
client.println("Relais1: <a href='/BON'> AAN </a> / <a href='/BOFF'>UIT</a><br>");
client.println("Relais2 : <a href='/NON'> AAN </a> / <a href='/NOFF'>UIT</a><br>");
client.println("</body><html>");
client.println(); // HTTP response ends with another blank line
//-----------------------
break; // break out of the wile loop
}else{ // if you got a new line, then clear currentLine
//Serial.print("currentLine->"); Serial.println(currentLine);
currentLine = "";
}
}else if (c != '\r') { // if received character not carriage return
currentLine += c; // add recieved character to end of currentLine
}
// kijk of client request was "GET /xON" or "GET /xOFF"
// stuur dan relais aan of uit
if (currentLine.endsWith("GET /BON")) { digitalWrite(relais1, HIGH);}
if (currentLine.endsWith("GET /BOFF")) { digitalWrite(relais1, LOW);}
if (currentLine.endsWith("GET /NON")) { digitalWrite(relais2, HIGH);}
if (currentLine.endsWith("GET /NOFF")) { digitalWrite(relais2, LOW);}
}
}
//close connection
client.stop();
Serial.println("Client disconnected.");
//Serial.println("");
}
void loop() {
delay(10);
// ————- // komt er een url aanvraag van de client : http://192.168.1.184
luister_client(); // via de brouwser naar het IP adres van de webserver
// ————-
// while(1) yield(); // We must yield() to stop a watchdog timeout.
}