Duda Web Server

Buenos dias! Estoy haciendo un control para el telefonillo de casa, para poder abrirlo desde el pc sin tener que levantarme (si soy un vago), total que ya tengo el codigo que funciona.

Sale un boton para accionar el telefonillo, pulso, funciona 2s, y luego para. Esto simula el darle al boton para abrir la puerta. El tema esta en que si quiero volver a abrir la puerta, tengo q ir de forma manual al la web “/default”, ya que al pulsar me voy a la de “/abriendo”. Me gustaria que de forma automática se recargara otra vez la web “/default”

Este es el código, no se si me he explicado bien, si no preguntad y os intento aclarar.

#include <ESP8266WiFi.h>
 
const char* ssid = "xxx";
const char* password = "xxxxx";
IPAddress ip(192,168,0,4);
IPAddress gateway(192,168,0,1);
IPAddress subnet(255,255,255,0);

int puerta = D5; //Lo conectamos a D2.

WiFiServer server(80);
 
void setup() 
{
  pinMode(puerta, OUTPUT);
  digitalWrite(puerta, LOW);

  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);
  
  server.begin(); 
}
 
void loop()
{

  WiFiClient client = server.available();
  
  if (!client) 
  {
    return;
  }

  while(!client.available())
  {
    delay(1);
  }

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("");
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Abrir la puerta?: ");

  String request = client.readStringUntil('\r');
  client.flush();
  
  if (request.indexOf("/default") != -1)  
  {
  client.println("<a href=\"/abriendo\"\"><button>Ok</button></a>");
  }
  if (request.indexOf("/abriendo") != -1)  
  {
    client.println("<text>Abriendo</text>");
    digitalWrite(puerta, HIGH);
    delay(2000);
    digitalWrite(puerta, LOW);
    delay(1500);
  }

}

No has intentado hacerte una aplicación con app inventor para manejarlo con el móvil? O quieres hacerlo sólo desde el PC? Mañana por la mañana si tengo tiempo te explico un poco cómo hacerlo.

Recuerda @Djuan que este es un foro de Arduino, soluciones en otros lenguajes son OFF TOPIC

Ok surbyte, pensaba que este era un foro para ayudar y dar ideas.

DJuan:
No has intentado hacerte una aplicación con app inventor para manejarlo con el móvil? O quieres hacerlo sólo desde el PC? Mañana por la mañana si tengo tiempo te explico un poco cómo hacerlo.

Muchas gracias por la ayuda, al final, mas o menos he conseguido lo que quería dándole vueltas al código, pero estoy seguro que funciona mas por ser un bugg que por que yo lo haya programado como tal.

Te posteo el código, porque aun estoy interesado en que después de un tiempo se vuelva solo a la pagina de inicio, ya solo por aprender de cara a otra ocasión. :slight_smile:

#include <ESP8266WiFi.h>
 
const char* ssid = "xxxx";
const char* password = "xxxx";
IPAddress ip(192,168,0,4);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

int puerta = D5; //Lo conectamos a D5.
int lastcheck=0, timecheck=3000;

WiFiServer server(80);
 
void setup() 
{
  pinMode(puerta, OUTPUT);
  digitalWrite(puerta, LOW);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);
  
  server.begin(); 
}
 
void loop()
{

  WiFiClient client = server.available();
  
  if (!client) 
  {
    return;
  }

  while(!client.available())
  {
    delay(1);
  }

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("");
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Abrir puerta?: ");
  client.print("<a href=\"/abrir\"\"><button>Si</button></a>");
  
  String request = client.readStringUntil('\r');
  client.flush();

  if ((request.indexOf("/abrir") != -1) && (millis()> (lastcheck + timecheck)))  
  {
    digitalWrite(puerta, HIGH);
    delay(2000);
    digitalWrite(puerta, LOW);
    lastcheck=millis();
  }

}