Cómo instalar una cámara web USB y acceder a ella desde tu navegador
En este artículo os mostramos cómo usar una cámara web usb a modo de webcam empleando el software motion en tu raspberry pi. Al terminar la instalación, podrás ver tu cámara en una página web utilizando la dirección IP de tu raspberry pi. En definitiva, tendrás el equivalente a una cámara IP, con la ventaja de ser más económica y poder configurarla a tu antojo.
Contenidos
Posibles usos de una cámara IP
Puede que te preguntes, ¿Para qué quiero yo esto? Te mostramos algunos posibles usos que tienen este tipo de cámaras:
Mostrar la webcam en internet: existen muchas cámaras web online a las que se puede acceder públicamente o de manera privada, y nos permiten ver una zona en directo, como la gran manzana de Nueva York, una playa en Canarias, e incluso cosas tan personales como tus hijos en la guardería. Es cierto que para usos privados estos sistemas deben estar instalados por profesionales, por razones obvias de seguridad y privacidad, pero para una cámara pública o un proyecto con amigos podemos hacerlo nosotros mismos. Una anécdota: ¿Sabías que la primera cámara accesible a través de internet se creó para controlar una cafetera?
- Cámara robótica: Imagina que montas un coche RC. o un cuadricóptero, y quieres ver el punto de vista del piloto.
- Cámara de seguridad: este es el uso más común. Se puede configurar el programa para generar alertas y grabar trozos de vídeo cuando se detecte movimiento.
- Interfono: podemos tener la cámara en la entrada de nuestra vivienda, y ver desde cualquier lugar con nuestro móvil quién es la persona que está llamando a nuestra puerta.
- Comunicador: si estamos trabajando con una persona desde otro sitio, siempre es más agradable tener una imagen de la persona con la que nos estamos comunicando. Siempre puede hacerse por skype, pero tener un sistema independiente del ordenador principal es mucho más cómodo.
- Time-lapse: se puede configurar la cámara para que saque fotos a intervalos, y podremos hacer un vídeo componiendo todas esas imágenes, con lo que podemos ver el contraste de luz a lo largo del día, el crecimiento de una planta, el cambio de las estaciones, el movimiento de las estrellas y la luna, ¡el límite está en tu imaginación!
- Dashcam: son esas cámaras que se colocan en los coches. Gracias a la capacidad de grabar vídeo, podemos tener siempre una grabación de seguridad.
Instalación del sistema operativo raspbian
Para este tutorial, hemos utilizado Raspbian Jessy en nuestra raspberry pi, pero en cualquier otra versión posterior el proceso será similar. Si no tienes tu raspberry pi instalada, sigue nuestro tutorial.
Instalación y configuración del servidor motion
En este apartado describimos cómo instalar el servidor motion. Lo primero que tenemos que hacer es armarnos de un poco de paciencia, pues la instalación requiere varios pasos y en algunos casos tendremos que leer los ficheros de log para resolver problemas. Una vez instalado, funciona perfectamente, pero debemos admitir que este software requiere un poquito de prueba y error.
¿Qué es el servidor motion?
Como se indica en su página web, motion es un programa que monitoriza la señal de vídeo recibida por cámaras. En este caso, lo emplearemos para mostrar en una página web el stream de vídeo en USB.
Descarga e instalación del paquete
Si bien puede instalarse directamente desde raspbian utilizando apt-get, es muy posible que la versión que descarguemos de este modo no sea la más actualizada. Esto es muy frecuente en distribuciones como Debian (raspbian es un derivado), pues priman la estabilidad del sistema en detrimento de las últimas actualizaciones. En definitiva, que tendremos que descargar el paquete con la última versión y descargarlo manualmente.
Puedes encontrar la lista de paquetes en la siguiente página: https://github.com/Motion-Project/motion/releases. En la siguiente imagen, veremos que las diferentes versiones están clasificadas por distribución, y que hay una para nuestro raspbian Jessie (y stretch si empleas la última versión). Pulsaremos con el botón derecho sobre la versión y copiaremos el enlace con la dirección.
En la terminal de nuestra raspberry pi, siguiendo las instrucciones de la documentación, descargaremos el paquete con wget y la dirección que copiamos de la página. Ejecutamos los siguientes comandos:
pi@raspberrypi:~ $ wget https://github.com/Motion-Project/motion/releases/download/release-4.1.1/pi_jessie_motion_4.1.1-1_armhf.deb pi@raspberrypi:~ $ sudo apt-get install gdebi-core pi@raspberrypi:~ $ sudo gdebi pi_jessie_motion_4.1.1-1_armhf.deb
Recuerda sustituir el nombre del fichero por la version que acabas de descargar.
Cambios en la configuración
El fichero de configuración es /etc/motion/motion.cfg. Deberás editarlo con sudo debido a los permisos con los que se crea. Usaremos por simplicidad, el editor nano, pero puedes emplear el editor de la interfaz gráfica o cualquier editor con el que estés familiarizado, como vi/vim o emacs. Por ejemplo, con el editor nano:
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
Si no estás familiarizado con nano, comentarte los comandos más sencillos:
- Ctrl+w te servirá para buscar (ya que te vamos a decir los parámetros a cambiar)
- Ctrl+o te servirá para grabar los cambios
- Ctrl+x te servirá para salir del editor
Los parámetros que vamos a cambiar para este tutorial son los siguientes (busca el parámetro, edita el que está en el fichero y cámbialo por el que te indicamos):
daemon on | Para que el servidor corra en segundo plano cuando se arranque. |
logfile /tmp/motion.log | Quita el «;» del principio. De este modo podremos ver cualquier problema en el fichero de log. |
framerate 30 | Este framerate se usará para grabar en caso de que lo configuremos, aunque no lo usamos en este tutorial |
stream_maxrate 5 | Se trata del número de imágenes por segundo del streaming de vídeo. Puedes aumentarlo para comprobar el límite de tu conexión, pero para una prueba básica y muchos casos de uso es suficiente con utilizar cinco imágenes por segundo. |
stream_localhost off | Con este parámetro desbloqueamos el servidor para que sea accesible desde cualquier equipo de la red. Esto nos permitirá acceder al vídeo en el ordenador y en el teléfono móvil. |
webcontrol_localhost off | Este parámetro desbloquea el control de web de modo que pueda accederse desde fuera del host. |
Todavía nos queda un parámetro extra, que se encuentra en otro fichero.
pi@raspberrypi:~ $ sudo nano /etc/default/motion
Sencillamente cambia «no» por «yes» y guarda el fichero.
Manejo básico del servidor
Arrancar el servidor motion
pi@raspberrypi:~ $ sudo systemctl start motion
Parar el servidor motion
pi@raspberrypi:~ $ sudo systemctl stop motion
Fichero de log del servidor motion
El fichero de log nos ayudará a resolver problemas. Tal como indicamos en la configuración, se encuentra en /tmp/motion.log
Problemas más comunes
Una de las primeras cosas que debemos mirar es si el servidor ha detectado nuestra cámara. Desenchufa la cámara y vuélvela a enchufar. Ejecuta el comando lsusb para comprobar que la cámara está en la lista (puede que esté con otro nombre, por ejemplo nuestra cámara aparece como un microscopio, es parte del encanto de importar de China).
Si tienes tu raspberry conectada a un monitor con teclado y ratón, lo más sencillo será ir a la interfaz gráfica e ir a la dirección localhost:8081 para ver el streaming de la cámara. De lo contrario, si accedes mediante ssh en remoto, podrás utilizar la dirección de tu raspberry en la página web. En nuestro caso, la dirección en la que mostramos el stresming es 192.168.2.121:8081. Mira a continuación una captura de pantalla. ¡Objetivo conseguido!
Siguientes pasos
Ya tienes tu cámara conectada y puedes hacer envío de vídeo. Te dejamos a continuación algunos temas para ampliar y mejorar este proyecto, ¡Anímate a hacerlos y déjanos un comentario con tu proyecto!:
- Autentificación: habilita la autentificación para acceder al streaming de cámara.
- Encriptado: utiliza https para mostrar el streaming.
- Configuración de alertas: para que tu raspberry te avise cuando haya movimiento en horas en las que todo debería estar tranquilo.
- Hacer tu cámara a todo el mundo: muestra la vista desde tu ventana para todo el mundo.
- Grabar ficheros: haz que se graben ficheros de vídeo cuando haya movimiento, como en las cámaras de seguridad.
- Móntala en un robot móvil: ponle ojos a tus proyectos de robótica.
Pingback: Control de cámara IP usando servos y un servidor web en Raspberry pi - Nociones.de
Buenas,
El tutorial este genial pero me interesaria mucho este punto:
*Encriptado: utiliza https para mostrar el streaming.*
Pero no lo encuentro por ningún lado
Muchas gracias
Hola Adrian,
tras mirar un poco la documentación de Motion, parece ser que Motion no te da la posibilidad de hacer streaming https por defecto. En ese caso, podrías intentar un proxy https (nginx, haproxy) que te terminara la conexión, o acceder a la cámara mediante un túnel (por ejemplo con ssh). Si nos animamos a hacerlo en algún momento crearemos un artículo al respecto, si bien de momento nuestros streaming no salen de nuestra red local, así que aún no hemos hecho hincapié en la seguridad.
Saludos,
Admin.
Pingback: Cómo saber qué aplicación escucha en un puerto con lsof - Nociones.de