Conectar una Webcam con Motion en Raspberry Pi

A la hora de usar una webcam por streaming en Raspberry Pi, tenemos varias alternativas. Una de ellas consiste en usar la herramienta web mpeg-streamer, como pudimos ver en el post Como conectar a Raspberry Pi. Otra alternativa para conectar nuestra Raspberry con una cámara web es usando la herramienta Motion.

Motion es una herramienta que nos permite tener como salida archivos jpeg, ppm, e incluso secuencias de vídeo mpeg. Además, Motion nos permite visualizar múltiples webcams a la vez así como live streaming.

El sistema operativo que tengo instalado es Raspbian usando PuTTY

El primer paso será conectar nuestra webcam a un puerto USB de la Raspberry, comprobando que la reconoce con el siguiente comando:

lsusb

y en mi caso obtengo:

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 046d:0804 Logitech, Inc. Webcam C250

Vemos que la cámara web es una Logitech C250 con ID 046:0804. Actualizamos nuestra Raspberry con los siguientes comandos:

sudo apt-get update
sudo apt-get upgrade

Y ya está lista para instalar Motion con el siguiente comando:

sudo apt-get install motion

que nos llevará un par de minutos. Ahora vamos a modificar unos cuantos parámetros en el fichero de configuración de Motion con el siguiente comando:

sudo nano /etc/motion/motion.conf

Imagen_4

Ahora, usando los cursores, modifico lo siguiente

en el apartado #Daemon# se cambia Daemon OFF por Daemon ON
en el apartado #Snapshots# podemos cambiar el tiempo entre cada captura de vídeo, poniendo un valor de 4 segundos entre capturas, snapshot_interval 4
en el apartado #Live Webcam Center# ponemos webcam_port 8001 y webcam_localhost OFF
en el apartado #HTTP Based Control# cambiamos a control_port 888 y control_localhost OFF

Ejecutamos Motion con:

sudo motion –n

Imagen_6

y se empezará a tomar capturas cada 4 segundos a través del puerto 8001. Para ver las imágenes de nuestra webcam solo tenemos que escribir en la barra de dirección del Mozilla u otro navegador decente

http://[IP_de_la_Raspberry]:8001 

en mi caso sería

http://192.168.1.16:8001.

Imagen_7

Ahora ya podemos acceder a la página de configuración de Motion mediante

http://[IP_de_la_Raspberry]:8888 

