Wednesday, May 21, 2008

Mejorando el sistema de videovigilancia: vídeo en tu móvil (2)

Pasadas unas semanas desde que publiqué el sistema de vigalancia casero, me apetecía mejorarlo un poco, quería que además de que guardara constancia del ladrón, pudiera acceder a sus imágenes y vídeos allá donde estuviera. Sin necesidad de tener el portátil delante y con la única condición de tener una conexión a Internet, ya fuera GPRS, UMTS o WIFI para acceder desde mi móvil Nokia N80.

Así que me puse manos a la obra, tomé alguna idea de otros sistemas, y modifiqué partes de código según mis necesidades.
Así el nuevo sistema, ya no envía por email las fotos y vídeos del intruso, sino que las sube a mi servidor ftp y desde allí puedo acceder a ellas, desde una carpeta protegida por contraseña en el servidor web del mismo servidor.

¿Pero cómo poder ver los vídeos desde el móvil? el N80 como otros muchos de Nokia sólo nos permite determinados formatos y a una resolución determinada. También hubiera sido posible la retransmisión en directo desde mi casa al móvil mediante streaming rtsp y el visor incorporado en el N80, leí un poco de información relativo al streaming rtsp para N80 y casi todo eran problemas, además de que para cuando yo me conectara a ver lo que ocurriera en casa puede que el intruso ya no estuviera en el campo de visión o bien hubiera desconectado mis ordenadores.
Por esta razón lo que hago es subir inmediatamente las imágenes en jpg por una parte y por otra los vídeos del intruso en formato 3gp, mediante conversión gracias a ffmpeg.

Así en el momento en que el servidor de seguridad motion escribe una imagen en el disco duro, ésta es subida al ftp y cuando motion cierra un vídeo, éste vídeo se codifica en 3gp con resolución 352x288 y también se sube al ftp. Finalmente las imágenes y vídeos subidos se almacenan en un directorio a parte.

A continuación incluyo el código de mi archivo de configuración de motion(parte de el) /etc/motion.conf, y el script de envió de vídeo al servidor (el de imágenes es parecido).


# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by gap
on_event_start java /home/daniel/java/gdata/java/src/EnviaSMS usuario password "http://miservidor.es/micarpetasegura/"

# Command to be executed when an event ends after a period of no motion
# (default: none). The period of no motion is defined by option gap.
; on_event_end value

# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# To give the filename as an argument to a command append it with %f
on_picture_save /home/daniel/motion/base/usr/bin/upload-pictures.sh %f

# Command to be executed when a motion frame is detected (default: none)
; on_motion_detected value

# Command to be executed when a movie file (.mpg|.avi) is created. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_start value

# Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
# To give the filename as an argument to a command append it with %f
on_movie_end /home/daniel/motion/base/usr/bin/upload-videos.sh %f


upload-videos.sh


#!/bin/sh
FILE=`echo $1 | awk '{print substr($1,19,17)}'`
ffmpeg -i "/home/daniel/motion/$FILE.avi" -ar 128000 -ac 1 -acodec aac -vcodec mpeg4 -s 352x288 -r 24 -b 350 -ab 32 "/home/dani/motion/$FILE.3gp"
#upload ftp
HOST='ftp.tuservidor.es'
USER='*********'
PASSWD='***********'
echo $1 | awk '{print substr($1,19,23)}'
echo "el nombre del file es: "
echo $FILE
cd /home/daniel/motion/
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /www/tucarpetasegura/videos
put $FILE.3gp
quit
END_SCRIPT

#move to uploaded
mv /home/dani/motion/$FILE.avi /home/daniel/motion/uploaded/videos
mv /home/dani/motion/$FILE.3gp /home/daniel/motion/uploaded/videos
echo "$FILE moved to the ftp server"
exit 0


Nótese que el texto del mensaje es la dirección URL donde se encuentran nuestros vídeos. Por ejemplo http://miservidor.es/directorioconpass/videos. Así, pasado un minuto y algo más desde que motion detecta al malo, podremos verlo en nuestro móvil y avisar con certeza a la policía.

Enlaces:
Sistema de videovigilancia 1
Sistema de seguridad casero
Usando el API de Google Calendar: Alarmas por SMS

