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.
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,