Publicar Imagen de Ubiquiti Aircam en un sitio web (sin login) de manera automática

Esta webcam, mas precisamente la Aircam de Ubiquiti no tiene muchos parámetros para configurarla. Solo se acceden via login. Otras camaras tienen la opcion de desactivar el login o bien configurar un servidor FTP y publicar la imagen de la cámara cada x tiempo.
Nosotros lo que haremos es ingresarle por SSH y copiar la imagen /tmp/snap.jpeg (que es la ruta donde publica ubiquiti la imagen en vivo) dentro de nuestro sitio web de apache.

Para ello deberemos primero crear las Keys que requiere el acceso SSH.

Crear el par de claves públicas y privadas:

$ sudo ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Damos enter, para que las llaves se guarden en ~/.ssh

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Le ponen el password que quieran. Luego vamos a la carpeta home del usuario root o bien al home del usuario logeado y veremos 2 archivos: id_rsa e id_rsa.pub.

Publicamos la llave publica id_rsa.pub en nuestra cámara desde el navegador. Como esta en la imagen.

Para testear que ingresas bien a la cámara puedes correr la siguiente linea desde la consola de linux donde se hospeda tu sitio web:

$ sudo /usr/bin/scp -qv «ubnt@IPdeAircam:/tmp/snap.jpeg» /var/www/tusitio/webcam.jpg.
Si todo va bien te tiene que solicitar la contraseña de la cámara. Luego revisa que se haya generado el archivo webcam.jpg en tu sitio.  :). Perfecto!, Ahora si queremos que la foto se publique sola, tenemos que lograr que esta linea de comandos no nos pida la contraseña. Para ello necesitamos instalar «expect», un programa para automatizar tareas que va a encargarse del login.

sudo apt-get install expect

Luego vamos a armar 2 script; uno que hara el trabajo de ingresar a la camarita, con lo siguiente:   webcam_image_get.sh

#! /usr/bin/expect
set hostName [lindex $argv 0]
 ### Modificar ubnt por el usuario, y /var/... por la ruta de tu sitio.
spawn /usr/bin/scp -q "ubnt@$hostName:/tmp/snap.jpeg" /var/www/tusitio/webcam.jpg

set timeout 10
expect {
  ### Modificar ubnt por la contraseña de tu camara
 -re ".*passphrase.*" { send "ubnt\n"; expect eof exit }
  eof { exit }
  timeout { puts "\n--TIMEOUT!--\n";exit}
}
exit

Modificar «ubnt ubnt» por el usuario y contraseña de tu camara y la ruta que tiene que apuntar a la de tu sitio web.

Y el otro script ejecutara el anterior cada cierto tiempo en segundos, y ademas usaremos «convert» para reescribir la imagen con un texto personalizado.

Para poder usar «convert» instalamos:  $ sudo apt-get install imagemagick

Y aqui el script: webcam_cron.sh

#! /bin/sh

while [ true ]; do
        sleep 2   # espearmos 2 segundos
 /home/tu_usario/webcam_image_get.sh 190.100.100.5 # ip de tu camara
        sleep 1  # esperamos 1 segundo mas
        convert -family Arial -pointsize 16 -fill "#ffffff"  -draw "text 20,20 'Tech-Nico.com Live'" /var/www/tusitio/webcam.jpg/var/www/tusitio/webcam.jpg
done

En rojo las cosas que tenes que modificar para tu caso.
Le damos permisos de ejecución a los 2 scripts con: $ sudo chmod +x

Finalmente para ejecutar «webcam_cron.sh» como trabajo en background y re-direccionamos la salida estándar a un archivo de texto llamado output para esconder los mensajes.

$  sudo ./webcam_cron.sh >>output 2>&1 &

Ahora si! ya tenemos nuestra imagen publicandose automaticamente. Solo tenemos que armar un archivito HTML y ponerle la etiqueta Refresh para que refresque cada cierto tiempo.

La única desventaja de esto es que «no vamos a ver la imagen como un video» Es mas lento porque hasta que se logea por ssh, intercambia las llaves.. ingresa la contraseña… copia el archivo..  todo eso le demora unos 2 segundos. Asi que lo mas rapido que puede publicar va a ser en 3 o 4 segundos como maximo.

Resultado

Espero que les guste y.. lo mas importante.. «les sirva».

________________
Nicolas Daitsch
tech-nico.com/blog

Sé el primero en comentar

Deja un comentario