viernes, marzo 31, 2017

Pi Guardian: Un sistema de seguridad con Latch, Bots de Telegram y una Raspberry Pi con ojos #RaspberryPi #Latch

Como ya os han contado Chema Alonso y Pablo González - que presentó su Latch'sApp -, el Equinox es nuestro “Hack Day” personal. Un evento que nació en las entrañas de ElevenPaths y que se extiende ahora a todo el área de nuestro Chief Data Officer de Telefónica y que nos permite abandonar nuestro día a día durante 24 horas para desarrollar nuestras ideas más “locas”.

Figura 1: Pi Guardian. Sistema de seguridad con Latch, Bots de Telegram y una Raspberry Pi con ojos

Por supuesto no todo es programar durante esas 24 horas. Es una oportunidad estupenda para hacer piña y conocer más de cerca a compañeros con los que no trabajas normalmente, o para comer pizza, mucha pizza.

Figura 2: Pizza, mucha pizza en el Equinox de CDO de Marzo de 2017

En esta edición, la segunda en la que participo desde que llegué a ElevenPaths, decidí hacerlo en solitario. Se que es el trabajo en equipo es importante, pero tenía ganas de probarme a mí mismo y presentar un proyecto ante el tribunal para ir perdiendo el miedo escénico. Y de este proyecto os voy a hablar en el artículo de hoy. Se llamó:

Pi Guardian

La idea para mí era sencilla. Desde que los compañeros de Latch añadieron los Webhooks (necesitas estar conectado con una cuenta de desarrollador para ver la documentación de Latch), es posible convertir la app en un interruptor para casi cualquier cosa.

Figura 3: Documentación de los Webhooks de Latch (en sitio de developer)

Por otro lado, quería desenterrar mi vieja Raspberry PI y hacer algún hack en el que pudiera jugar con algo de electrónica, que aquí se lo pasan de maravilla con la VPN con Latch, OpenVPN y Virus Total, o en el caso del DirtyTooth Hack donde también la utilizaron para las PoC. Así, decidí construir mi Pi Guardian, un sistema de alarma anti-intrusos gestionado únicamente con la app de Latch.

Figura 4: Sensor de movimiento PIR

Para ello, me recorrí Madrid la tarde anterior al Equinox en busca de un sensor de movimiento PIR, que básicamente da una señal digital cada vez que detecta movimiento. Cuando en mi Raspberry PI detectara esta señal, preguntaría a la API de Latch: "¿Candado cerrado?" y Latch haría el resto por mí. Recibiría una notificación en la app indicando que alguien ha intentado acceder a mi cuenta. Aunque en este caso, significaba que Pi Guardian ha detectado un intruso.

Figura 5: Alerta de que alguien ha sido detectado por Pi Guardian

Además, con la app de Latch para Apple Watch también recibía la notificación en mi muñeca, por lo que en apenas una hora había construido un sistema de alarma totalmente funcional con un sencillo bloque IF en mi lenguaje favorito.

Figura 6: Alerta de sensor de movimiento en Apple Watch

Como aún tenía tiempo, se me ocurrió que podía darle ojos a mi Pi Guardian. Sería tan sencillo como añadir una Webcam al sistema que disparase una foto cuando detectase algún movimiento el sensor y tenerlo coordinado con Latch. Así que al lío.

Poniéndole ojos a Pi Guardian

Pedí una Webcam USB prestada a mis compañeros del departamento de IT e instalé en mi Raspberry Pi el software Open Source Motion. Esto me permitía tomar fotografías y grabar tomas de video cada vez que el sensor detectara movimiento. El bloque IF tenía ahora un par de líneas más.

Figura 7: Raspberry Pi con sensor de movimiento y Webcam USB

Ahora ya tenía un sistema que grababa vídeos y tiraba fotos cuando detectaba movimiento, pero como aún no habían terminado las 24 horas, podía meterle más funcionalidades. Así que pensé en qué más añadirle.

Un bot de Telegram para gestionar a Pi Guardian