Monday, May 19, 2008

Como hacer reserva (cutre) de DHCP en router Comtrend CT-5361

Me río yo de los routers que ofrece Telefónica con sus líneas adsl, concretamente del que pongo en el título. Estaba intentando hacer una reserva de dhcp por dirección MAC, algo bastante normalito para un demonio de dhcp y me doy cuenta de que no es posible desde la pagina web de configuración.

Pensé, bueno igual tiene acceso ssh y puedo trastear algo, efectivamente tiene acceso ssh pero las opciones disponibles son las mismas que desde la web, vamos que se lo podían haber ahorrado. ¿Por qué esta manía de capar los firmwares? parece que inciten a la gente a flashearlos...

En fin si a alguien se le ocurre hacer lo más parecido a una reserva debe cambiar el "lease time" del servidor DHCP, yo he puesto concretamente a 5 años de "lease time", 43824 horas que con la ups y si no me harto antes del router guardará su dirección IP, eso si no salta alguna sorpresa más de este router.

A menuda cutrez nos obliga Comtrend y Telefonica, si alguien quiere revisar su manual, sólo existe un manual de usuario , no esperes comandos en shell eso es para colgados.

Saturday, May 17, 2008

Redes wireless mesh con la Fonera para fines sociales

Hace poco se me ocurrió la idea de montar una red wireless de tipo mallado (redes mesh) de bajo coste y con software libre. No había tenido oportunidad de mirar el tema hasta hace unos días.

El hardware con el que contaba era limitado, una fonera, ya que el router Comtrend que viene con mi conexión Adsl no tenía mucha pinta de ser flasheable con un nuevo firmware. Así empecé a buscar información sobre redes malladas y dí con el proyecto de Antonio Anselmi , open-mesh.
Su firmware open source está orientado a hardware de bajo coste, tipo los routers de Fon, y provee de toda la funcionalidad de las redes mesh.

Como además creo que para promover el software libre y las obras sociales son necesarios recursos, busqué algún software para montar un hotspot sobre la red, pensaba que aquí debería dedicar más tiempo en programación, pero encontré wifi-cpa , un portal cautivo "llave en mano" que ofrece servidor radius y control de pagos, con una cuenta gratuita de hosting para un sólo punto de acceso, compatible con redes mesh, con usuarios ilimitados, y donando el 100% de las ganancias al mantenedor de la red.

Así que dicho y hecho, cogí mi fonera flaseada previamente con dd-wrt (ya pasé aquello de activar redboot y acceso ssh hace tiempo) le conecté un cable ethernet desde mi pc y flashee el firmware open-mesh adaptado a foneras 2100.

Una vez ya tienes la fonera con el nuevo firmware sólo tienes que conectarla a tu router por cable ethernet, desconectar la alimentación de la fonera y conectarla de nuevo para que tomé su ip por dhcp del router. Luego desde la pagina de configuración de tu router principal miras la tabla dhcp y observas la dirección mac que tiene la fonera, la apuntas, y te vas al "dashboard" de openmesh.com y le das a "add network" rellenas todos los datos y en media hora tu fonera actualizará su firmware si es necesario y podrás observar las características de su conexión desde el panel de control.

Para añadir el hotspot wifi-cpa, deberás indicar en el dashboard de openmesh que quieres utilizar firmware de test desde Edit network y show advanced options. Así pasados unos 15 minutos tu fonera actualizará su firmware y ya será compatible con wifi-cpa hostspot, sólo tendrás que crear una nueva cuenta en wifi-cpa y registrar tu punto de acceso.

Así y después de todo este proceso ha nacido Atocha Wifi un punto de acceso de bajo coste el cual destinará todas sus ganancias a obras sociales, de caridad, comunidades o software libre. Si te interesa colaborar con el proyecto sólo tienes que ponerte en contacto conmigo.

El punto de acceso es ampliable gracias a la funcionalidad mesh tipo RO.B.IN:

ROBIN (ROuting Batman Inside) is an Open Source mesh network project, deployed on top of OpenWRT kamikaze, running on any Atheros AP51 routers such as Meraki Mini or La Fonera and using the BATMAN routing algorithm.
ROBIN spreads a wired internet connection such as a DSL throughout an apartment complex, neighborhood, village or school, and work on a variety of commonly available, low-cost hardware.


