Motion (detección de movimiento) con Raspberry Pi

Motion es uno de los programas más populares para utilizar con webcams, cuya utilidad es la de detectar movimiento; en este caso vamos a configurar Motion en Raspberry Pi 3.

 
motion raspberry pi
 

 
Existen otras opciones como por ejemplo utilizar Python, pero a nosotros nos interesa crear un sistema de vigilancia casero con webcams simples, mostrar la configuración de Motion en Raspberry Pi, y ver cómo configurar más de una cámara que detecte movimiento, y todo con una pequeña Raspberry, aunque por supuesto también podemos utilizarlo en un ordenador, una torre, un equipo más potente con Linux.
 
* Esta guía está preparada para funcionar con Raspbian Stretch (mejor si usamos la versión Lite ya que irá más ligera).

(Con Raspbian Jessie cambian algunas cosas como dependencias, paquetes .. ).
 

 

En este artículo:

 

 

1. Instalar Motion en Raspberry Pi

 

  • Lo primero, deberíamos actualizar el sistema:
apt-get update
apt-get upgrade

 

  • Ahora podremos instalar motion con:
sudo apt-get install motion

Motion se instalará en /etc/motion

 

  • Desinstalar librerías que podrían crear conflicto con Motion:
apt-get remove libavcodec-extra-56 libavformat56 libavresample2 libavutil54

 

  • Instalamos otras librerias que utiliza Motion:
apt-get install libmariadbclient18 libpq5 libavcodec57 libavformat57 libavutil55 libswscale4

 

 

2. Enchufar las Webcams por USB y comprobar estado

 
Ya tenemos Motion instalado, pero antes de comenzar con la configuración, vamos a ver si nuestro sistema Raspbian detecta correctamente las webcams instaladas (en este caso vamos a comenzar con una webcam; en artículos posteriores veremos cómo conectar más webcams).

Esto lo podremos hacer con el comando

lsusb

 

Este comando mostrará info acerca de los dispositivos USB conectados a nuestra Raspberry Pi 3.

lsusb raspberry motion
 
o con
 

ls /dev/video*

nos mostrará todos los dispositivos de video conectados (webcams y otros)

ls /dev/video
 

 
Podemos ver que se encuentra conectado un teclado , un Pendrive USB Kingston, un ratón, y una webcam USB que aparece con el nombre de GEMBIRD.
 

 

3. Configurar archivo principal de Motion (motion.conf)

 
Primero hemos de configurar el archivo de configuración principal de Motion (el archivo /etc/motion/motion.conf) que nos servirá para a su vez llamar a otros archivos de configuración en el caso de que tengamos más de una cámara así que podremos crear un archivo de configuración específico y diferente para cada Cámara
 
Aquí vemos un ejemplo del archivo motion.conf por defecto.

 

archivo motion.conf por defecto
 
Vemos que una de las principales líneas de las primeras líneas es la línea que detecta el dispositivo webcams a utilizar;

podemos ver la linea videodevice /dev/vídeo
 
Y como antes hemos comprobado que nuestra Raspberry ha detectado la webcam, y aparece como el dispositivo /dev/video0 ;

comprobamos que en el archivo motion.conf aparezca

videodevice /dev/video0

 

 

4. Parámetros básicos de motion.conf para comenzar con Motion en Raspberry Pi

 
Primero vamos a configurar el daemon para que inicie en cada inicio:

editamos el archivo /etc/default/motion

y lo ponemos en yes:

start_motion_daemon=yes

 

Y ahora configuraremos las siguientes opciones básicas del archivo motion.conf y las dejaremos de esta forma (se puede mejorar mucho e hilar más fino, pero lo veremos en otro post sobre configuración avanzada de Motion):

  • Para arrancar el demonio de motion en background:
daemon on

 

  • ¿Streaming solo en localhost o en remoto? Si lo dejamos en yes, solo funcionará el streaming con localhost. Si está en off, podremos acceder remótamente. Como nosotros queremos acceder después desde otro equipos de la red, lo configuramos en off.
stream_localhost off

 

  • Activar el control de motion a través de HTTP:
webcontrol_port 8080

 

  • Activar la captura de imagenes.
output_pictures on

 

  • Directorio donde se guardarán las imagenes o videos tomados. Podemos cambiarlo y utilizar un USB externo en lugar de la tarjeta SD para evitar que se corrompa por las continuas escrituras.
target_dir /var/lib/motion

 

  • Puerto para streaming del dispositivo asociado al archivo de configuración:
stream_port 8081

 

  • Velocidad máxima de Streaming. Cuanto más bajo, movimiento más robótico y con muchos saltos. Cuanto más alto, más cercano a la realidad. Pero aunque pongamos 100, todo dependerá de la cámara que estemos utilizando:
stream_maxrate 20

 

 

5. Controlando el servicio de Motion

 
Ahora que hemos realizado cambios en el archivo de configuración de Motion, vamos a recargar o reiniciar el servicio, para que acepte las nuevas configuraciones:

service motion reload

si Motion se ha quedado colgado, o simplemente preferimos un reinicio total del servicio:

sudo service motion restart

 

Parar el servicio Motion:

sudo service motion stop

 

 

Detectar errores en el servicio, en archivos de configuración:

sudo service motion status

 

 

6. Comprobando que Motion funciona (a través del navegador, por HTTP)

 
Después de lo anterior, accedemos por navegador a la IP de la Raspberry, y al puerto que hayamos configurado en el parámetro webcontrol_port (en este caso, por defecto se utiliza el 8080)
 
motion webcontrol port en raspberry

Y de esta forma hemos configurado una webcam con Motion en Raspberry Pi para realizar Streaming continuo (bueno realmente en la captura vemos dos webcams, eso lo veremos en otro artículo posterior).

Ahora podríamos acceder a los controles de la cámara via Web, pulsando sobre: Camera1, y se abrirá el menú de la camara:

motion camera webcontrol action

Vemos que aparecen las opciones

  • config
  • action
  • detection
  • track

Pulsamos sobre action y veremos:

motion webcontrol action

  • makemovie
  • snapshot
  • restart
  • quit

Y podríamos hacer un video (makemovie) o capturar una imagen (snapshot), que se guardará en el directorio target_dir que hemos configurado en el archivo motion.conf anteriormente.
 

 

CONCLUSIÓN

 
Hemos visto cómo configurar Motion en Raspberry Pi para hacer un servidor de Streaming con webcams USB, configurando el archivo principal motion.conf, y utilizando las opciones más básicas. Más adelante veremos otras opciones avanzadas de Motion.
 

 

Enlaces importantes sobre Motion