Go Down

Topic: Control de iluminaria (se bloquea) (Read 170 times) previous topic - next topic

larj

Sep 15, 2018, 08:41 pm Last Edit: Sep 15, 2018, 08:43 pm by larj
Hola, explico mi problema, estoy teniendo problemas con un control de iluminaria que estoy realizando, básicamente controlado por internet, me funciona bien de forma remota y local, pero sin saber de repente no puedo ingresar mas a la aplicación que realice,  descarto que sea el internet de la casa por que mis otros dispositivos del hogar funcionan bien, los puertos están bien agregados en el router, lo estoy realizando con una tarjeta mega con la shild de ethernet mas una tarjeta de rele de 8 (alimentada de forma externa). He cambiado tarjeta mega y ethernet por otras nuevas (todo producto chino) pero sigo con el mismo problema, alguna idea? cuando las enciendo de forma pausada me he dado cuenta que funciona bien, pero al hacerlo varias veces en encender o apagar  una u otra se tiende a quedar pagada y a desconectarse, no pudiendo ingresar mas a la aplicación, teniendo que reiniciarla desde el botón de reset de la placa, pero sin embargo sigo teniendo ping desde mi red local al arduino.

adjunto código por si alguien me podría ayudar.



venado_bike

#1
Sep 24, 2018, 10:00 pm Last Edit: Sep 24, 2018, 10:13 pm by venado_bike
Hola, tienes que desconectar al usuario una vez finalizada la accion. Algo similar a lo siguiente:

Code: [Select]

unsigned long contador_usuario_activo;
boolean cliente_activo = false;
char t; //caracter temporario buffer

void loop(){
 EthernetClient cliente = servidor.available();   
 if(cliente) { //verifica cliente activo 
      cliente_activo = true;
      contador_usuario_activo=0;   
      cliente.println("Conexion OK!");  //envia confirmacion de conexion ok       
       
    while (cliente_activo) {   

     t = cliente.read(); //char -> dato obtenido
    contador_usuario_activo+=1;     
     
    if(contador_usuario_activo==45000){ //15 minuto aprox.           
       cliente.println("!OFF");
       cliente.flush(); //vacia buffer
       cliente.stop(); //cierra conexion cliente-servidor
       cliente_activo = false;
       delay(5); //espera 5 milisegundos
    } //fin if cliente desconectado



 switch (t) {           
        case 'a': 
          //ejecuta accion
          break;

default:         
           Serial.println("Esperando orden..");                 
           delayMicroseconds(500);

} //fin switch
} //fin while
} //fin loop




En tu codigo veo que no guardas el estado de las luminarias encendidas, por ejemplo: desconectas la alimentación del equipo, y vos previamente habías encendido la luz del patio delantero y trasero; al iniciar la placa te inicia todo en BAJO y tienes que volver a encenderlas desde la web nuevamente.

Hice algo similar pero para 4 relays y una app para android, si necesitas ayuda avisa!

Saludos.

Go Up