AVISO: el firmware de test de open-mesh, como su nombre indica es sólo de test, no se te ocurra utilizar este firmware para una red en producción. Utiliza el firmware beta.

Tuesday, April 29, 2008

Como configurar una Hauppauge WinTV-HVR-4000 en Ubuntu Hardy 8.04

[Actualizado 21/11/2008]
El wiki de linuxtv.org para la HVR 4000 ha sido actualizado, y para hacer funcionar la tarjeta viene muy bien sin tener que parchear el driver de v4l-dvb con "patch". Funciona tanto para TDT como para Satélite, ojo la orientación de las antenas es importante, así que asegúrate que tus antenas se orientan a la estación base o satélite correspondiente :-)

Pruébalo antes de seguir este tutorial, si no te funcionara, que seguro que sí, sigue este método. En los comentarios de la entrada se encuentra un backup del patch, por si no funciona el wget.
Si quieres hacer funcionar el mando con kaffeine, mira la entrada que he escrito al respecto.

Hace ya algún tiempo que se me quedó clavada una espina al no poder hacer funcionar "completamente" sobre software libre mi tarjeta de televisión, concretamente el modelo que cito en el título.

Esta tarjeta, es una sintonizadora híbrida de Alta Definición con 5 formatos de TV: Televisión Satélite Alta Definición, TDT Alta Definición, TDT, Televisión Digital Satélite y TV Analógica, también permite la sintonización de canales de radio analógicos y digitales. Vamos un todo en uno cuyo único inconveniente es que sólo tiene un sintonizador, con lo que sólo puedes sintonizar y grabar un mismo canal, no puedes ver por ejemplo un canal en tdt y grabar otro en satélite.

El caso es que su desarrollo en linux está nunca mejor dicho en desarrollo y los drivers existentes son muy experimentales, aunque siguiendo los pasos correctos podrás hacerla funcionar en linux.
Partimos de una instalación limpia de el nuevo y flamante Ubuntu Hardy 8.04.



sudo apt-get install mercurial patch

Instalación del Firmware:
*************************
1) Primero guardamos el archivo : "wget ftp://167.206.143.11/outgoing/Oxford/88x_2_119_25023_WHQL.zip"

2) Descomprimimos lo necesario : "unzip -jo 88x_2_119_25023_WHQL.zip Driver88/hcw88bda.sys"

3) Ponemos el firmware en su sitio : "dd if=hcw88bda.sys of=/lib/firmware/tukernel/dvb-fe-cx24116.fw skip=81768 bs=1 count=32522"

Instalación del Driver:
***********************
En este caso yo he utilizado los de tipo multifrontend, que son los que nos permitiran seleccionar canales tanto de tdt como de satélite.

#puede que los modulos cx88 que vienen por defecto en ubuntu sirvan para otro modelo de tarjeta, ahora, lo que sé seguro es que para la hvr4000 no funcionan. Por eso borramos a continuación.

sudo rm -r /lib/modules/tukernel/ubuntu/media/cx88

#No todas las versiones de los drivers v4l-dvb funcionan a la hora de compilarlos para esta tarjeta, la versión que si funciona en Ubuntu Hardy 8.04 es la siguiente:
cd /usr/src/
hg clone -r 127f67dea087 http://linuxtv.org/hg/v4l-dvb

# nos bajamos el ultimo parche estable para el driver

wget http://dev.kewl.org/hauppauge/mfe-7285.diff

#aplicamos el parche
patch -d v4l-dvb -p1 <>

He probado con Kaffeine y funciona perfectamente tanto en tdt como en satélite, lastima que Hispasat no emita ningún canal abierto en HD. Todo será cuestión de buscar otro satélite ;-)

Actualización:

1.- Los soft links que creamos en el paso final, desaparecerán si reiniciamos, así que lo mejor es crearlos cuando nuestro linux se carga, para ello nk82 explica en los comentarios cómo crear un script de inicio en /etc/init.d/

2.- Si decides instalar Mythtv y añades todas las sintonizadoras de la tarjeta (tv analogica, tdt y satélite) cuando ubuntu carga el mythbackend dedsde /etc/init.d/ produce que nuestro kernel de errores con el firmware, puede que mythtv esté intentando acceder al firmware antes de que se haya cargado correctamente, no estoy seguro. El error es del estilo " kernel: [ 5001.194966] cx24116_readreg: reg=0x9d (error=-121)". Para pasarlo por alto lo que he hecho yo de primeras ha sido un sudo update-rc.d -f /etc/init.d/mythtv-backend remove , así no se cargará al inicio. Deberemos ejecutarlo manualmente.

3. Debido a las incompatibilidades de este driver con las webcam usb, de primeras no podrás hacer funcionar tu webcam y la tarjeta al mismo tiempo. Hace algún tiempo públique esta incompatibilidad en la lista de distribución de linuxtv-dvb y hasta la fecha nadie ha contestado. Parece que hay gente que lo ha conseguido, pero ha tenido que compilar de nuevo el kernel y hacer un make-kernel links, si quieres más información lee la información que envié a la lista de distribución de linux-tv.
También gracias a nk82 que me dió la idea, puedes salvar este pequeño inconveniente si utilizas la entrada analógica de la propia tarjeta!!, así deberás utilizar el cable conversor de s-video a RCA que viene con la propia tarjeta, no utilices otro porque puede que no te funcione y te vuelvas loco pensando cual es el problema. Este conector de s-video tiene 7 pines y captura en color, con uno de 4 pines conseguirás capturar en blanco y negro.
Busca alguna cámara que tenga salida de rca de vídeo y cuando configures tu programa con webcam configúralo con la entrada Composite, si no te funciona prueba con s-video.


Agradecimientos a:
Ian Bonham, Hagen Schöbel, nk82 y demás colaboraciones de la lista de distribución linux-dvb at linuxtv.
También a la documentación existente en el wiki de linuxtv.org
y a lo que fue mis inicios y peleas con esta tarjeta en el post de Vicente Navarro sobre la hvr-3000

Tuesday, April 22, 2008

Nuevos capítulos de Redes


y como ya no tenemos stage 6 y estos programas requieren un poquito de calidad, que mejor manera de compartir aquello que nos es imposible ver los Lunes en su madrugrada.

Torrent - Redes nº 449 - "Toda vivencia implica un cambio en el cableado de nuestro cerebro"

http://torrents.thepiratebay.org/4151605/Redes-449-Xvid_-_Toda_vivencia_implica_un_cambio_en_el_cableado_.4151605.TPB.torrent

Monday, April 07, 2008

Sunday, March 16, 2008

Cursos gratuitos en Madrid e Islas Baleares

El Servicio de Formación Continua de la Universidad Politécnica de Madrid junto con Comisiones Obreras,el INEM y más entidades, ponen a disposición de trabajadores y desempleados una relación de cursos gratuitos online.
Para realizarlos sólo necesitas un ordenador y una conexión a Internet para acceder al aula de formación virtual desde dónde se lleva el seguimiento de la clase. Una interfaz funcional y bien diseñada que permite llevar una buena estructuración del curso y de los exámenes.

Yo estoy realizando uno de estos cursos concretamente el denominado "Experto en Java orientado a comunicaciones" (jeje necesitaba reciclar un poco los conocimientos de la Uni).
Recomiendo que le echéis un vistazo porque la verdad que están muy bien.

http://www.upm.es/fcontinua/forcon.html

Sunday, March 02, 2008

Sistema de grabación remoto

Hace unas semanas me hice con una magnífica tarjeta capturadora de televisión HVR4000 y la monté sobre mi barebone Asus, la verdad que funciona muy bien y la calidad que consigue tanto para satélite como para tdt es muy buena sobre una pantalla Dell de 22 pulgadas panorámica.

El caso es que ayer me llamó mi mamá diciéndome que se le había estropeado de nuevo el vídeo vhs y que si podía hacer algo para grabar su serie favorita y que ella la pudiera ver por la noche. Teniendo en cuenta que yo estoy en Madrid y ella en Alicante, decidí sacar un poco de partido a la tarjeta capturadora y realizar un pequeño script que grabara la serie en cuestión, la comprimiera y la enviara a su ordenador de Alicante. Todo ello sin que yo tuviera que preocuparme por pulsar una sola tecla de mi ordenador.

