Circuito con contraseña

Todo lo relacionado con el software de Arduino
Responder
Avatar de Usuario
Sigmundfreud
Mensajes: 420
Registrado: Mar Feb 12, 2019 8:23 pm
Ubicación: Girona

Circuito con contraseña

Mensaje por Sigmundfreud » Vie Ene 03, 2020 3:06 pm

Buenas tardes,

Hace bastante tiempo que tengo un circuito con contraseña, ese circuito me abre la puerta del garaje y a más a más el mimo circuito se muestra en on si la puerta esta abierta, aunque no la abra desde excontrol.

El metodo usado fue uno publicado hace tiempo por 'sir pecas'

Código: Seleccionar todo

if(circuits[22].Value==clave){seg=1;abrir=true;circuits[22].Value=0;}	//si la clave es otra deja en cero el circuito dado que el circuito es timer alguien podría poner un número muy grande y 
if(circuits[22].Value>0 && circuits[22].Value!=clave){circuits[22].Value=0;}//empezaría a descontarse minuto a minuto y abriría la puerta
if (seg>=3){seg=0;abrir=false;}
if (seg>=1){seg=seg+1;}
Ahora quiero cambiar el método de abrir la puerta y a ver si os gusta o veis otra opción mejor.

Crear un circuito con el símbolo de la llave, una consigna, una alarma.
La consigna esta a 0 y para abrir tenemos que poner la consigna con el valor previamente que hayamos establecido como contraseña y pulsar el circuito de la llave, si todo esta ok abre y la consigna vuelve a 0. Si se falla envia una alarma de "contraseña erronea" y consigna a 0. Si se falla 3 veces en menos de cierto tiempo hay que esperar un tiempo para volver a probar.

Cómo lo veis? Pondríais alguna cosa más?
Una persona que nunca se ha equivocado es porque nunca ha probado nada nuevo
(Albert Einstein)

En mi lista ya hay 5 mkr, 1shield excontrol, 1 extensión, 1 nano iot33, multiples CI...... :lol: :lol: :lol:

Avatar de Usuario
manuch
Mensajes: 95
Registrado: Mar Feb 12, 2019 8:49 pm

Re: Circuito con contraseña

Mensaje por manuch » Vie Ene 03, 2020 6:51 pm

No sé como se haría, pero yo crearía una capa mas de seguridad (se que eres listo y lo sabrás hacer... jajaja) y es que te garantices que quien activa el circuito sea tu movil, ya sea confirmando el numero de teléfono que tiene tu sim o incluso tu IMEI
"Una experiencia nunca es un fracaso, pues siempre viene a demostrar algo" Edison

Avatar de Usuario
Sigmundfreud
Mensajes: 420
Registrado: Mar Feb 12, 2019 8:23 pm
Ubicación: Girona

Re: Circuito con contraseña

Mensaje por Sigmundfreud » Vie Ene 03, 2020 7:19 pm

ostiaaaaaaaaaaaa.... eso es de champion!!!!!

Lo que no sé si se podria es enviar el valor de una variable por una notificacion?! eso estarñia bien
Una persona que nunca se ha equivocado es porque nunca ha probado nada nuevo
(Albert Einstein)

En mi lista ya hay 5 mkr, 1shield excontrol, 1 extensión, 1 nano iot33, multiples CI...... :lol: :lol: :lol:

Avatar de Usuario
Sigmundfreud
Mensajes: 420
Registrado: Mar Feb 12, 2019 8:23 pm
Ubicación: Girona

Re: Circuito con contraseña

Mensaje por Sigmundfreud » Dom Ene 12, 2020 3:55 pm

Aporto lo que he hecho en este tema, seguro que se puede mejorar pero de momento me vale y puedo dedicar el tiempo a otra cosa.
Básicamente hace lo siguiente.
Hay una consigna, un circuito y dos alarmas.

La consigna tiene valor 0 si se cambia guarda el valor cambiado 30s, durante ese tiempos pulsamos el circuito, si el valor es correcto circuito se pone a "1" sino envia alarma clave erronea. Si hay tres contraseñas erroneas el circuito se bloquea durante 5 min y envia otra alarma.

Pongo el codigo por si a alguien le interesa

Variables

Código: Seleccionar todo


const int clave=****; //poner una clave para la consigna
byte intentos=0;       // intentos para abrir puerta
byte segundosConsigna=0;     // segundos que guarda el valor de la consigna
int bloqueoPuerta = 0;     // timpo que estara la puerta bloqueada si hay tres fallos
byte sRele =0;              // tiempo en s. que estara el rele excitado
byte sIntentos=0;



Newsecond

Código: Seleccionar todo


  if (Consignas[7]!=0) {                    // si la consigna ha cambiado de valor 0
    segundosConsigna++;
    if (segundosConsigna == 30) {         //  tiempo que se guarda el valor en la consigna para poder abrir puerta
      Consignas[7] = 0;                // consigna vuelve al valor 0
      segundosConsigna = 0;
    }
  }

  if (((circuits[22].Value > 0) && (intentos < 3) && (bloqueoPuerta == 0))) {  // activamos el circuito puerta, no ha habido tres fallos y no esta bloqueada por tiempo
    if (Consignas[7] == clave) {
      SetI2CRelay(52, true);              // abrimos puerta , se cerrara un segundo despues
      Consignas[7] = 0;                   // volvemos a poner consigna a 0
      circuits[22].Value = 0;              // ponemos el circuito a 0
      intentos = 0;
      sRele=1;                                  // inicia tiempo excitacion rele
    }
    else if (Consignas[7]!=clave) {      // la consigna no corresponde a la clave
      SetAlarm(10);                       // enviamos alarma clave erronea
      intentos++;                         // sumamos intentos
      circuits[22].Value = 0;              // circuito a 0
    }
    ResetAlarm(10);                             // reseteamos alarma contra erronea
  }


  if (sRele>0) {              //   apaga el rele si pasa 1s.
#ifdef EXC_DEBUG_MODE
    Serial.println("rele activado");
#endif
    sRele++;
    if (sRele == 3) {
#ifdef EXC_DEBUG_MODE
      Serial.println("2 segundo y desactivo");
#endif
      SetI2CRelay(52, false);     // apago rele
      sRele = 0;              // ponemos a 0 para la siguiente vez
    }
  }
        
if (intentos==3){                           // hemos errado tres veces
bloqueoPuerta=300;                          // 5 min dura el bloqueo puerta
SetAlarm(11);                                 //enviamos alarma que la puerta esta bloqueada por un tiempo
    intentos=0;
} 
else if ((intentos>0)&&(intentos<3)){        // de esta forma si hay error al introducir la contraseña a los 60s se resetean los errores y empiezan de cero
sIntentos++;
    if(sIntentos==60){
intentos=0;
}
}

if (bloqueoPuerta>0){                       // cuenta  a tras para poder volver a probar  
bloqueoPuerta--;                            //descontamos s.
circuits[22].Value=249;                        //ponemos circuito naranja mientras dura bloqueo
Consignas[7]=8888;                          // ponemos la consigna que gestiona la contraseña a 8888 para no poder modificar
    if(bloqueoPuerta==1){                   // cuando falta 1s. volvemos a restablecer valores
    Consignas[7]=0;
    circuits[22].Value=0;
    ResetAlarm(11);
    }
}


Una persona que nunca se ha equivocado es porque nunca ha probado nada nuevo
(Albert Einstein)

En mi lista ya hay 5 mkr, 1shield excontrol, 1 extensión, 1 nano iot33, multiples CI...... :lol: :lol: :lol:

Responder

Volver a “Software”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados