Volver
Servidor WEB con Cámara
Orange PI


En el anterior artículo había realizado y probado un servidor WEB con la placa Orange PI y el servidor  NGINX.
En este artículo añado un componente mas a Orange PI, una cámara.
A través de la página web se podrá ver la imagen de la calle, esta imagen se actualizará cada 2 minutos.
http://seta43.duckdns.org/seta/webcam/index.html


Imagen vista desde un navegador.

Para este proyecto hemos utilizado una webcam  Logitech, Inc., aunque sirve cualquiera que funcione en Linux.

Cámara colocada en la ventana.

Como base de la página web tenemos el fichero index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="refresh" content="115">
    <title>miweb</title>
  </head>
  <body alink="#EE0000" bgcolor="#ffff99" link="#0000EE" text="#000000"
    vlink="#551A8B">
    <i><big><b>Mi_Cámara</b></big></i><br>
    <hr size="2" width="100%"><big><big style="font-weight: bold;"><img
          alt="" src="web.jpg" height="480" width="640"><br>
        <br>
mar abr 23 20:26:01 CEST 2019
      </big></big>
  </body>
</html>



Lo primero que debemos hacer es utilizar un programa que capture una imagen de la webcam para colocarla en la página web.

_____VERSIÓN___ANTIGUA CAMBIADA_________
El programa utilizado es vgrabbj , este programa se maneja vía comandos, que es lo que nos interesa.

vgrabbj -U -R -i vga  -z 50  -f /home/seta/www/webcam/web.jpg


Con esta orden capturamos una imagen en /home/seta/www/webcam/web.jpg , es donde alojaremos la página web de la webcam.
En mi caso coloco mi webcam boca-abajo para mejor sujección, por lo cual debo utilizar las opciones -U -R para dejar la imagen bien.
El tamaño será de 640x480, con la orden -i vga capturo  ese tamaño.
En algunas webcam se necesita ciertas imágenes para que se estabilice la luz, yo espero 50 imágenes, opción -z 50.
El script queda de la siguiente manera.

#!/bin/bash
datecreated=`date`

vgrabbj -U -R -i vga  -z 50  -f /home/seta/www/webcam/web.jpg
sed -i '14d' /home/seta/www/webcam/index.html
sed -i "14i${datecreated}" /home/seta/www/webcam/index.html

______________________________________________________________________
Después de funcionar perfectamente la webcam durante 1 semana, se me ocurrió reiniciar la placa Orange PI.
Resultaba que la webcam no se llegaba a ver. Probando y probando me dí cuenta que el programa vgrabbj no funcionaba a veces cuando se lanzaba por primera vez.
Para solucionar el problema he cambiado el programa que captura imagenes, y ahora es fswebcam.
Ahora funciona todo bien cuando re reinicia el servidor.

#!/bin/bash
datecreated=`date`

#echo "$datecreated" >> /home/seta/web.txt
#vgrabbj -U -R -i vga  -z 50  -f /home/seta/www/webcam/web.jpg
#uvccapture -x640 -y480 -m -o"/home/seta/www/webcam/web.jpg"
fswebcam -r "640x480" -S 40 --flip h,v  --no-banner  --jpeg 70  /home/seta/www/webcam/web.jpg
sed -i '14d' /home/seta/www/webcam/index.html
sed -i "14i${datecreated}" /home/seta/www/webcam/index.html


Con el comando sed borro la línea 14, e inserto la hora y la fecha en la página web.

Para que la página web se actualize automáticamente coloco en la cabecera de la página web:

 <meta http-equiv="refresh" content="115">

Esto hace que se actualice cada 115 segundos.

Ya tenemos el script creado, pero nos falta que el script se ejecute cada 2 minutos.
Para esta tarea utilizaremos cron.  El comando cron es un administrador regular de procesos en segundo plano que viene de serie en linux.
Para añadir el comando que se debe ejecutar en segundo plano, utilizaremos el comando crontab -e  .
Y editaremos de la siguiente forma:

*/2  * * * * /home/seta/www/webcam/tareaWeb > /dev/null 2>&1

De esta forma el script se ejecutara cada 2 minutos.

Como veis es una forma bastante sencilla de crear una webcam en tu página web.


Saludos
Juan Galaz

Bibliografía:

servi.html
wpa.html
wpb.html
orange.html
https://orangepiweb.es/
http://www.orangepi.org/orangepibbsen/forum.php?gid=38