Utilizar la Raspberry como un video monitor

Además de utilizar nuestra Raspberry como cámara de fotos, como vimos en un capítulo anterior, también lo podemos utilizar la Raspberry como un vídeo monitor. Y, ¿para que necesitamos un vídeo monitor?. El desarrollador de este sofware, Igor Partola, lo implementó originalmente como un vídeo monitor para bebés. Pero evidentemente, tu, le puedes dar el uso que necesites. Desde monitorizar un nido de buitres leonados, a ver germinar un garbanzo.

Una vez tienes Hawkeye y una cámara en tu Raspberry Pi, no hay límites. ¿Que tipo de cámara?. Con Hawkeye, puedes utilizar un módulo de cámara para la Raspberry como te mostraré, o incluso una webcam vía USB.

Utilizar la Raspberry como un video monitor

La Raspberry como un vídeo monitor

Como he comentado en la introducción, el proyecto hawkeye nació como un vídeo monitor para bebés. Uno de los objetivos principales de este software, según indica el propio desarrollador, fue que funcionara en una Raspberry Pi. Evidentemente, esto era un reto por los reducidos recursos que ofrece la Raspberry. Ni tiene mucha RAM ni su procesador es el más eficiente del mercado.

Así, Hawkeye, aunque no puede presumir de una gran eficiencia tiene una serie de características que lo hace óptimo para funcionar en la Raspberry Pi,

  • Utiliza un bucle de eventos para servir las transmisiones de vídeo y los archivos estáticos al navegador.
  • Emplea un mecanismo de ajuste de la tasa de fotogramas, simple pero a la vez robustos.
  • Utiliza un mecanismo para asegurar que la transmisión no se retrasa significativamente de lo que está sucediendo.

Así, Hawkeye, es capaz de soportar una tasa de 15 fps sirviendo a varios clientes de forma simultánea sin que la Raspberry Pi se vea afectada. Eso dependiendo de como sirvas las imágenes. Es decir, si utilizas SSL/HTTPS, el consumo de CPU aumentará significativamente, con lo que el número de usuarios concurrentes no podrás ser tan elevado…

Características

  • Servidor web propio
  • Soporta varias cámaras
  • soporta SSL para servir páginas web bajo HTTPS
  • Autentificación básica HTTP, que combinada con HTTPS te permite reproducir vídeo vía internet.
  • Soporte IPv4 e IPv6.
  • Reducido consumo de recursos. Lo que te permite utilizar Hawkeye en una Raspberry Pi y soportar un buen número de usuarios de forma concurrente.
  • Lleva incluido un reproductor HTML5. Puedes incluir la reproducción de vídeo en tus propias páginas web. Incluso puedes utilizarlo como una web app.

Instalación

Aunque desde la GitHub, nos ofrece la posibilidad de instalar Hawkeye desde repositorio, lo cierto es que en el momento de escribir este artículo, el reposirorio no estaba en funcionamiento. De esta manera, para mi lo mas sencillo para instalar la aplicación ha sido creando un paquete deb. Para ello tan solo tienes que ejecutar estas seis órdenes,

sudo apt-get install build-essential debhelper libv4l-dev libjpeg8-dev libssl-dev git devscripts
git clone https://github.com/ipartola/hawkeye.git
cd hawkeye/
debuild
cd ..
sudo dpkg -i hawkeye_0.6_armhf.deb

El siguiente paso es cargar el módulo bcm2835-v4l2, que nos creará /dev/video0. Para ello, tienes que ejecutar la siguiente orden,

sudo modprobe bcm2835-v4l2

Para se cargue de forma automática este módulo cuando inicie la Raspberry, añade las siguientes líneas al archivo /etc/modules,

# camera with v4l2 driver
bcm2835-v4l2

Configuración

Antes de proseguir con la configuración necesitamos crear server.crt y server.key para acceder vía https a la cámara. Para ello, ejecutaremos las siguientes órdenes,

cd
mkdir certificado
cd certificado
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key

Ahora ya lo tenemos todo preparado. El siguiente paso, es editar la configuración en el archivo /etc/hawkeye/hawkeye.conf. A continuación, te indico los parámetros modificados. Estos son los valores que yo he configurado,

host = 0.0.0.0
port = 5001
auth = pi:pi
cert = /home/pi/certificado/server.crt
key = /home/pi/certificado/server.key
fps = 15
width = 800
height = 600
devices = /dev/video0
format = mjpeg

Probando el funcionamiento

Para trabajar con hawkeye, como en otras ocasiones, tienes que utilizar las siguientes órdenes,

  • Iniciar -> sudo systemctl start hawkeye
  • Parar -> sudo systemctl stop hawkeye
  • Reiniciar -> sudo systemctl restart hawkeye
  • Conocer el estado -> systemctl status hawkeye

Una vez hayas configurado Hawkeye, debes reiniciar el servicio para que funcione correctamente. Ahora solo te queda iniciar el navegador y dirigirte a la página https://192.168.1.48:5001, cambiando la IP, por la correspondiente a la de la Raspberry Pi.

Para conectarte a la Raspberry Pi desde internet, puedes redirigir un puerto de tu Router al 5001 de la Raspberry Pi. Pero esto te obligará a tener abierto ese puerto. vas a dejar una puerta de acceso a todo aquel que quiera intentar acceder a tu equipo.

Mejor que esto, te recomiendo que accedas vía VPN, tal y como te indico en el artículo sobre como acceder a la red local desde fuera con tu Raspberry.

Conclusiones

Ya sea para monitorizar un nido o una cuna, Hawkeye, es una interesante y económica solución. Al final, estamos hablando de tener una cámara y un servicio web integrado, que nos permite monitorizar y visitar, desde donde queramos y cuando queramos, el objeto de nuestro proyecto.


Más información,