Se me ha quedado una espina clavada, y es no haberlo conseguido sobre Linux, debido a que cuando instalé los drivers en desarrollo de la citada tarjeta de tv, dejó de funcionarme la webcam, pero en cuanto esos drivers estén un poco más maduros su aplicación en Linux es incluso más sencilla que sobre Window$.

Para poder realizarlo sobre Window$ he utilizando MediaPortal una suite Multimedia de código abierto, esta aplicación será la encargada de realizar la grabación de la serie de Lunes a Viernes a la misma hora, programable desde la misma aplicación. El archivo generado por MediaPortal es del tipo dvr-ms (Microsoft Digital Video Recording), un formato propietario de Micro$oft que nos dificultará un poco su transformación. Este tipo de archivo ocupa una gran cantidad de espacio en el disco duro que necesitamos comprimir de alguna manera para poder enviar el archivo resultante a través de Internet.

Los programas que he utilizado para procesar tanto video como audio son: DVRMSToolbox para la transformación del formato dvr-ms a MPEG, y Dr. Divx 2.0 OSS para la compresión desde MPEG a DivX

Una vez adecuado el archivo, utilizo cygwin tanto en el cliente como en el servidor y mando el archivo mediante scp (secure copy) desde Madrid a Alicante.
Para poder utilizar scp sin tener que introducir la clave del servidor he añadido la clave pública del cliente en el directorio correspondiente del servidor:

# Genero las claves
dani@madrid:~$ ssh-keygen -t rsa -b 1024
#Con esto se generará en ~/.ssh/ dos ficheros, id_rsa(clave privada) y id_rsa.pub(clave pública)
# Copio la clave pública del cliente a la máquina destino.
dani@madrid:~$ssh dani@alicante "cat >>~/.ssh/authorized_keys" <~/.ssh/id_rsa.pub
#Realizar un ssh para comprobar que accedemos sin que nos pida la clave
dani@madrid:~$ ssh dani@alicante

Finalmente sólo resta crear una tarea programada por la noche que se encargue de ejecutar nuestro .bat el cual realizará el proceso de compresión y envío.
A continuación detallo el mío:

rem Script graba.bat

Set hora=%time:~0,2%
Set Year=%date:~8,2%
Set Month=%date:~3,2%
Set Day=%date:~0,2%

rem Renombramos los ficheros para tener su fecha en el nombre
cd C:\Documents and Settings\Daniel\Mis documentos\My Recordings
mv Telecinco*.dvr-ms Telecinco%hora%_%Day%_%Month%_%Year%.dvr-ms

cd C:\Archivos de programa\DVRMSToolbox

rem Realizamos conversión a MPEG
DVRMStoMPEG.exe /if="C:\Documents and Settings\Daniel\Mis documentos\My Recordings\Telecinco%hora%_%Day%_%Month%_%Year%.dvr-ms"
/OF="C:\Documents and Settings\Daniel\Mis documentos\My Recordings\Telecinco%hora%_%Day%_%Month%_%Year%.mpg" /act=dvrmstompg

cd C:\Archivos de Programa\DivX\Dr. DivX 2.0 OSS\

rem Realizamos conversión a DivX
cli -i "C:\Documents and Settings\Daniel\Mis documentos\My Recordings\Telecinco%hora%_%Day%_%Month%_%Year%.mpg"
-o "C:\Documents and Settings\Daniel\Mis documentos\My Recordings\Telecinco%hora%_%Day%_%Month%_%Year%.divx"

cd C:\Documents and Settings\Daniel\Mis documentos\My Recordings

rem Copiamos mediante copia segura
scp Telecinco%hora%_%Day%_%Month%_%Year%.divx dani@miserver.homeip.net:"/cygdrive/c/Documents\ and\ Settings/Daniel/Mis\ documentos/Serie/"

echo "TRANSMISIÓN FINALIZADA"

