Motion es un software de monitorización y vigilancia física para Linux que llevo usando desde hace años, pero al que hasta ahora no le he dado un uso cotidiano en la vida real.
Y es que, montar un sistema de vigilancia física de forma casera requiere tener más o menos un diseño previo, tanto en la parte del software como del hardware.
Seré más concreto. Yo tengo configurado Motion al milímetro: qué acciones hay que realizar según el tipo de alerta, qué cámaras están conectadas y cómo funciona cada una… Y así un largo etcétera. Pero yendo al grano, uno de mis grandes quebraderos de cabeza es… «En la vida real, ¿cómo lo activo y desactivo?».
Porque lo básico es iniciar el comando para arrancar el servicio, y detener el proceso para finalizarlo, pero hacer eso requiere estar junto al servidor, y en un caso práctico real no puedo hacer eso porque requiere atravesar la visión de las cámaras provocando falsas alertas, tanto al salir después de activarlo como al entrar mientras no se desactiva.
Esto último lo tengo solucionado dando un retardo de varios segundos para el inicio, pero la gran cuestión: «¿cómo desactivar el sistema de vigilancia antes de entrar?».
Principio de la solución: usando el sistema ACPI
Necesito «algo» externo que tenga la capacidad de ejecutar comandos en el servidor, y obviamente no puede ser un teclado. El sistema ACPI de las placas base de PC vino en mi ayuda. Resulta que con Linux se pueden «escuchar» las pulsaciones del botón de encendido e incluso configurar un comando personalizado. De esta manera, con una pulsación del botón de encendido puedo ejecutar un comando cualquiera.
Para ello sólo hay que editar el archivo /etc/acpi/events/powerbtn-acpi-support y configurar un comando para ‘action’:
event=button[ /]power action=/usr/local/bin/comando-cualquiera.sh
Primer problema: un botón, dos comandos
La siguiente cuestión es que sólo dispongo de ese único botón (no sé cómo hacer lo mismo con el botón reset, ni si es posible) y necesito ejecutar dos comandos: uno para iniciar y otro para detener. Lo solucioné con el siguiente script:
#!/bin/sh PROGRAMA='motion' if ps ax | grep -v grep | grep $PROGRAMA > /dev/null then /etc/init.d/motion start else /etc/init.d/motion stop fi
Este rudimentario aunque efectivo script ejecuta alternamente dos comandos cada vez que se ejecuta. De esta forma el script comprueba si existe el proceso motion y ejecuta un comando u otro según exista el proceso o no.
Segundo problema: ¿qué usar para ejecutar el comando?
La cuestión es que no puedo llevar el pulsador de encendido hasta la puerta de entrada así, tal cual. En primer lugar porque un intruso lo tendría tan fácil como nosotros para desactivar el sistema, sencillamente pulsando un botón. Puede ser una solución más o menos aceptable si se esconde el botón pero llegados a este punto, me parece una solución poco elegante.
Primera solución: un mando y un relé inalámbrico
Una solución que tuve en mente durante mucho tiempo fue montar un sistema inalámbrico con los siguientes elementos:
- Un relé inalámbrico
- Una antena
- Un mando inalámbrico (como el que se usa en las puertas de garajes)
Tanto el relé como el mando llevan seis conmutadores que funcionan a modo de «contraseña» y de esta manera, el contacto de encendido de la placa base solamente se activa con nuestro mando, configurado con la misma combinación que el relé. Basta con alimentar el relé con 12v (que se pueden sacar de la fuente de alimentación del servidor), conectarlo a una antena y al contacto de encendido de la placa base, y tener el mando con pilas.
En general estos mandos, si se usa una antena decente (de al menos 12cm), tienen bastante alcance y funcionan desde la puerta antes de entrar.
Segunda solución: un pulsador con llave
La segunda solución es más sencilla de aplicar, e igual o más segura que la anterior. Básicamente se lleva el contacto de encendido de la placa base hasta un pulsador que solamente funciona con llave. Un ejemplo es el de la foto de más arriba, comprado en eBay a un precio asequible.
Así que en resumen, entro a casa, activo el pulsador con la llave y pulso un botón para desactivar el sistema de vigilancia. Y además, al ser un pulsador, no tengo por qué dejar la llave puesta, puedo volver a cerrar y sacarla.
Y con esto es como creo que puedo usar Motion con comodidad en el día a día.
2 Comments
Voy a dejar aqui esta idea, pero creo que podría funcionar, y simplemente … usa el móvil con bluetooth o en su defecto wifi.
El BT tiene corto alcance (en teoría son 100m, el BLE solo 50m) y personalmente me parece la cosa más inutil del mundo peeeeero aqui podría funcionar. Simplemente tienes el BT encendido y emparejado con el server, cuando te alejes, el server perderá la conexión y se pondrá en marcha.
Otra idea sería usar la conexión wifi del móvil, ya sea porque sea el propio router quien active el server al conectar/desconectar el dispositivo, o porque el server haga «ping» cada 5 segundos a una IP (el móvil).
Una tercera solución (si estás derrochón en términos de batería), sería una pequeña app en el móvil, y el GPS conectado, cuandoestuvieras cerca de casa que apague el script y cuando te alejes que lo encienda (ya hay apps así que apagan el sonido cuando estás en el trabajo o cambian a diferentes configuraciones según donde estés y qué hora sea). Esta me parece la peor de las soluciones.
En cualquiera de los dos primeros casos, el checkeo lo harías frente a la MAC del móvil
La idea es buena, y perfectamente válida y aplicable, pero no la contemplo por un motivo concreto. La premisa a la hora de montar este tinglado, es que su manejo tenga el menor impacto posible en la vida cotidiana, y prestar atención a la batería del móvil tanto al salir como al entrar en casa requiere una atención que supone ese impacto.
En el caso del Bluetooth, además, hasta donde yo he experimentado, existe un lapso entre que llegas al área de cobertura y se realiza el emparejado, con lo cual, esperar unos segundos en la puerta mientras se desactiva la alarma antes de entrar, también es un impacto en la vida cotidiana.
Ya puestos a asumir estar pendientes de la batería. Una simple APP en el móvil que haga de llave y se comunique con el servidor sí me parece una buena, simple y elegante solución :)