Pueeeeenteeee

Qué bien viene un puente de vez en cuando… sobre todo para ¡vegetar!

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.

Detección de Movimiento (II)

Ya tenemos instalado Motion, nos genera chorrocientas imágenes cada vez que hay un cambio, pero, siguen en local y no tenemos ni idea cuándo pasa algo.

Para solucionar esto, se me ocurrió usar un directorio para las fotos y vídeos nuevos que genera. Dicho directorio será limpiado cada vez que arranque, para evitar tener morralla que no sirve. Para ello, el inicio lo he modificado del siguiente modo:

#!/bin/bash
#
# motion      Capturador de movimiento por webcam
#
# chkconfig: 2345 90 30
# description: Montion es un programa para capturar movimiento con
#              dispositivos v4l.
# processname: motion
# config: /etc/motion/motion.conf

start() {

ACTIVO=`ps -ef | grep motion | grep -v grep | grep -v init | wc -l`
if [ $ACTIVO == 0 ]
then
#    echo “Motion NO Esta activo”

RUTA=”RUTA A LAS FOTOS NUEVAS”
RUTA2=”RUTA AL DIRECTORIO DE BACKUP/LIMPIEZA”
VIEJAS=-2
FOTO=0

LISTA=`ls -tr $RUTA/ | cut -d  -f1`

for i in $LISTA
do
if [ “$i” == “foto.jpg” ]
then
FOTO=1
fi

if [ !$FOTO ]
then
if [ “$1” != “foto.jpg” ]
then
VIEJAS=`expr $VIEJAS + 1`
fi
fi

done

if [ $VIEJAS -gt 0 ]
then
FOTOS_VIEJAS=`ls -tr $RUTA/20* | head -n $VIEJAS | cut -d  -f1`

for i in $FOTOS_VIEJAS
do

mv $i $RUTA2
#echo “-a $i ” >> $TEMPORAL

done
fi

#ACTIVO=`ps -ef | grep motion | grep -v grep | wc -l`

#if [ !$ACTIVO ]
#then
/usr/bin/motion
echo “1” > /tmp/sms
fi
exit 1

}

stop() {

pkill motion

exit 1

}

backup() {

VIEJAS=-2
FOTO=0

LISTA=`ls -tr $RUTA/ | cut -d  -f1`

for i in $LISTA
do
if [ “$i” == “foto.jpg” ]
then
FOTO=1
fi

if [ !$FOTO ]
then
if [ “$1” != “foto.jpg” ]
then
VIEJAS=`expr $VIEJAS + 1`
fi
fi

done

if [ $VIEJAS -gt 0 ]
then
FOTOS_VIEJAS=`ls -tr $RUTA/20* | head -n $VIEJAS | cut -d  -f1`

for i in $FOTOS_VIEJAS
do

mv $i $RUTA2
#echo “-a $i ” >> $TEMPORAL

done
fi

exit 1
}

case “$1” in
start)
start
;;
stop)
stop
backup
;;
backup)
backup
;;
restart)
stop
start
;;
*)
echo “Usage: motion {start|stop|restart|backup}”
exit 1
esac

Con un directorio que sé que está vacío en cada nueva ejecución, sólo tengo que periódicamente comprobar si aparecen nuevas fotos, o lo que es lo mismo, se genera un “evento” (provocando las fotos y vídeos).

Bien, ya sabemos detectar eventos, pero, ¿cómo me avisan?. Para ello, el aviso será a una cuenta de correo electrónico, en el que además, adjuntamos las fotos. Esto tiene tres ventajas:

a) Sacamos las evidencias fuera del servidor, así que, si sufrimos un robo o incendio, tendremos seguridad de no perder esos valiosos datos.

b) De algún modo, podremos certificar, gracias al servidor externo de correo, un time-stamp, que, con un buen peritaje, no creo que un Juez se niegue a aceptarlo.

c) Un modo rudimentario de alertas, aunque por e-mail, lo que no es inmediato, pero en determinados entornos puede que no nos quede otra.