Imagen_8

  • Francisco Morón Navarro

    ¿Seria posible acceder desde una red distinta al contenido en vivo de la camara? Usarlo como camara ip

    • Si te refieres a usar la cámara desde fuera de tu red local, vas a necesitar configurar tu router para que la ip interna se vea desde fuera. Tienes que ver como se configura el NAT en tu router, poner una ip fija a la raspberry, activar algún servicio de tipo dynamicIP para tener localizada tu IP externa, … No es fácil ni simple, y depende mucho del router que tengas.

  • maafino

    Saludos, que modelo de Camara usas, pues yo he probado con marca Genius y no me da video.

  • knivesoul

    hola manuti, sabes si si raspbian (o alguna otra distro) trae incluido ya el “pack de drivers” uvcvideo? tengo pensado comprar una para unos proyectos de videovigilancia (para lo que me ha venido al pelo tu post) y seria una faena que no me detectase la webcam. Detecta las bastantes de serie o la ves con problemillas en ese aspecto…con kirbian (usa el debian de la raspi modificado) no me la carga en dev/video0 por lo que motion falla y temo que me pase lo mismo cuando me llegue la raspi…gracias y felicitaciones por la pagina!!

    • En teoría había problemas en Raspbian y con el firmware pero ya están solucionados: debes tener la última versión de Raspbian, actualizarla y actualizar el firmware de la Raspberry (hay que usar rpi-update que aún no he explicado por aquí).
      Y como cámara no se si te interesará pedir y esperar a que vendan la cámara interna que podrías integrar tal vez en una caja compacta. https://raspberryparatorpes.net/hardware/modulo-de-camara-por-hardware-para-la-raspberry/

  • Ruben

    Hola, tengo una logitech Quickcam chat conectada por USB, sigo todos los pasos de update,upgrade, instalar motion, configurarlo pero cuando visito la web me pone Unable to open video device since “fecha y hora”

    aqui dejo lo que ve el comando lsusb
    Bus 001 Device 004: ID 046d:092c Logitech, Inc. QuickCam Chat

    he buscado por google y en teoria los drivers de esta cam los tiene el kernel integrado, pero no hay forma de que me funcione.

    esta es la info mas ampliada de la camara
    sudo v4l2-compliance -d /dev/video0

    Driver Info:

    Driver name : spca561

    Card type : Camera

    Bus info : usb-bcm2708_usb-1.2

    Driver version: 3.6.11

    Capabilities : 0x85000001

    Video Capture

    Read/Write

    Streaming

    Compliance test for device /dev/video0 (not using libv4l2):

    Required ioctls:

    fail: v4l2-compliance.cpp(251): check_0(vcap.reserved, sizeof(vcap.reserved))

    test VIDIOC_QUERYCAP: FAIL

    Allow for multiple opens:

    test second video open: OK

    fail: v4l2-compliance.cpp(251): check_0(vcap.reserved, sizeof(vcap.reserved))

    test VIDIOC_QUERYCAP: FAIL

    test VIDIOC_G/S_PRIORITY: OK

    Debug ioctls:

    test VIDIOC_DBG_G_CHIP_IDENT: FAIL

    fail: v4l2-test-debug.cpp(82): uid == 0 && ret

    test VIDIOC_DBG_G/S_REGISTER: FAIL

    test VIDIOC_LOG_STATUS: FAIL

    Input ioctls:

    fail: v4l2-test-input-output.cpp(133): couldn’t get tuner 0

    test VIDIOC_G/S_TUNER: FAIL

    fail: v4l2-test-input-output.cpp(228): could get frequency for invalid tuner 0

    test VIDIOC_G/S_FREQUENCY: FAIL

    fail: v4l2-test-input-output.cpp(358): could not enumerate audio input 0

    test VIDIOC_ENUMAUDIO: FAIL

    test VIDIOC_G/S/ENUMINPUT: OK

    fail: v4l2-test-input-output.cpp(377): No audio inputs, but G_AUDIO did not return EINVAL

    fail: v4l2-test-input-output.cpp(421): invalid audioset for input 0

    test VIDIOC_G/S_AUDIO: FAIL

    Inputs: 1 Audio Inputs: 0 Tuners: 0

    Output ioctls:

    fail: v4l2-test-input-output.cpp(479): couldn’t get modulator 0

    test VIDIOC_G/S_MODULATOR: FAIL

    fail: v4l2-test-input-output.cpp(563): could get frequency for invalid modulator 0

    test VIDIOC_G/S_FREQUENCY: FAIL

    fail: v4l2-test-input-output.cpp(682): could not enumerate audio output 0

    test VIDIOC_ENUMAUDOUT: FAIL

    test VIDIOC_G/S/ENUMOUTPUT: FAIL

    test VIDIOC_G/S_AUDOUT: Not Supported

    Outputs: 0 Audio Outputs: 0 Modulators: 0

    Control ioctls:

    test VIDIOC_QUERYCTRL/MENU: OK

    test VIDIOC_G/S_CTRL: OK

    test VIDIOC_G/S/TRY_EXT_CTRLS: OK

    Standard Controls: 5 Private Controls: 0

    Input/Output configuration ioctls:

    fail: v4l2-test-io-config.cpp(63): could set standard to ATSC, which is not supported anymore

    fail: v4l2-test-io-config.cpp(121): STD failed for input 0.

    test VIDIOC_ENUM/G/S/QUERY_STD: FAIL

    fail: v4l2-test-io-config.cpp(167): could set preset V4L2_DV_INVALID

    fail: v4l2-test-io-config.cpp(216): Presets failed for input 0.

    test VIDIOC_ENUM/G/S/QUERY_DV_PRESETS: FAIL

    test VIDIOC_G/S_DV_TIMINGS: Not Supported

    Format ioctls:

    test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK

    fail: v4l2-test-formats.cpp(327): expected EINVAL, but got 25 when getting framebuffer format

    test VIDIOC_G_FBUF: FAIL

    fail: v4l2-test-formats.cpp(481): Video Capture Multiplanar cap set, but no Video Capture Multiplanar formats defined

    test VIDIOC_G_FMT: FAIL

    fail: v4l2-test-formats.cpp(509): ret && ret != EINVAL && sliced_type

    test VIDIOC_G_SLICED_VBI_CAP: FAIL

    Total: 27 Succeeded: 9 Failed: 18 Warnings: 4

  • ankszx

    Yo tengo problemas con mi Web cam HP 3100 la detecta el ultimo raspbian del 2013-02 pero se me reinicia el motion muchas veces a veces funciona mas tiempo que otras, los drivers son uvcvideo, lei algo de problemas con puertos 1.1 pero es 2.0 raspberrypi segun yo, tambien en un openwrt router wr1043nd me funciona este sistema de monitoreo por ratos y luego no jala por tantas veces que se reinicia motion no se cae por completo si no manda errores y reinicia automaticamente funciona unas 4 capturas y cae, no se bien el problema me gusto unos dias tener la camara funcionando pero si la conecto a una compu grande amd64 bits la camra funciona sin problemas con motion es raro. Ya tenia un script que prendia un led cada que detectaba movimiento, no s esi comvenga invertir en una camra ip webcam hay unas chinas con linux.

    • Las pruebas que hicimos con Motion fueron bien, la verdad es que no la he tenido mucho tiempo funcionando. Volveré a probar cuando tenga tiempo.

  • miguel

    las “imagenes” que capturo me aparecen gris. no se ve nada que puedo hacer tengo los mismos parametros ahi indicados.

    • Puede ser un problema de la webcam, te prometo que los parámetros son los que usamos para configurarla y las capturas las hicimos nostros, nada de copy&paste de internet

  • Jhon Edison Nuñez

    Hola Amigo…

    Gracias por el tutorial. Me funciono correctamente..

    Aunque tengo una duda…. solo funciona con el navegador Mozilla Firefox? no he logrado reproducirlo en ningun otro navegador.,

    Saludos

    • Me alegro de que te sirviera.
      En teoría sirve para cualquier Navegador moderno… Pero apunto lo de Firefox que creo que es con el que se probó en su momento.

  • Pingback: Una cámara en la Raspberry Pi | Mbpfernand0's Blog()

  • Pingback: A camera for my Raspberry Pi | Making Fernand0()

  • Pingback: Timelapse con webcam y Raspberry Pi | Raspberry para torpes()

  • kant

    Hola, a ver si podeis echarme una mano, me estoy iniciando en este mundo y puede que me esté dejando algo muy básico pero no consigo hacerlo funcionar. Cuando intento acceder desde el navegador de cualquier ordenador o movil de la red de casa, me dice pagina web no disponible. ¿Alguna idea? La dirección en mi caso sería 192.168.1.140:8001 haciendo coincidir ese 8001 con lo configurado en el motion.
    Gracias de ante mano

    • Pues podría ser que la Red de tu casa tenga otro rango y por eso no la encuentre. ¿Sabes mirar la IP con tu móvil por ejemplo? A partir de ese dato puedes averiguar el rango y reconfigurar.

  • Francesco Antonioli Dotti

    quería consultarte como hago para que los archivos de captura puedan irse borrando o rotando automaticamente para evitar que se llene el almacenamiento local de la memoria SD

    • La verdad es que no lo he probado. Pero supongo que podrías crear una tarea en Cron que borre todo lo que sea más antiguo de X días y que se ejecute semanalmente o algo así.

  • Nano Blanco Cantero

    No consigo hacerlo funcionar…. los datos que se supone que hay que poner a OFF en el archivo conf no me aparecen. Los busco con control F y nada de nada. :/ he probado a reinstalarlo y nada…. Lo mas raro es que yo si me conecto por ssh desde fuera de casa, por local o donde sea. Pero a traves de chrome o firefox le pongo 192.168.1.33:8081 (He probado con mas opciones que el 8081) y me dice que conection refused :(