Tal y como le prometí a Chema Alonso en la entrevista que me hizo en El Lado del Mal, tenía otra frikada domótica Mcgyveriana pendiente por hacer. En los tiempos en los que estuve analizando cómo iba a acceder a encender la Roomba me vino a la cabeza la solución a un anterior reto inacabado que tenía meses atrás: Poder encender y apagar de forma remota la alarma de mi casa.
Intenté buscando en foros de alarmas y redes P2P, manuales de instalador de Securitas, en busca de algún punto de acceso remoto que me permitiese manipular la centralita. Esta búsqueda terminó sin éxito. Incluso llamé al instalador de mi alarma porque recordaba que se había conectado vía Bluetooth para activar "noseque". Efectivamente, me contó que hacía ciertas comunicaciones, pero previamente hay que abrir la centralita de la alarma y activar el bluetooth poniéndola en modo test, por lo que tampoco me valía. Por más que busqué por bluetooth, no encontré ningún identificador de forma normal.
Sin embargo, mientras le explicaba a mi atónita madre (hola mamá!) cómo iba a acceder a la Roomba inicialmente simulando ser un mando a distancia por infrarrojos, se me encendió la luz respecto a la alarma: El mando a distancia que me dieron con la misma.
Sin embargo, mientras le explicaba a mi atónita madre (hola mamá!) cómo iba a acceder a la Roomba inicialmente simulando ser un mando a distancia por infrarrojos, se me encendió la luz respecto a la alarma: El mando a distancia que me dieron con la misma.
Dicho mando funciona con una pila (en concreto una CR2450 de 3 Voltios) y permite mediante 4 botones: activar la alarma completamente, desactivarla, activarla parcialmente (para cuando estás dentro de casa) y saber el estado en el que está. Lo primero fue quitarle los tornillos al mando y entender cómo funciona. Me dí cuenta que, si mantienes apretado uno de los botones y le metes la pila, el mando envía la señal del botón correspondiente a la alarma inmediatamente una sola vez. En mi caso, la idea era poder al menos encender la alarma cuando mi casa detecte que no estoy (en base a no encontrar el bluetooth de mi móvil por ejemplo). Es increible la cantidad de cosas que se pueden hacer gracias a los 3,3V que es capaz de sacar el puerto paralelo mediante 8 líneas diferentes de salida controlables. Hace muchos años, me animé a hacer un reloj binario controlado mediante el puerto paralelo del PC.
Sin embargo, me interesaba lograr el poder encender y apagar remotamente la alarma (nunca se sabe cuando puede llegar a activarse sola estando en el salón y si salgo al pasillo, directamente sonaría!) así que el circuito tendría que ser más complicado, involucrando un par de relés (uno para cada botón: encender y apagar) y un par de líneas más desde el puerto paralelo para usar a modo de señales de control que permitan hacer que los relés se exciten o no. Dado que el voltaje del puerto paralelo es de 3,3 Voltios, necesitaba unos
Mi gozo una vez más en un pozo!!!! Así pues, exponiéndole el problema a un tío mío, ingeniero electrónico, se ofreció a diseñarme el circuito definitivo que me garantizaría el correcto funcionamiento. En este caso, sería necesario, además del puerto paralelo para las señales de control, la utilización de un cable USB que proveería de un voltaje de 5V, suficientes para hacer que todo funcione como corresponde.
Así pues, y como la electrónica avanzada no es mi fuerte, os expongo el esquema del circuito que me envió mi tío, así como la lista de materiales necesarios.
Lista de materiales
Placa perforada -> 4 euros - 2 Optoacopladores darlington 4N30 -> Regalados por mi amigo Koldo
- 2 resistencias de 2,2 KOhms 1/4W -> 0,02 euros
- 2 resistencias de 10 KOhms 1/4W -> 0,02 euros
- 2 resistencias de 100 KOhms 1/4W -> 0,02 euros
- 2 transistores MPSA13 -> 0,4 euros
- 3 diodos 1N4007-> 0,6 euros
- 2 relés OMRON G5V1 3DC -> 5,1 euros
Y el circuito soldado queda algo así:
Para enviar las señales necesarias desde el puerto paralelo, utilizaremos un par de scripts en Perl:
Script activar_alarma.pl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root @Carmen ~] # more /usr/local/bin/activar_alarma.pl #!/usr/bin/perl use Device::ParallelPort; use Device::ParallelPort::drv::linux; my $port = Device::ParallelPort->new( 'linux' ); $port ->set_bit(1,0); #Inicializo a 0 $port ->set_bit(2,0); #Inicializo a 0 sleep (1); $port ->set_bit(1,1); #Pongo a 1 el bit 1 para que se "presione" el botón print "Activando…\n" ; sleep 5; #Espero 5 segundos con el botón "presionado" $port ->set_bit(1,0); #Suelto el botón
|
Script desactivar_alarma.pl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root @Carmen ~] # more /usr/local/bin/desactivar_alarma.pl #!/usr/bin/perl use Device::ParallelPort; use Device::ParallelPort::drv::linux; my $port = Device::ParallelPort->new( 'linux' ); $port ->set_bit(1,0); #Inicializo a 0 $port ->set_bit(2,0); #Inicializo a 0 sleep (1); $port ->set_bit(2,1); #Pongo a 1 el bit 2 para que se "presione" el botón print "Desactivando..\n" ; sleep 5; #Espero 5 segundos con el botón "presionado" $port ->set_bit(2,0); #Suelto el botón |
Conclusiones
Créditos y agradecimientos
Muchísimas gracias a mi amigo Pablo por sus manos expertas con el soldador, a mi amigo Koldo Valle por conseguirme y enviarme los optoacopladores que necesitaba para este invento, y por supuesto a mi tío Ricardo por las horas invertidas de una persona tan ocupada, dedicados a contentar las locuras de su sobrino. A los tres, gracias además por vuestra paciencia y un fuerte abrazo!
Podría hacerlo automáticamente también, invocando a desactivar_alarma.pl, pero si alguien lograra spoofear la BD Address bluetooth de mi móvil y su nombre, se desactivaría la alarmaLa forma de controlar si estoy/estamos en casa es mediante el bluetooth del teléfono móvil, por lo que en cuanto el servidor de casa no encuentra el móvil, vía bluetooth, activará la alarma. De manera que al llegar a casa y apagar la alarma manualmente con su correspondiente código de desbloqueo, en la siguiente barrida encontraría el bluetooth del móvil y no se activaría de nuevo la alarma. . Otro problema más, ¿qué sucede si llego a casa sin batería en el móvil? La puedo apagar manualmente sí, pero según llegue al salón, al siguiente minuto, se volvería a activar y estaría acorralado en el salón de casa! Así pues me interesa tener a mano la posibilidad de desactivar manualmente la alarma con desactivar_alarma.pl y quitar del cron el que monitorice si hay dispositivos bluetooth autorizados cerca mientras arranco el móvil y hasta que el bluetooth sea detectable. He estado buscando dispositivos bluetooth que poder comprar, que no hagan NADA pero que simplemente me sirvan para hacer el control de presencia, ¿quizá algo que se cuelgue en el llavero? - Sí, ya sé que Securitas ofrece un módulo GSM que mediante SMSs, permite hacer esto mismo, pero el modulito cuesta 120 euros más todos los SMSs que quieras enviar diariamente. también podría haber comprado un scanner de frecuencias e intentar capturar las señales enviadas por el mando a distancia al presionar ambos botones y replicarlas con un emisor de frecuencias. Desconozco cuanto costaría el equipo necesario para hacer eso. Sin embargo, la solución casera vale unos 10 euros. ¿Estamos en crisis no?
- No he querido titular el post Hacking Securitas aunque realmente crea que así es, pero no faltarán las críticas a que eso no es hacking, así que… dejémoslo en trasteando o curioseando y así todos contentos: los trolls y yo ;D
- Este invento ha sido el último a añadir al sistema de monitorización de presencia que tengo en casa, que activa/desactiva Motion, la posibilidad de que la Roomba se líe a limpiar, un contestador automático hecho con un modem externo y ahora la activación de la alarma, de manera que no tenga que presionar ningún botón y que todo se active y, excepto la alarma, se desactive por sí solo. Prometo exponer todo este frikismo en un post de aquí a un tiempo.
- Cuando ví que no había manera de hacer que este invento funcionase con el puerto paralelo, pensé incluso en adquirir un Arduino o incluso recuperar mis recuerdos universitarios en programar un micropic 16F84.
Créditos y agradecimientos
Muchísimas gracias a mi amigo Pablo por sus manos expertas con el soldador, a mi amigo Koldo Valle por conseguirme y enviarme los optoacopladores que necesitaba para este invento, y por supuesto a mi tío Ricardo por las horas invertidas de una persona tan ocupada, dedicados a contentar las locuras de su sobrino. A los tres, gracias además por vuestra paciencia y un fuerte abrazo!
Fuente: Security by default
27/04/11
27/04/11
Suplemento Temático: Hackers
No hay comentarios:
Publicar un comentario