Vale, ya he sacado las fotos fuera, pero, ¿y las alertas?. Para ello, generalmente los operadores de telefonía móvil suelen dar una cuenta de correo asociada a un número de móvil, de tal modo que te das de alta en ese servicio (gratuito en todos los casos que conozco) y cuando te llega un mail el operador, envía un SMS con, al menos, el remitente y sin coste alguno. Antiguamente también enviaban el subject, pero eso lo convertía en una forma interesante de recibir SMS gratis.

Para todo ello, tengo un script en el crontab que hace todo esto:

#!/bin/bash
#Definimos las variables
RUTA=”RUTA CON LAS IMÁGENES NUEVAS”
REMITENTE=”DIRECCIÓN DE EMAIL QUE GENERA LAS ALERTAS”
MENSAJE=”SUBJECT DEL EMAIL”
TEMPORAL=”/tmp/VARIABLE_TEMPORAL”
DESTINATARIOS=( CORREO1@DOMINIO CORREO2@DOMINIO …)
COMODIN=”foto.jpg”
SMS=”/tmp/sms”
UMBRAL=10
#EJECUCION
###############################

COMPRUEBA=`echo $EMAIL`
if [ “$COMPRUEBA” != “$REMITENTE” ]
then
export EMAIL=”$REMITENTE”
fi

#export

LISTA=`ls -tr $RUTA/ | cut -d  -f1`
NUEVAS=-1
TOKEN=`cat $SMS`

for i in $LISTA
do
if [ “$i” == “$COMODIN” ]
then
FOTO=1
fi

if [ $FOTO ]
then
NUEVAS=`expr $NUEVAS + 1`
fi

done

if [ $NUEVAS -gt 0 ]
then
FOTOS_NUEVAS=`ls -tr $RUTA/20* | tail -n $NUEVAS | cut -d  -f1`

for i in $FOTOS_NUEVAS
do
echo “-a $i ” >> $TEMPORAL
done

ADJUNTOS=`cat $TEMPORAL`

rm -f $TEMPORAL

