Hello Community.
Yesterday my code worked perfectly, then made some changes on some conditions and now I still can upload both codes, and create a server in which I can interact but neither the new nor the old code turns the relay on and won't send info to the serial monitor. Here's my code:
#include <ESP8266WiFi.h> //Include the Wi-Fi library.
#include <ESP8266WiFiMulti.h> //Include the Wi-Fi-Multi library.
#include <ESP8266mDNS.h> //Works great for normal sites on the Internet, but most local networks don't have their own DNS server.
//This means that you can't reach local devices using a domain name, and you're stuck using IP addresses mDNS uses domain names with the .local suffix.
#include <WiFiUdp.h> //Initializes the ethernet UDP library and network settings.
#include <time.h> //Include time library (Day and hours).
ESP8266WiFiMulti wifiMulti; //Create an instance of the ESP8266WiFiMulti class, called 'wifiMulti'.
#define RELAY_PIN D1
WiFiServer server(80);
int i = 0;//Corrida del día
int j = 0;
int k = 0;
int l = 0;
int value = LOW;
void setup() {
int timezone = -6 * 3600; //Variable para asignar la zona horaria.
int dst = 0; //Forma de compartir el horario UTC.
//Start the Serial communication to send messages to the computer.
Serial.begin(115200);
delay(1000);
pinMode(RELAY_PIN, OUTPUT);
//Agrega las redes Wi-Fi a las que te quieres poder conectar.
wifiMulti.addAP("ABC", "XYZ");
Serial.print("Conectando");
while (wifiMulti.run() != WL_CONNECTED) {//Wait for the Wi-Fi to connect: scan for Wi-Fi networks, and connect to the strongest of the networks above.
delay(1000);
Serial.print('.');
}
Serial.print("\nConectado a: ");
Serial.println(WiFi.SSID()); //Muestra el nombre de la red a la que se conectó.
//Inicia el Servidor ESP8266 en la red en la que está conectado.
server.begin();
Serial.println("Servidor iniciado");
//Muestra el número de URL del Servidor ESP8266.
Serial.print("Usa este URL: http://");
Serial.print(WiFi.localIP());
Serial.println("/");
//De aqui consigue la hora UTC en formato DST.
configTime(timezone, dst, "pool.ntp.org","time.nist.gov");
Serial.println("\nObteniendo horario de zona");
while(!time(nullptr)){
Serial.print("*");
delay(1000);
}
Serial.println("Horario obtenido!!!");
}
void loop() {
//Revisa la conexión del cliente.
WiFiClient client = server.available();
//Lee la primera línea del requerimiento.
String request = client.readStringUntil('\r');
client.flush();
//Gestiona la solicitud desde el servidor.
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(RELAY_PIN, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1){
digitalWrite(RELAY_PIN, LOW);
value = LOW;
}
// Avisa en el servidor el status de la luz.
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("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #77878A;}</style></head>");
//Header del Servidor.
if(value == HIGH) client.println("<body><h1>La luz esta actualmente: Prendida</h1>");
if(value == LOW) client.println("<body><h1>La luz esta actualmente: Apagada</h1>");
//Elige el boton con base en el valor "value".
if (value==LOW) {
client.println("<p><a href=\"/LED=ON\"><button class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/LED=OFF\"><button class=\"button button2\">OFF</button></a></p>");
}
client.println("
\n V.C.:");
client.println(i);
client.println(j);
client.println(k);
client.println(l);
client.println("
");
client.println("</body></html>");
//La respuesta HTTP termina con una línea en blanco.
client.println();
//Asigna hora del PoolServidor.
time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);
//Código para mtto muestra día, horario y valores de variables.
Serial.print("\n");
Serial.print(p_tm->tm_mday);
Serial.print("/");
Serial.print(p_tm->tm_mon + 1);
Serial.print("/");
Serial.print(p_tm->tm_year + 1900);
Serial.print(" - ");
Serial.print(p_tm->tm_hour);
Serial.print(":");
Serial.print(p_tm->tm_min);
Serial.print(":");
Serial.print(p_tm->tm_sec);
Serial.print(" ");
if (p_tm->tm_wday == 0 ) Serial.print("Domingo");
if (p_tm->tm_wday == 1 ) Serial.print("Lunes");
if (p_tm->tm_wday == 2 ) Serial.print("Martes");
if (p_tm->tm_wday == 3 ) Serial.print("Miércoles");
if (p_tm->tm_wday == 4 ) Serial.print("Jueves");
if (p_tm->tm_wday == 5 ) Serial.print("Viernes");
if (p_tm->tm_wday == 6 ) Serial.print("Sábado");
Serial.print(" ");
Serial.print(" Luz:");
Serial.print(value);
Serial.print(" V.C.:"); //Variables de Control.
Serial.print(i);
Serial.print(" ");
Serial.print(j);
Serial.print(k);
Serial.print(l);
}
}