Raspberry Pi y Motion

Vamos a hacer uso de nuestra cámara USB compatible con Rasbian y obtener vídeo en pantalla – de forma local y remota – y todo ello gestionado desde nuestra pequeña Raspberry Pi. El otro actor principal de esta entrada es el software utilizado: Motion para Linux. Para ser más exactos, obtendremos un stream o flujo de imágenes jpg (mpg) que son capturadas de forma secuancial por nuestra RasPi.

Lo primero será hacernos con una cámara USB compatible con Raspberry, para lo cual nada mejor que consultar esta lista de compatibilidad, aunque el hecho de que no exista nuestra cámara en la misma no significa que no haya compatibilidad, por lo que antes de tirar la toalla podemos hacer uso de los consejos comentados en la entrada Raspberry Pi y cámara USB (1) – paso(3) – que nos ayudará a comprobar si el S.O. Linux “ve” o no nuestra cámara. En nuestras pruebas hemos usado el modelo VX-800 de Microsoft con resultados bastante buenos.

Otra opción es – tras reconectar nuestra cámara – ejecutar los comandos dmesg | tail y lsusb para comprobar que el dispositivo detectado como cámara también lo está en la lista de dispositivos USB. En nuestro ejemplo, la cámara Microsoft VX-800, es detectada en ambos comandos con el  ID:045e:0766.

Lo primero que hemos de hacer – como casi siempre ocurrirá al intentar instalar y ejecutar nuevas aplicaciones – será actualizar las fuentes de instalación (lo cual pude tardar un buen rato dependiendo de nuestra última actualización), para lo cual ejecutaremos:

sudo apt-get update
sudo apt-get upgrade

Ahora si, instalamos el paquete Motion mediante el comando

sudo apt-get install motion

Una vez terminada la instalación (se llevará tambien un ratito) conviene modificar algún que otro parámetro en los ficheros de configuración. Para ello abrimos dicho fichero (motion.conf) con nuestro editor nano mediante el comando:

sudo nano /etc/motion/motion.conf

Para más facilidad, y dado el tamaño del fichero, comentamos la zona del mismo donde se localizan los parámetros a tocar, además de añadir un pequeño comentario sobre su utilidad.

Editamos varios parámetros para adecuar el hardware/software a nuestro gusto. Posteriormente podemos ir probando alguna de las opciones que el fichero motion.conf nos permite retocar, de momento ajustamos los siguientes:

> En zona ## Daemon ##

daemon ON

nota: su utilidad es obvia.

 

> En zona ## Capture device options ##

v4l2_palette 6

image width 320
image height 240

nota: adecuamos tipo de paleta de vídeo (esta nos ha dado un buen resultado) y resolución.

 

> En zona ## Snapshots ##

snapshot_interval 5

nota: tiempo entre cada captura (salvo si se detecta movimiento).

 

> En zona ## Live Webcam Server ##

webcam_port 8001
webcam_localhost off

nota: habilita puerto de visualización y la misma en otros equipos de la red.

 

> En zona ## HTTP Based Control ##

control_port 8888
control_localhost off

nota: habilita puerto de configuración y el acceso al control desde otros equipos de la red.

 

> En zona ## Thread config files ## (al final del fichero)

thread /etc/motion/cam1.conf

nota: añade un fichero de configuración específico para nuestra cámara.

 

Ahora, y como configuración extra, creamos el fichero cam1.conf mediante

sudo nano /etc/motion/cam1.conf

y dentro del mismo editamos creando el contenido:

videodevice /dev/video0
webcam_port 8001

Como siempre, salvaremos con Ctrl-X + S + <Enter>

 

El fichero cam1.conf ha de residir en el mismo directorio donde se encuentra motion.conf.

 

La llamada a esta configuración personalizada para la cámara 1 de las que usemos (podemos tener varias) se declara al final del fichero motion.conf, y queda de esta forma:

 

una vez tengamos listos los dos ficheros de configuración (motion.conf y cam1.conf) efecuaremos una primera prueba, ejecutando el programa motion pero no como servicio del sistema, para lo cual lo invocamos con el parámetro -n

sudo motion -n

Ahora se activará motion y comenzará a efectuar capturas – en nuestro ejemplo cada 5 segundos – y ,a su vez,  se servirá la imagen en modo web a través del puerto asignado (puerto 8001 en nuestro ejemplo).

Podemos acceder desde la propia RasPi – queda claro que será desde el entorno gráfico – a las imágenes servidas vía navegador web, pero tenemos un problema: los navegadores por defecto en Raspbian (Dillo, Midori. etc) no son capaces de servir las imágenes capturadas, razón por lo que es aconsejable instalar Chromium. Esto lo podemos hacer con

sudo apt-get install chromium

Una vez instalado el navegador – y mientras motion esté sirviendo imágenes – accederemos a las imágenes desde la propia Raspberry poniendo en la barra de direcciones de Chromium

http://localhost:8001

en este caso hemos de refrescar manualmente la página para poder ver las nuevas imágenes. Y como quiera que cada 5 segundos (en nuestra configuración de ejemplo) se guarda una captura, podemos también ver las mismas en la carpeta /tmp/motion.

¡¡Cuidado!!, si se activa el movimiento el régimen de capturas aumenta con lo que el directorio /tmp/motion puede crecer de forma desmesurada.

El control de los diversos parámetros de motion puede efectuarse también desde el navegador operando en la RasPi con solo cambiar el puerto 8001 por 8888 (o el que hayamos configurado).

Si queremos ver las imágenes servidas desde otro ordenador de nuestra red deberemos acceder a la IP de nuestra Raspi desde el navegador web del mismo, y teclear (en nuestro ejemplo desde un Mac corriendo Firefox):

http://la_IP_de_la_Raspi:8001

sustituyendo “la_IP_de_la_Raspi” por la IP de nuestra tarjeta RasPi, en nuestro ejemplo la IP es 192.168.43.71

 

Una vez activa la captura vía web también podremos acceder a la configuración de motion de forma remota (si así lo hemos predefinido el el fichero de configuración). Para ello accederemos a

http://la_IP_de_la_Raspi:8888

también sustituyendo “la_IP_de_la_Raspi” por la IP de nuestra tarjeta RasPi, en nuestro ejemplo de nuevo la IP es 192.168.43.71

 

Automatizando el arranque/parada de Motion

Como quiera que el programa motion puede lanzarse como servicio (omitiendo el parámetro -n) podemos proceder a preparar un shellscript capaz de controlar el inicio y la parada de este servicio… tan solo por comodidad.

Para ello crearemos con el editor nano 2 ficheros, a saber:

(1) Fichero de activación

ejecutamos

sudo nano /usr/bin/onmotion

y tecleamos dentro del mismo

sudo motion

(2) Fichero de parada

ejecutamos

sudo nano /usr/bin/offmotion

y en este caso tecleamos

sudo /etc/init.d/motion stop

En ambos casos, salvaremos con Ctrl-X + S + <Enter>

Y para asegurarnos de que no nos darán problemas al ejecutarlos (bien como usuario pi o como root) les damos permisos máximos a ambos mediante

sudo chmod 777 /usr/bin/onmotion
sudo chmod 777 /usr/bin/offmotion

A partir de este momento para arrancar motion teclearemos

onmotion

y para detenerlo

offmotion

 

 

  Bitcoin Currency Converter
Amount of BTC to convert
To currency:
1BTC =