rem Muevo el fichero pesado a la partición donde tengo más espacio
mv Telecinco%hora%_%Day%_%Month%_%Year%.dvr-ms H:\dani\MyRecordings

echo "ARCHIVO DVR-MS MOVIDO AL ALMACEN"


ACTUALIZACIÓN: Super Coco añade en los comentarios como realizar una mejora al sistema, utilizándolo como si de un backup se tratara, utilizando rsync desde cygwin, esto supone una gran mejora con respecto a scp, ya que si scp fallara a mitad de transmisión sería necesario empezar de nuevo el envío.
Así bastaría cambiar en el script la línea de envío donde aparece scp por esta otra:
#la opción --rsh nos permite especificar un puerto de ssh distinto del estandard como necesitaba en mi caso ;-)
rsync -av --partial --stats --progress --delete --rsh='ssh -p1234' dirA dani@alicante:/cygdrive/c/dirB

Wednesday, February 20, 2008

Cómo miraban al cielo los antiguos y los niños


Actualización: Stage 6 ha parado de dar alojamiento de videos, así que el documental, ya no se puede ver :-(

Ya que Eduardo Punset sigue con nosotros y sigue a esas horas tan difíciles para uno de los pocos programas que merecen la pena, he decido que pondré por aquí los enlaces a los programas para que podamos disfrutarlos. Todo ello servido gracias a la gran calidad de stage 6, y sin la necesidad de dividir el video en varias partes. Disfrútenlo ;-)


Saturday, February 02, 2008

Sistema de videovigilancia casero

Tenía pendiente desde hace algún tiempo este tema y finalmente me he puesto para completarlo.
El sistema de vigilancia implantado está realizado totalmente con herramientas de software libre y con el menor coste posible.

El software detecta si hay movimiento en un espacio determinado mediante una webcam conectada a un Ubuntu 7.10. Si el programa está activado, éste se encargará de detectar la presencia de un extraño y capturar tanto vídeo como imágenes del intruso, las almacenará en el disco duro y enviará dos emails, uno con las imágenes adjuntas y otro con el vídeo captado. Además también generará un evento en google calendar y enviará un aviso inmediatamente al móvil asociado a la cuenta de google. También he añadido que en el momento en el que el intruso genere el evento se escuchen sonidos de sirenas de policía por los altavoces del equipo.

La parte de detección de movimiento se realiza gracias al maravilloso programa Motion, el cual es totalmente configurable desde /etc/motion/motion.conf.
Para la parte de envío de emails con adjunto he utilizado la herramienta Mutt, instalando previamente la mta de sendmail para el envío de correos al exterior.

sudo apt-get install motion sendmail mutt

El envío de mensajes a móviles viene gracias a Iván Lopez y el código que he utilizado es exactamente el que publicó en su blog, por cierto gran blog ;-), éste código consiste en un programa Java que utiliza las librerías de la API de Google Calendar para generar un evento en nuestro calendario y enviar un mensaje de texto a nuestro móvil con el evento.

El sistema puede ser ejecutado de manera manual o bien programando su ejecución y parada desde el cron de linux.
Yo me he puesto dos iconos en el escritorio, uno llamado "conecta_alarma" y otro "apaga_alarma".

conecta_alarma nos lleva al lanzador:

sh /home/daniel/src/ejecuta_motion_retardo.sh


El lanzador de apaga_alarma:

killall motion


conecta_alarma llama al script ejecuta_motion_retardo:

daniel@miequipo:~/src$ more ejecuta_motion_retardo.sh
sleep 60s
motion -c /home/daniel/src/motioncas.conf -n


El cual realiza una pausa de 60 segundos antes de ejecutar motion, más que nada para que de tiempo a retirarse del campo de visión de la cámara y no generar falsas alarmas.
Una vez pasados los 60 segundos se ejecuta motion con una configuración personalizada que a continuación adjunto:


daniel@miequipo:/$ more /home/daniel/src/motioncas.conf
# Minimal motion example config file provided by the
# Debian motion package - for basic webcam operation.
#
# You most certainly want to investigate
# /usr/share/doc/motion/examples/motion-dist.conf.gz
# for further configuration options. Also, refer to the
# motion man page and /usr/share/doc/motion/motion_guide.html
# for detailed information on configuration options.

