Crear un sistema de vigilancia automatizado que detecta movimiento mediante una cámara y envía automáticamente las imágenes a un servidor SFTP para su almacenamiento seguro, todo sin intervención manual. Este sistema mejora la seguridad y facilita el acceso remoto a las imágenes capturadas.
Primero necesitaremos tener acceso a un router con openwrt y una cámara conectada a el.
Desde Openwrt tenemos que acceder por ssh y ejecutar lo siguiente para dar soporte al los dispositivos usb:
opkg update
opkg install usbutils kmod-usb2 kmod-usb-core kmod-usb-ohci kmod-usb-uhci
Para testear si las ha reconocido podemos ver si el dispositivo existe con el siguiente comando:
ls /dev/video0
si nos devuelve
/dev/video0
es que se la ha reconocido. Hay que tener en cuenta que si tenemos varias webcans puede aparecer /dev/video1, /dev/video2 … Es importante saber qué cámara vas a usar porque hay que agregarla a la configuración de motin.
Ahora comenzaremos a instalar el paquete de motion:
opkg update
opkg install motion
Cuando tengamos instalado el motion, editaremos el fichero de configuracion. De normal se encuentra en /etc/motion/motion.conf
Instalaremos unn editor de texto como por ejemplo nano.
opkg update
okpg install nano
nano /etc/motion/motion.conf
En este archivo de configuración configuraremos que la cámara detecta movimiento y guarda las imágenes, que las imágenes se envíen directamente a un servidor sftp y que podamos acceder a la transmisión de la cámara desde el navegador.
############################################################
# Crear videos de eventos de movimiento.
movie_output on
# Longitud máxima del video en segundos.
movie_max_time 60
# Calidad de codificación del video. (0=usar bitrate. 1=peor calidad, 100=mejor calidad)
movie_quality 45
# Contenedor/Códec utilizado para el video. Ver motion_guide.html
movie_codec mkv
# Nombre del archivo (sin extensión) para videos, relativo al directorio de destino.
movie_filename %t-%v-%Y%m%d%H%M%S
############################################################
# Configuración del control web
############################################################
# Número de puerto utilizado para el control web.
webcontrol_port 8080
# Restringir conexiones al control web solo a localhost.
webcontrol_localhost on
# Tipo de opciones de configuración permitidas vía el control web.
webcontrol_parms 0
############################################################
# Configuración de la transmisión en vivo
############################################################
# Número de puerto para la transmisión en vivo.
stream_port 8081
# Restringir conexiones de transmisión solo a localhost.
stream_localhost off
##############################################################
# Archivos de configuración de la cámara - Uno por cada cámara.
##############################################################
; cámara /usr/etc/motion/camera1.conf
; cámara /usr/etc/motion/camera2.conf
; cámara /usr/etc/motion/camera3.conf
; cámara /usr/etc/motion/camera4.conf
##############################################################
# Directorio para leer archivos '.conf' de cámaras.
##############################################################
; camera_dir /usr/etc/motion/conf.d
##############################################################
# Script para enviar imágenes por SFTP al detectar movimiento
##############################################################
# Activar la salida de imágenes cuando se detecta movimiento.
picture_output on
# Nombre del archivo de imagen (sin extensión) relativo al directorio de destino.
picture_filename %Y%m%d%H%M%S-%q
# Comando para ejecutar cuando se genere una nueva imagen.
on_picture_save /etc/motion/subirimagenes.sh %f
Cuando tengamos el fichero de configuración crearemos el script para el envio de imagenes por sftp.
cd /etc/motion
nano envioimagenes.sh
#!/bin/bash
# Script para subir imágenes por SFTP automáticamente y eliminarlas después
#!/bin/bash
# Configuración SFTP
SFTP_USER="alumno"
SFTP_HOST="172.16.83.225"
SFTP_DIR="/home/alumno"
LOCAL_FILE="$1"
# Subir el archivo por SFTP y eliminarlo si la transferencia es exitosa
sftp "$SFTP_USER@$SFTP_HOST" <<< $"put $LOCAL_FILE $SFTP_DIR" && rm -f "$LOCAL_FILE"
Ahora crearemos una clave de ssh para poder pasar las imagenes al servidor sftp:
ssh-keygen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@ipdelservidorsftp
Ahora iniciaremos el servicio y ejecutamos el motion:
/etc/init.d/motion start
motion -n
Ahora podremos ver la imagen de la camara desde el navegador
http://<IPDELSERVIDOR>:8081