ELEMENTOS=${#DESTINATARIOS[@]}
INDICE=0

while [ “$INDICE” -lt “$ELEMENTOS” ]
do
echo “$MENSAJE” | mutt -s “$MENSAJE” $ADJUNTOS ${DESTINATARIOS[$INDICE]}
logger “Envio mail a ${DESTINATARIOS[$INDICE]}”
let “INDICE = $INDICE + 1”
done

logger “ALERTA: DETECTADO MOVIMIENTO”

ULTIMA=`ls -tr $RUTA/20* | tail -n 1 | cut -d  -f1`
cp $ULTIMA $RUTA/foto.jpg -f

#Si hay mas de 8 fotos, enviamos SMS
if [ $NUEVAS -gt 8 ]
then

TOKEN=`expr $TOKEN + 1`
echo “$TOKEN” > $SMS

if [ $TOKEN -eq 1 ]
then
echo “$MENSAJE” | mutt -s “$MENSAJE” $CORREO
logger “SMS: SE ENVIA SMS”
fi
fi

fi

Bueno, con esto ya tenemos casi todo… ¿o no?

Detección de Movimiento (I)

Como ya sabéis algunos, en casa tengo un sistema de detección de movimiento con alertas.

Al comienzo de venir a vivir al piso de alquiler, como el portero tenía también las llaves, sospechaba que pudiese entrar, como pasó una vez para “quitarme” un ambientador a pilas que tenía… el hombre se excusaba en que pensaba que era del casero.

Con estos antecedentes, tenía claro que necesitaba algo que me avisase si algo pasa, así que, me puse manos a la obra.

Antiguamente, usaba Camorama con Apache, lo que permitía refrescar cada cierto tiempo una imagen en un servidor web. Este sistema, para ver un nido de pájaros puede estar bien, o para ver si hay nieve en la sierra, o mi habitación como hacía, pero no es válido para vigilar.

Busqué, por aquel entonces, algún software que detectase movimiento con una webcam (básicamente, que capturase una imagen, capturase otra pasado cierto tiempo y que haga un resta). Realmente no es complejo hacerlo, pero, ya había alguien que lo había hecho: Motion.

Motion está bien, no es tan completo como otras soluciones actuales, pero hace un par de años no encontré nada mejor.

Tiene dos formas de configurarse: a pelo, editando el fichero de configuración motion.conf, o bien, si consigues que arranque, a través de la interfaz web en el puerto 8082.

Una vez que está arrancado me surgió un problema: ¿cómo hago que me avise?

Sin teléfono

Ya es la segunda vez que me pasa. Al descolgar el teléfono no se oye tono, intentas marcar y nada, sigue el silencio, hasta que, pasados unos segudos, por arte de birlibirloque aparece el tono de llamada.

Como parece que esperando unos 10-15 segundos aparece el tono, he probado a marcar entonces, pero al tercer dígito pulsado, suena la típica señal de comunicando.

La última vez que paso, me di cuenta por la noche. Traté de llamar al 1004 pero, no sé por qué, desde el móvil no me deja. Al día siguiente ya estaba reestablecido el servicio.

¿Qué perrerías estará los Timofónicos haciendo en la central?

Semana tranquila

La semana tras el puente ha sido muy tranquila… quizás demasiado.

Tenía previsto continuar con un proyecto, pero a última hora se paralizó, así que, no he tenido ni excursiones ni sobresaltos. Aunque mucha acción puede ser estresante, un poco se echa de menos.

Lo más interesante fue cenar el viernes en Wagaboo, un restaurante muy “moderno” en el que, sinceramente, no entraría de motu proprio, pero que me sorprendió gratamente.

La comida era muy interesante, y lo digo yo, que soy un poco especial comiendo, además que el precio no es desorbitado… en mi opinión como un Gino’s, con un servicio con diferencia mucho mejor (¿el pinganillo que llevan los camareros tendrá algo que ver?), una presentación cuidada y unos platos muy variados (la carta no tiene muchos, pero todos muy distintos).

Al entrar no me di cuenta, pero la próxima vez que vaya pediré pasta: en la cocina, separada con un cristal que te permite ver todo, había un cocinero oriental que no dejaba de hacer fideos (no creo que se llamen espaguettis si son orientales…), estirando una y otra vez la pasta hasta hacer largos filamentos.

"Halta Seguridaz" en Carrefour

Acabo de venir de comprar en Carrefour. Como sólo llevaba tres cosas, pasé por las “auto-cajas”, en las que te sirves tú mismo, pues generalmente están vacías y para pocas cosas es más rápido. El único problema es que no reconozca algún artículo o la báscula que tienen no dé por bueno un producto pensando que has metido otro en la bolsa).

Pues bien, tras terminar de pagar con la tarjeta, salgo haciéndome el loco, a modo de prueba de concepto. En ese momento, me para el responsable de las “auto-cajas”. Me indica que debo firmar el recibo, al igual que todo pago con tarjeta. Lo firmo y procedo a largarme cuando me dice que también debo enseñar el DNI
y la tarjeta con la que he pagado.

Ahí viene lo bueno, le enseño mi DNI (pues no tengo otro) y otra tarjeta de crédito que no usé para pagar. No se dieron ni cuenta y pude salir sin problemas. ¿Qué comprueban al enseñar el DNI y la tarjeta?, ¿en tan poco tiempo les da tiempo a verificar el nombre?, ¿no podrían verificar los cuatro últimos dígitos del recibo y la tarjeta de crédito?.

En Portugal, para evitar esto, el cliente debe teclear el número secreto de la tarjeta (como al sacar en un cajero automático), lo que, si se uniese a la verificación del DNI creo que haría el método más robusto.

Magufos en la UAH

Tengo en mi poder un libro con los estudios propios de postgrado y masters de la  Universidad de Alcalá de Henares (no sé por qué la llaman de Alcalá a secas).

Pues bien, tienen la caradura de ofrecer el curso de “Osteopatía, primer nivel a quinto nivel”. Para colmo, es la XVII edición.

En la Wikipedia creo que queda bastante claro que la osteopatía es una farsa, como la acupuntura, los chacras, el agua imantada, las pulseras con imanes….

¿Por qué un centro que debe estar en la cima científica e intelectual se dedica a enseñar magufadas?, ¿qué hace la facultad de medicina permitiéndolo?, ¿quién es el magufo que desde dentro lo permite?.

¿Para cuándo un máster en ovnis?, ¿cuándo nombrarán honoris causa a “Fríker”?