La siguiente funcionalidad que quería añadir era algo más ambiciosa. Pensé que sería útil permitir que la alarma fuera gestionada por varios usuarios, pensando en un entorno familiar. Para ello, y por simplicidad, implementé un Bot de Telegram que podría añadir a un chat de grupo y que procesaba los comandos "on" y "off" para activar/desactivar la alarma en paralelo al candado de Latch.

Figura 8: Control de las funciones de Pi Guardian con un bot de Telegram

También implementé el comando “pic”, con el que tomaba una foto con la webcam y la enviaba al chat. Así, tenía una app multiplataforma desde la que también podría gestionar mi Pi Guardian.

¿Integrándolo con AURA?

Por último, ya que aun me quedaban unas horas y que la edición de este año animaba a desarrollar proyectos relacionados con Aura, se me ocurrió implementar un “Aura, protect my home” que seguro daría muchos puntos a la demo, al estilo del "Aura, show my Latch" de mi compañero Javier Espinosa.


Figura 9: Aura controlando Latch


La idea consistía en enviar un mensaje de voz al chat de Telegram, procesarlo desde el Bot y lanzar el comando correspondiente. Sin embargo, aprovecharé este post para hacer una pequeña confesión. Se me acababa el tiempo y el procesamiento de audio no era algo trivial, pero ese “Aura, protect my home” sonaba todo el rato en mi cabeza. Entonces recordé cuando Chema Alonso nos hablaba del Golden Path de Steve Jobs en la presentación del primer iPhone y decidí implementar el siguiente pseudocódigo:
IF recibo audio AND alarma ON?
alarma OFF!
ELSE IF recibo audio AND alarma OFF?
alarma ON!
Así que básicamente implementé la funcionalidad de activar/desactivar la alarma mediante mensajes de voz, aunque daría igual el contenido de ese mensaje.

Pi Guardian en acción

Lo siguiente ya fue la demo. Acepté el reto de hacerla en Inglés para que los compañeros de UK pudieran seguirla. Quedó muy divertida gracias a la ayuda de mi compañero Antonio, que se quedó en la oficina para hacer saltar la alarma y saludar a la cámara. Aquí os dejo una vídeo del funcionamiento de Pi Guardian.

Figura 10: Demo de Pi Guardian

El proyecto no resultó vencedor en ninguna categoría. Tenía poco que hacer contra el Virtual Rubik de Dani, Jorge y Pedro, y mi “Aura” no podía hacer frente al proyecto de “Laura” de Javi y Carlos. y qué decir del Birrinder, ese red social para tomar birras basada en la 4º Plataforma que te avais de los Spoiler Alerts cuando alguien iba por delante de ti en una serie que estabas viendo. Insuperables.


Figura 11: Log de accesos en Latch para Pi Guardian

Eso sí, me llevé una alarma antirrobo para casa que funciona y que además me permite ver qué hace mi perro cuando estoy fuera y que, como se ve en la imagen superior, puede monitorizar constantemente para saber la historia de todos los eventos usando el log de Latch.

Autor: Julio García Pérez, Sofware Engineer @ElevenPaths

3 comentarios:

Unknown dijo...

Hola, ¿los proyectos que se mencionan en el articulo están publicados en alguna parte ? Me refiero al Virtual Rubik de Dani, Jorge y Pedro, “Laura” de Javi y Carlos. y Birrinder, un saludo!!

Unknown dijo...

Julio enhorabuena sobre todo por tu.capacidad de administrar el tiempo!!! La verdad q me encanta tu idea y ahora que estoy empezando en este mundo de la raspberry pi vi en tu articulo una oportunidad para intentar practicar, aunque estoy segura que tardaré muchisimo más que tus 'menos de 24 horas'. Mis mas sinceras enhorabuena campeón. !!

Unknown dijo...

Muy buen aporte y muy interesante todo lo que pudiste hacer en tan poco tiempo. Felicitaciones!!!

Entrada destacada

Programa de Especialización "Inteligencia Artificial para Expertos en Ciberseguridad" 2ª Edición.

Hoy, en medio del verano, os traigo información de la 2ª Edición del   Programa de Especialización  de "Inteligencia Artificial para Ex...

Entradas populares