Latcheando la vida real

En algunas ocasiones he tenido dificultades para explicar el funcionamiento de Latch, y no me refiero a los aspectos técnicos de cifrados, hashes, cabeceras, etc. sino al propio concepto básico. Y me digo: "¡pero si es un cerrojo!"

Todo el mundo sabe cómo funcionan los cerrojos, no debería ser necesario tener que explicarlo, y además los utilizarán de forma habitual sin ni siquiera darse cuenta.

Latch Físico-2

Entonces, ¿por que les cuesta entenderlo? Creo que por que no lo ven; imbuidos en la tecnología de las Apps y las APIs, no consiguen imaginar cómo un Latch digital funciona exactamente igual que un cerrojo real, aunque sea virtual.

Convencido de que si se pudiera ver Latch como un cerrojo físico se podría entender fácilmente su funcionamiento, me propuse implementar Latch en un cerrojo real integrado en una puerta por ejemplo.

Cuento con una raspberry para realizar las llamadas al servidor de Latch y manejar los elementos físicos que se necesiten; tanto la API de Latch, como la API de la GPIO, están disponibles en diferentes lenguajes comunes, python es mi elección.

Quería que la integración fuese con un cerrojo real, de los que todos vemos y manejamos de forma habitual, nada de cerraduras electrónicas, ni adaptaciones comerciales, aunque lo sencillo hubiera sido un bloqueador electromagnético, que sigue a la perfección los preceptos de Latch: si algo falla, te quedas como estabas al principio.

Después de algunas pruebas, conseguí adaptar un motor paso a paso a un cerrojo real. No es la solución más sencilla, ya que requiere la utilización de un driver de potencia y generar la secuenciación de los pasos para el giro, pero permite poder dejar el cerrojo en abierto con un muelle, para mantener el que si algo falla te quedas como estabas, sin que en ningún momento te puedas quedar bloqueado.

Latch - Anexo código - 1

Hay mucha documentación y ejemplos en Internet sobre cómo generar la secuencia de giro en un motor paso a paso, pero este flash es de lo mejor que he visto nunca. El driver suele ir en función de la exigencia del motor; yo no me compliqué y utilicé un módulo L298N que tenía de un robot de sumo, pero con un liviano ULN2003 hubiera bastado.

Con esto ya tenemos la parte más importante, el actuador que nos permite mover el cerrojo real de posición cerrada a posición abierta, y viceversa (LOCK & UNLOCK).

Para evitar actuar sobre el cerrojo cuando la puerta no esté cerrada, es necesario incorporar un sensor que permita determinar el estado de la puerta, saber si está abierta o cerrada.

Valdría cualquier interruptor, yo he utilizado uno magnético que permite incrustar el imán en la puerta y el sensor en el marco sin que se note nada, y se puede conectar directamente a la raspberry siendo muy sencilla su lectura:Interruptores - ph

Tenemos que detectar el intento de acceso, es decir cuando alguien intenta abrir la puerta, nuevamente las opciones son variadas.

He optado por la más simple que se me ha ocurrido, que ha sido utilizar el pomo de la puerta que es metálico a modo de sensor capacitivo, de forma que con sólo conectarlo con un cable a un pin de la raspberry podemos detectar cuándo alguien agarra el pomo, eso sí, sin guantes…

Latch - Anexo código - 3

Y ya sólo necesitamos crear una aplicación desde el área de desarrolladores de Latch y emparejarnos con ella, obteniendo así el accountID del usuario con el que nos hayamos emparejado.

Latch - App

Yo sigo utilizando el shell script publicado en el blog hace tiempo al que le paso como parámetros el ApplicationID el Secret, y el código de emparejamiento.Latch - Anexo código - 4

Para comprobar el estado del Latch sólo tenemos que realizar la llamada correspondiente mediante la API en python; el valor devuelto será “On” si está desbloqueado u “Off” si está bloqueado.

Latch - Anexo código - 5

Cómo funciona

Latch - pasos

  1. Espera en bucle hasta que se produzca un intento de acceso determinado por el contacto con el pomo de la puerta.
  2. Comprobamos la situación de la puerta, si está abierta no se hace nada.
  3. Si la puerta está cerrada, se realiza la llamada a Latch para verificar su estado. Si está Off no se hace nada, aunque se recibirá la alerta en el móvil.
  4. Si el Latch está en On se desbloquea el acceso.
  5. Esperamos a que la puerta se abra; si tras un tiempo prudencial no se ha abierto saltamos por timeout.
  6. Esperamos a que se vuelva a cerrar la puerta.
  7. Entonces se realiza el bloqueo terminando el ciclo y volviendo a inicio.

Con sólo integrar tres elementos podemos poner un Latch a un sistema de acceso físico de nuestra vida real, como una puerta, una ventana, o un cajón; incluso sin que necesiten una llave para su accionamiento. Lo único que necesitamos es:

–          Detectar el intento de acceso.

–          Evaluar el estado del acceso, si está abierto o cerrado.

–          Actuar sobre el acceso para bloquearlo o desbloquearlo.

 

Sobre el autor

RELACIONADOS