Actualización: Recomiendo que miréis el artículo motionEyeOS vigilando con la Raspberry Pi
He ayudado, un poco, a preparar un proyecto de vídeo vigilancia con Motion para detectar intrusiones.
Solo contaré aquí la parte correspondiente a la Raspberry Pi, hay otra parte adicional que consiste en un servidor con Nagios que monitoriza si hay nuevas imágenes en la carpeta dónde se guardan éstas cuando se detecta movimiento.
Para ello se dispuso de:
- Raspberry Pi B o Raspberry Pi B+
- Webcam Logitech
- Un sistema complementario, otro servidor con Nagios en este caso, que se encargue de comprobar que hay imágenes guardadas por detectarse movimiento y haga las tareas adicionales de guardado, encriptado (más o menos conforme a la LOPD) y envío.
- Sistema Operativo montado en Raspberry Pi (a partir de ahora RPi) -> Raspbian en su versión 1.3.10 con fecha 12.09.2014. En caso de querer cambiar alguna configuración del sistema operativo:
sudo raspi-config
- IP del sistema = necesitamos que sea una IP fija
- Usuarios utilizados:
- Pi -> con permisos de sudo
- Root -> usuario root de la máquina
Las imágenes con movimiento detectado se guardan en /var/www/pi/
Directorios y ficheros importantes del dispositivo:
/tmp/motion/
/home/pi/img-seguridad/
/home/pi/img-cifradas/
/home/pi/script/
/home/pi/cp-seg-img/
(aquí van las archivos que se traen del servidor para comprobar que se han pasado correctamente)/home/pi/encriptador.rpi
/home/pi/img-cifradas/verificacion-md5.asc
/etc/motion/copias
Servicios, paquetes instalados y necesarios para el cometido:
- Motion (servicio para videocámara)
- Postfix (para poder mandar correos)
- gpg2 (para encriptar ficheros)
- md5sum (para asegurar la integridad de los ficheros)
- crontab (pone los horarios para activar el servicio motion)
- ffmpeg (utilizado por motion para crear los archivos de vídeo)
Configurando Motion
Una vez instalados se configura el archivo motion.conf que se encuentra en el directorio /etc/motion/
. Los parámetros que tienen que ser modificados son:
- Daemon -> cambiamos daemon off por on
- target_dir [path] -> se añade el path el cual queremos que vaya guardando las capturas
- snapshot_filename -> cambia el nombre con el que se guardan las capturas
- jpeg_filename -> cambia el nombre con el que se guardan las capturas con movimiento detectado. Por ejemplo: evento-fecha-numero_frame.jpg
- webcam_port -> puerto por el cual se puede acceder a las capturas que se están haciendo en el momento. Por ejemplo: 8001
- control_localhost -> lo ponemos a off para que no conecte únicamente con localhost y podamos hacerlo en remoto
- on_motion_detected [path] -> en caso de detectarse movimiento (cambio de valores entre píxeles) se ejecutará el script cuyo path ha sido facilitado.
- ffmpeg_cap_new -> lo ponemos a on para que cree archivos de vídeo cuando capte movimiento
- ffmpeg_video_codec -> en que formato queremos que se guarden los vídeos
Para activar servicio en modo debug: sudo motion -n
Para activar el servicio: sudo service motion start
Para parar el servicio: sudo service motion stop
Script para el proceso tras la detección
Nagios estará monitorizando el estado del directorio /home/pi/img-seguridad/ y /home/pi/video-seguridad/, tras varias comprobaciones de la existencia de un nuevo archivo ejecutará el script /home/pi/encriptador.rpi, tenemos que pasarle un argumento, –imagenes o –videos para encriptar y mandar uno u otros archivos. Este programa copia los archivos del directorio a /home/pi/img-cifradas/
o /home/pi/video-cifrados
donde los encripta, crea un fichero md5 para mantener la integridad y los envía a raspi@ip_fija_sistema:/var/www/pi/imagenes o a /videos.
Luego, para desencriptar las imágenes, se debe ejecutar el script descript que se encuentra en el directorio /var/www/script/, igualmente hay que indicarle si queremos imágenes(–imagenes) o vídeos(–videos). Este comprueba la integridad de los ficheros, y en el caso de ser fiables los desencriptará, por otro lado, si no se ha mantenido la integridad de estos los dejará tal cual y avisará al usuario de ello.
Los nombres de los archivos seguirán el siguiente patrón:
- Imágenes: LOCAL-img-FECHA|HORA.jpg
- Vídeos: LOCAL-mov-FECHA|HORA.avi
Con Crontab podemos controlar las horas a las que funciona el servicio motion. Y hacer una limpieza periódica de temporales, por ejemplo: borrar cada minuto los archivos con extensión jpg que haya en /tmp/motion/
Los scripts están en GitHub con el twitter del autor y lo más importante:
Gracias a @bollit0