daemon on
quiet on

# You may very well need to change this (check with 'dmesg'
# after plugging in your webcam).
videodevice /dev/video1

# Image size in pixels (valid range is camera dependent).
width 640
height 480

framerate 25
quality 85
auto_brightness off

# General threshold level and noise threshold
# level (for distinguishing between noise and motion).
threshold 4500
noise_level 64

# Initial brightness, contrast, hue (NTSC), and saturation.
# 0 = disabled (valid range 0-255).
brightness 0
contrast 0
saturation 0
hue 0

# Encode movies in real-time (install ffmpeg before enabling).
ffmpeg_cap_new on

# Codec to be used by ffmpeg for the video compression.
# Supported formats: mpeg4, msmpeg4.
ffmpeg_video_codec msmpeg4

# Target base directory for pictures and films (you may need
# to change this (or change its permissions) depending on
# which system user runs motion).
target_dir /home/daniel/Desktop/Video_vigilancia

# Define a port number (e.g. 8000) to enable the mini-http server.
# 0 = disabled.
webcam_port 4000

# Set to 'off' to allow anybody (not just localhost) to view the
# webcam via the mini-http server (http://hostname:port).
webcam_localhost on

webcam_quality 50
webcam_maxrate 8
#time between to generate new event and new video
gap 20
on_event_start sh /home/daniel/src/control.sh


En el archivo de configuración he realizado algunos cambios, habilito el servidor de video webcam_port en el puerto 4000, selecciono mi dispositivo de webcam videodevice /dev/video1, establezco un gap para especificar que un nuevo evento se produzca sólo si pasan 20 segundos sin cambios de video, y realizo la llamada a un script llamado control.sh cuando se genere on_event_start,

"An event starts at first motion detected after a period of no motion defined by gap. You can use ConversionSpecifiers and spaces as part of the command"


Finalmente control.sh hace lo siguiente:

daniel@miequipo:/$ cat /home/daniel/src/control.sh
#!/bin/bash
sh /home/daniel/src/enviaSMS.sh micorreo@gmail.com miclave "INTRUSO EN CASA,llama al 112" &

vlc /home/daniel/Music/sirena_policia.mp3 &

date > /home/daniel/Desktop/Video_vigilancia/snapshot.txt

sleep 8

tar -cvvf /home/daniel/Desktop/pillado_imagen.tar /home/daniel/Desktop/Video_vigilancia/*.jpg --after-date /home/daniel/Desktop/Video_vigilancia/snapshot.txt

tar -cvvf /home/daniel/Desktop/pillado_video.tar /home/daniel/Desktop/Video_vigilancia/*.avi --after-date /home/daniel/Desktop/Video_vigilancia/snapshot.txt

date > /home/daniel/Desktop/Video_vigilancia/snapshot.txt

mutt -a /home/daniel/Desktop/pillado_imagen.tar -s "Imagenes del intruso" micorreo@gmail.com < /dev/null
mutt -a /home/daniel/Desktop/pillado_video.tar -s "Video del intruso" micorreo@gmail.com < /dev/null


Este script se ejecuta generado por un evento en motion y lo primero que hace es mandarnos un mensaje al móvil diciéndonos que algo o alguien está moviéndose delante de nuestra cámara, luego lanza las sirenas de policía a todo trapo y en segundo plano para no perder tiempo. Luego almacena la fecha y hora en el fichero snapshot.txt, esto lo hago para controlar qué archivos voy a comprimir y enviar por email, descartando así los vídeos e imágenes de anteriores alarmas.
Para no demorar el envío de los emails, establezco un retardo de 8 segundos antes de comprimir y enviar los correos con esos 8 segundos de capturas.

Nota: para que el montaje se ajuste a tus necesidades es muy importante afinar el archivo de configuración de motion a las características de tu cámara. Y la única manera de hacerlo es prueba y error, deja el sistema encendido cuando no estés en casa y no te asustes si te llegan alarmas, estas primeras alarmas te servirán para afinar tu sistema.
Si a alguien se le ocurriera alguna forma de mejorarlo, todos agradeceríamos los comentarios ;-)