Hola de nuevo.
Me gustaria saber lo siguiente:
Tengo un sensor que actua como interruptor (LOW/HIGH)
Normalmente esta en LOW (reposo) y ningun rele activado.
Quiero que cuando pase a HIGH, active el RELE-1 durante 2 minutos y se desactive.
y que cuando el sensor vuelva al estado LOW active el RELE-2 durante 2 minutos y se desactive.
Quedando todo como al principio, RELES desactivados.
Este proceso lo quiero implementar desde un esp8266-01 que actúa como servidor, el sensor esta en el
cliente.
Espero haberme explicado correctamente Gracias
//SERVIDOR
#include <ESP8266WiFi.h>
const char WiFiClave[] = ""; //Sin clave
const char AP_Nombre[] = "ESP8266";
WiFiServer server(80);
const int releAbajo = 2;
const int releArriba = 14;
String req;
enum {Indeterminado, Arriba, Abajo} estadoPersiana=Indeterminado;
void setup(void) {
pinMode(releAbajo, OUTPUT);
digitalWrite ( releAbajo, LOW );
pinMode(releArriba,OUTPUT);
digitalWrite ( releArriba, LOW );
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
Serial.print("Conectando a...");
Serial.println();
Serial.println(AP_Nombre);
WiFi.mode(WIFI_AP);
WiFi.softAP(AP_Nombre, WiFiClave);
server.begin();
Serial.print ( "Server Inicializado" );
Serial.println();
}
void loop( void ) {
int estado_releAbajo = digitalRead(releAbajo);
WiFiClient client = server.available();
if (!client) { return;}
Serial.println("Nuevo Cliente");
String req = client.readStringUntil('\r');
Serial.print (req);
if (req.indexOf("/gpio/0") != -1){
if (estadoPersiana!=Abajo) {
digitalWrite(releAbajo,HIGH );
delay(5000);
digitalWrite(releAbajo,LOW);
estadoPersiana=Abajo;
}
}
else if (req.indexOf("/gpio/1") != -1) {
if (estadoPersiana!=Arriba) {
digitalWrite(releArriba,HIGH);
delay(5000);
digitalWrite(releArriba,LOW );
estadoPersiana=Arriba;
}
}
client.flush();
delay(1);
client.stop();
Serial.println("Client disconnected.");
}