Detección de Movimiento (y III)

Ya hemos configurado Motion, nos envía alertas, pone las evidencias con un time-stamp y a salvo… ¿qué más nos puede hacer falta?.

Muy sencillo: ¿cómo lo activo?, ¿cada vez que salgo de casa me tengo que hacer root y ejecutar /etc/init.d/motion start?… Eso es mucho rollo, necesito algo automático.

Desde el principio, tengo un par de combinaciones secretas de teclas (en gnome, con el gconf_editor… buscad por ahí), una para activarlo y otra para desactivarlo. Evidentemente, la activación tiene un retardo, para que me dé tiempo a salir de casa sin prisa.

Este sistema, era útil, pero, necesitaba que todavía lo fuese más, es decir, activación automática. Sin embargo, ¿y la desactivación?. Prefiero que sea manual. Si alguien, mediante algún tipo de coacción (navaja en el cuello, pistola en la sien…) entra conmigo a casa, tendré evidencias de este suceso.

¿Cómo hago para activarlo automáticamente?… muy fácil, ¿qué es lo que siempre que sales de casa llevas encima?… ¿el móvil quizas?. A día de hoy, hasta los móviles más chapuceros tienen bluetooth… ¡ya lo tengo todo!

La idea es la siguiente: el móvil siempre tiene el bluetooth activado pero oculto, para que no me lo vean por “ahí”, pero, ¿entonces cómo interactúo con él?

Como la MAC bluetooth es conocida por mi (hcitool scan, eso sí, con el móvil visible sólo para esto) al igual que el “nombre” que le tengo puesto, consultando directamente a la MAC (hcitool info MAC) me dará ciertos datos, así que, tengo un sistema simple de detectar si están los móviles.

#!/bin/bash
MACS=( MAC_BT_DEL_MOVIL1 MAC_BT_DEL_MOVIL2 …. )
IDS=( NOMBRE_MOVIL1 NOMBRE_MOVIL2 …. )
INDICE=0
ESTA_EL_MOVIL=0
MOVILES=0
QUIEN_ESTA=
###########################

ELEMENTOS=${#MACS[@]}

while [ “$INDICE” -lt “$ELEMENTOS” ]
do
ESTA_EL_MOVIL=`hcitool info ${MACS[$INDICE]} 2>/dev/null | grep -v “Requesting information …” | grep ${IDS[$INDICE]} | wc -l`
if [ $ESTA_EL_MOVIL -gt 0 ]
then
let “MOVILES = $MOVILES + 1”
# echo “Detectado móvil ${IDS[$INDICE]}”
QUIEN_ESTA[$INDICE]=${IDS[$INDICE]}
else
QUIEN_ESTA[$INDICE]=”nadie”
fi

let “INDICE = $INDICE + 1”
done

if [ $MOVILES -eq 0 ]
then
#Como no hay móviles, encendemos la alarma
logger “Enciendo la camara porque no hay nadie en casa”
# echo $MOVILES
beep -f 880 -l 100 -r 10 -d 100
/etc/init.d/motion start
else
logger “Estan en casa ${QUIEN_ESTA[0]} y ${QUIEN_ESTA[1]}”
fi
exit 0;

Bueno, creo que ya lo tenemos todo… cualquier sugerencia, mejor de los scripts será bienvenida.

P.S: Los scripts son GNU y como se suele decir, no me responsabilizo. Llevo un par de años usándolos (unos más que otros según he ido actualizando) y hasta ahora sin problemas.

P.S.2: Lo sé, picar código no es lo mío y es posible que haya barbaridades en los scripts, pero una vez más, a mi me funcionan.