Raspberry Pi y Motion 13

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

 

 

13 thoughts on “Raspberry Pi y Motion

  1. Reply Carlos Zuazu Mar 12,2013 7:26 pm

    Muy bueno el Post.

    Se puede enviar la captura de la Cam con Motion a otra direccion IP que no sea la de la Raspberry? configurando las opciones de Motion? o ay q crear una red entre la Raspi y mi PC? en el caso de estar la Raspi y mi PC en la misma red se puede hacer. No se si me entiendes??

    Se aceptan cualquier tipo de sugerencias.

    Un Saludo Carlos Zuazu.

    • Reply Txus Mar 12,2013 8:05 pm

      Hola Carlos,

      Claro que puedes. Si te fijas, en las primeras capturas se accede a las imágenes desde el entorno de la Raspi, pero en las dos últimas fotos hemos accedido desde un equipo en la misma red local pero diferente a la Raspi (en concreto desde un Mac). Tan solo has de trabajar en el mismo rango de IPs (en tu red local) y acceder vía navegador Web.

      Espero haber entendido y contestado tu duda correctamente.

      Un saludo

      Txus

  2. Reply Carlos Zuazu Mar 14,2013 6:49 pm

    Gracias por la respuesta.

    Perdona me he explicado mal lo que queria decir es como puedo ver lo que esta grabando la Raspi con la Cam desde el PC de mi casa que esta en distinta red que la Raspi.

    Un Saludo

    Carlos

  3. Reply Javier Mar 27,2013 1:36 pm

    Estupendo tutorial.
    Ahora me han surgido dos dudas que seguro me puedes ayudar.
    Mi intencion es que no grabe ninguna imagen ni fichero avi, ya que la idea es que pueda monitorizar directamente lo que esta ocurriendo en ese momento.¿Qué parametro tendria que cambiar para ello?.
    Otra duda es, ¿por qué solo puede conectarse un usuario para acceder a través de la web?. He intentado acceder desde mas de un visor web y el primero funciona pero el resto se queda bloqueado.

    Gracias por tu ayuda.
    Javier.

  4. Reply Joseluis May 18,2013 7:42 am

    Saludos amigos y gracias por el tuto Txus, me sirvio de mucho, pude capturar las imagenes cada 5 seg y cuando habia movimiento, ademas lo he visto desde mi otra pc d la misma red en el explorador de chrome; y lo mas emocionante que tambien se puede ver desde cualquier parte del mundo via internet, para eso le pedi a un amigo que colocara en su navegador el ip de mi modem mas el puerto,ha.. casi me olvido… necesariamente tienen q habilitar el puerto entrando a la configuracion del modem.

    • Reply Txus May 18,2013 8:45 am

      Hola Jose Luis,

      gracias por tus comentarios. Referente al acceso desde WAN (via Internet), entiendo que planteas una duda. Te diré que lo típico es acceder vía tu IP pública (ya comentamos como averiguarla en otro post de trucos) y, además, tener la IP y el puerto que “sirve” re-direccionados en el router. Es importante también saber si la IP pública (WAN) es fija o dinámica, ya que en este último caso tendrías que configurar un servicio añadido tipo “no-IP”….

      Un saludo

      Txus

  5. Reply Joseluis May 28,2013 4:48 am

    Hola Txus,

    Gracias x el dato del no-ip voy tendre que buscar un tuto para configurarlo. Mientras t comento q lo he corrido con 4 webcam y hasta con un samsung galaxy con firefox; seguimos avanzando y x ahora estoy queriendo lograr conectar con mysql y apache, si tienes alguna ayuda con estos nuevos temas seria genial 🙂

  6. Reply ManuFer Jul 26,2013 6:58 pm

    Hola a todos,

    Disculpas por mi ignorancia… pero llevo poco tiempo en esto. Tengo una recien llegada raspbery con raspbian(al menos eso creo) cuando trato de instalar motion:

    $sudo apt-get install motion

    me falla por que dice que le faltan varias dependencias:
    libavcodec53
    libavcodec53-extra53
    libavformat53
    libavutil51
    libpq5
    y recomienda ffmpeg

    me ha pasado con otras aplicaciones y otra dependencias claro, por lo que algo habré hecho mal o no he hecho…. ¿alguna idea?

    muchas gracias y a ver si me pongo al dia…

  7. Reply rafa Nov 6,2014 12:57 pm

    En mi caso he configurado motion para que tome una imagen cada segundo. Me funciona bien pero graba muchisimos archivos .jpeg en la SD y la llena. ¿es posible ejecutar motion y visualizar las imageners vía web sin que se grabe ningun archivo en la SD?. ¿Cómo puedo hacerlo?.

  8. Reply Daniel Jun 12,2015 3:19 pm

    Hola … yo lo implemente con ciertas webcam anduvo.
    Pero hay webcams como wue no levanta el motion, pero si es reconocido por el S.O., es mas, ejecutando programas como camorama o guvcview. Dichas webcam son de marca Genius Ilook 300.
    ¿Es necesario instalar alguna libreria extra para que visualice dicha webcam?

  9. Reply Mauro Dic 8,2015 7:57 pm

    Muy buen tuto, me funcionó en mi servidor (una PC vieja) que a través de un script me envía un email con la ip pública… así lo puedo ver desde donde sea.

    Saludos.

  10. Reply Francesco Abr 17,2016 6:11 am

    Muy buen post.
    Te queria consultar si existe la posibiliad de que los archivos de imagenes a medida de que pase cierto tiempo se vayan borrando automáticamente (o rotando los archivos), por el tema de que no quiero que se me llene el almacenamiento de la memoria sd del raspberry pi

  11. Reply yanina amaya Sep 4,2016 9:40 pm

    Hola te hago una consulta no puedo hacer que el video se vea desde el servidor web coloco http://la_IP_de_la_Raspi:8001 en la web pero no carga , cual sera el problema ? agradezco mucho una respuesta por que hace dos dias ya que vengo renegando con este problema , muchas gracias y saludos

Leave a Reply

  

  

  

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