sábado, 26 de junio de 2010

PROYECTO VIDEOVIGILANCIA IP DE CIRCUITO CERRADO



VIDEO VIGILANCIA IP DE CIRCUITO CERRADO.



Planteamiento del problema

Una gran empresa, dedicada a la gestión de logística para terceros, está interesada en implementar un sistema de video vigilancia que le permita controlar cada una de las bodegas que posee, permitiéndole asegurar la integridad de los productos que gestiona.
Ante las posibilidades, la empresa considera que la implementación de un sistema de video vigilancia basado en IP es la mejor solución, ya que cuenta con la infraestructura de red necesaria para desplegarla. Se desea
- Utilizar un protocolo de video que sea abierto (h323 o similar)
- Almacenar cada una de las grabaciones para poder reproducirlas posteriormente.
- Alta disponibilidad, permitiendo que el servicio de video funcione aun cuando exista algún fallo, ya sea en la infraestructura de red o en el sistema de almacenamiento secundario del video
- Sistema de monitorización paralelo, para permitir dar seguimiento en tiempo real a todas las fuentes de videos si se desea (por ejemplo una caseta de seguridad centralizada, etc.).

Una vez en tendido el problema se procede a elaborar la solución mas acertada. En la cual se prosiguió a elegir el software y su configuración:






file:///C:/Documents%20and%20Settings/william/Escritorio/VIDEOVIGILANCIA%20IP%20DE%20CIRCUITO%20CERRADO_archivos/image002.jpg










Escenario.



Descripción de cámaras utilizadas

webcan.jpgCamara Web 300K c/LUZ

Descripción

Infrarroja: Manejo automático de la luz, funcionando incluso en ambientes absolutamente a obscuras
Definición: 300k.
Tamaño de la cámara: 28mm X 37mm x 20mm
Interfase: USB
Velocidad: 30 fps (320x240)/15 fps (640x480)
Rango: 5cm a infinito
CMOS color sensor
Hi-resolving power: 640x480
Formato de video: 24-bit RGB
balance de blanco automático
compensación del color automática

Motion



Una vez con la webcam configurada lo tenemos que hacer es instalar y configurar motion que es el programa de reconocimiento de movimiento, gracias a infectedproject, dado que esta en ingles vamos a traducirla un poquito para 244 webcams



Empezando con Motion

La web oficial de motion es:

http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome

Algunas de sus posibilidades son:
- Realizar capturas del movimiento
- Manejar multitud de cámaras
- Hacer streaming a tiempo real
- Crear videos mpeg utilizando ffmpeg
- Realizar capturas cada X tiempo
- Ejecutar comandos al detectar movimiento
- Si la cámara lo permite, seguir el movimiento
- Utilizar bases de datos MYSQL o PostgresQL para guardar las capturas
- Controlarlo mediante un navegador web
- Definir el nivel de CPU consumida
- Definir el nivel de sensiblidad de movimiento

Motion no dispone de entorno gráfico, supongo que esto hechará atrás a mucha gente, pero antes de ello debo decir que no es nada complicado hacerlo funcionar, y el hecho de que solo sea un pequeño demonio que corre en background le da una mayor flexiblidad. Yo por ejemplo lo tengo instalado en mi pequeño servidor linux que no dispone de X, y de esta manera puedo vigilar mi habitación desde cualquier lugar del mundo.
Requisitos

Necesitamos tener instalados las siguientes librerias:
libm, libresolv, libdl, libpthread, libc, ld-linux, libcrypt, libnsl, libjpeg, libz
En ubuntu y debian los paquetes necesarios son: libc6 , libc6-dev ,libglib1.2, libjpeg62, libjpeg62-dev, zlib1g, zlib1g-dev

Para poder grabar peliculas mediante ffmpeg necesitamos: libavcodec, libavframe
Y los paquetes son: ffmpeg ,libavcodec1,libavcodec1-dev


Instalación de Motion

1.- apt-get update //actualiza paquetes.



2.- apt-get install motion.


Configuración

Motion es muy configurable. La configuración que vamos a seguir es para conseguir un sistema de vigilancia con una WebCam.
Motion captura 1 frame cada X tiempo, y lo compara con el anterior, si se detecta que X píxels son distintos, considera que hay movimiento. Entonces, en nuestro caso, mientras dure el movimiento grabará un vídeo en formato avi. Además cada 10 minutos hará una captura de la imagen, esto nos servirá para asegurarnos de que motion ha estado funcionando correctamente.
También activaremos un pequeño servidor http de streaming con el que podremos ver en cada momento que esta pasando desde cualquier sitio del mundo donde haya internet.

Como ya he dicho no dispone de GUI, así que la configuración debe ser editando el archivo /usr/local/etc/motion.conf
Tenemos un ejemplo de archivo de configuración que renombraremos para utilizarlo como base:
cp /usr/local/etc/motion-dist.conf /usr/local/etc/motion.conf

Ahora lo editamos. Como podremos ver, este todo bien explicado, asi que recomiendo una lectura entera del archivo. Seguidamente comentaré las opciones más interesantes, pero podemos verlas todas mejor explicadas en la web oficial: http://www.lavrsen.dk/twiki/bin/view/Motion/MotionGuideGettingItRunning
Configuración básica

daemon on Si queremos que inicie en modo demonio (background), para las primeras veces que lo ejecutes mejor ponerlo a off para ver la salida
setup_mode off Si queremos que arranque en modo configuración, recomendable para la primera vez
videodevice /dev/video0 Nuestra camara
input 8 El tipo de dispositivo que estamos usando. 8 es para cámaras USB
rotate 0 Si queremos rotas la imagen, va en grados: 90, 180, 270...
width 320 La anchura. Esto dependerá de lo que soporte nuestra cam. Para ello recomiendo probar con uno de los programas antes mencionados y ver hasta que tamaño podemos llegar.
height 240 La altura.
framerate 30 Los frames por segundo que se capturaran. Eso dependerá de la cualidad que le se le quiera dar a la imagen de video. Yo utilizo 30.
Configuración de los filtros

Estos parámetros son muy importantes para conseguir una captura nítida y de buena calidad. Recomiendo que se utilice un programa de los antes mencionados (camorama por ejemplo) para probar los distintos valores y encontrar el mejor para nuestra camara.

auto_brightness off Si queremos que motion regule el brillo de la camara. Recomendable no activarlo.
brightness 0 El brillo. Si tenemos auto_brightness activado, sera el valor medio en que se basará motion
contrast 0 El contraste. Si es 0, se utiliza el propio de la camara
saturation 0 La saturación. Si es 0, se utiliza el propio de la camara
Opciones de detección movimiento

threshold 1500 El número de pixels que deben cambiar para considerar movimiento
night_compensate on Para detectar movimiento en frames oscuros
pre_capture 20 El número de frames que queremos que se guarden anteriores al detectar movimiento
post_capture 20 El número de frames que queremos que se guarden posteriores al detectar movimiento
max_mpeg_time 0 Máximo tiempo seguido de captura de video
low_cpu 3 El número de frames que queremos que capture mientras no detecte movimiento. Recomendable un valor pequeño para CPU's lentas.
Imagen

output_normal off
Puede ser on, off, best, first
- off: no guarda imagenes al detectar movimiento
- first: solo guarda el primer frame
- best: solo guarda el de mayor movimiento
- on: guarda todas los frames donde se detecta movimiento

output_motion off Guardar las imagenes del movimiento. Estas constan sólo de los pixels donde se detecta movimiento. Puede ser curioso, pero no recomiendo activarlo.
quality 75 la cualidad de la imagen jpeg
Video

ffmpeg_cap_new on Utilizar ffmpeg para las capturas de vídeo
ffmpeg_cap_motion off Guardar el video de los pixels donde se detecta movimiento
ffmpeg_bps 400000 El bitrate de la captura de vídeo. Como más alto más calidad.
ffmpeg_video_codec mpeg4 El códec a utilizar
Snapshots

snapshot_interval 600 Guardará una imagen, aunque no haya movimiento, cada 600 segundos
Directorios

target_dir /var/motion El directorio donde motion guardará los videos y las imagenes
Servidores

- Servidor de straming: Un pequeño servidor http que nos permitirá ver en tiempo real la webcam
webcam_port 8081 El puerto donde escuchará el servidor
webcam_quality 50 La cualidad en que se mostrarán las imágenes
webcam_maxrate 8 El número máximo de frames que se mostrarán para los vídeos en streaming
webcam_localhost off Si queremos restringir el uso del servidor para uso local solo

- Servidor de control: Este es un pequeño servidor http que nos permite configurar motion en vivo.
control_port 8080 El puerto donde escuchará el servidor
control_localhost on Si queremos restringir el uso del servidor de control para el uso local
control_html_output on Para que la salida sea en formato html
control_authentication usuario:tu_pass Para definir el usuario y el password
Otros

on_event_start comando El comando que se ejecutará al detectar movimiento



3.- instalar apache2 y php5,



#apt-get install apache2 php5



4.- instalacion del kmotion



copiar el archivo kmotion_v1.21; descomprimir el archivo en home.



5.- entramos a la carpeta kmotion



#cd /kmotion/deamons

#./install -int.py

#cat kmotion.rc



6.- crear un elace simbolico a los sitios habilitados de apache2



#sudo ls -s /home/gilbert/apache2-config/kmotons-vhost /etc/apache2/sites-enable



7.- Reiniciar apache2



#sudo /etc/init.d/apahe2 restart



8.- Mover kmotion y kmotion a /usr/bin



#mv kmotion /usr/bin/

#mv kmotion-reload /usr/bin/



9.- lanzar el motion



#sudo -u (nombre usuario) motion

#sudo -u (nombre usuario) Kmotion



10.- darle permisos a la carpeta Kmotion



...kmotion#cchmod -R 777 /hoome/nombreusuario/kmotion









Conclusiones

Motion nos ofrece un entorno muy poderoso y amplio. Podemos desde hacer un pequeño sistema de vigilancia como el explicado anteriormente, o un complejo sistema con varias cámaras (incluidas netcams), y una base de datos como Mysql o Postgresql para almacenar todo el contenido. El hecho de que nos permita ejecutar comandos al detectar movimiento, lo hace todavía más poderoso. Podemos crear un script por ejemplo que envie un mail, un sms, llame por teléfono o incluso active una alarma.
Se supone que en el futuro alguien creará un GUI para la configuración del programa, ya que editar el archivo manualmente es un poco engorroso.





Kmotion: Es una web basada en video vigilancia frontal a la propuesta de

Programa.

Configuraciones necesarias para Kmotion:

Archivo motion.conf

###################################################################

# Example motion config

################################################################

# User options ...

###################################################################

daemon off

quiet on

locate on

quality 100

framerate 4

gap 5

output_normal on

post_capture 16

pre_capture 3

webcam_localhost on

webcam_port 0

############################################################



# Common Options For MySQL and PostgreSQL database features.

# Options require the MySQL/PostgreSQL options to be active also.

############################################################

# Log to the database when creating motion triggered image file (default: on)

sql_log_image on

# Log to the database when creating a snapshot image file (default: on)

sql_log_snapshot on

# Log to the database when creating motion triggered mpeg file (default: off)

sql_log_mpeg on

# Log to the database when creating timelapse mpeg file (default: off)

sql_log_timelapse on

#on_picture_save vsftpd ftp://gilbert:gilbert@172.16.15.2/home/gilbert/kmotion/images

sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')

################################################################

# Threads ...

###################################################################

thread /etc/motion/thread1.conf

thread /etc/motion/thread2.conf

############################################################

# Database Options For MySQL

############################################################

# Mysql database to log to (default: not defined)

mysql_db dbmotion

# The host on which the database is located (default: localhost)

mysql_host localhost

# User account name for MySQL database (default: not defined)

mysql_user root

# User password for MySQL database (default: not defined)

mysql_password alfredo



############################################################

# Database Options For PostgreSQL

############################################################

# PostgreSQL database to log to (default: not defined)

; pgsql_db value

# The host on which the database is located (default: localhost)

; pgsql_host value

# User account name for PostgreSQL database (default: not defined)

; pgsql_user value

# User password for PostgreSQL database (default: not defined)

; pgsql_password value

# Port on which the PostgreSQL database is located (default: 5432)

; pgsql_port 5432

----------------------------------------------------------------

Archivo thread1 (para cada cámara)

###################################################################

# Example thread config

###################################################################

# User options ...

###################################################################

videodevice /dev/video0

input 8

ktext_left camara1

#ktext example name

snapshot_interval 300

auto_brightness off

brightness 0

contrast 0

hue 0

noise_level 64

saturation 0

target_dir /home/gilbert/kmotion/images





















Kmotion ejecutándose:









Protocolo de Transferencia de Archivos (ftp)

FTP son las siglas de File Transfer Protocol, es decir, Protocolo de Transferencia de Archivos. Es un sistema que permite enviar y recibir ficheros entre computadores a través de la red Internet.

Con el fin de facilitar la creación de tu web, los servidores comerciales disponen de un sistema de FTP, mediante el que puedes enviar rápidamente y de una sola vez todos los ficheros que desees publicar en tu página u otros ficheros: imágenes, archivos de audio, etc.

¿Qué necesito para usar el FTP de un servidor?

Necesitas un programa de FTP. En cualquier sitio de descarga de archivos comercial se dispone de varios software FTP

¿Cómo funciona un programa de FTP?

Primero debes configurar el programa para acceder a tu cuenta. Éstos son los datos que necesitas:

* Servidor, IP, server, host: ftp.servidor.com
* Puerto: 21
* Usuario, user: tu nombre de usuario o Loginname
* Clave, password: Tu clave de acceso con ese servidor

Una vez configurado, ejecuta la opción de conectar. Una vez conectado, podrás ver las carpetas y ficheros de tu disco duro en un lado, y las carpetas y ficheros de tu sitio web en el servidor. No tienes más que seleccionar uno o varios ficheros y arrastrarlos a la carpeta o directorio de tu sitio web que desees: los archivos se irán transfiriendo uno a uno.

¿Puedo subir ficheros de cualquier tipo y tamaño por FTP?

Generalmente los servidores tienen restricciones en cuanto a archivos ejecutables o del sistema, también hay restricciones en el tamaño, normalmente, no mayor de 1.5 Mb por archivo. Pero un web page bien diseñado no debe tener archivos de ese tipo.9

Configuración ftp.
Servidor de FTP

VSFTPD es un servidor de archivos por FTP muy ligero y seguro. Es el recomendado por Debian y Ubuntu, tiene una configuración muy sencilla en un solo fichero y se adapta muy bien a un servidor multihosting.
Instalación

En primer lugar debes instalar el paquete vsftpd para tener el servidor FTP listo para ser configurado y funcionar en tu sistema a pleno rendimiento.
Configuración

Fichero de configuración (por defecto): /etc/vsftpd.conf

La configuración por defecto es la siguiente:

· Acceso por el puerto 21 (si disponemos de un firewall debemos abrir dicho puerto).

· Acceso de sólo lectura a los usuarios anónimos.

· Los usuarios anónimos acceden a la carpeta /home/ftp (propiedad del usuario ftp y el grupo nogroup).

· Los usuarios del sistema no pueden acceder a sus carpetas privadas.

· El usuario anónimo podría si no administramos bien los permisos del sistema acceder a otras carpetas.

Procedemos a desactivar el acceso a los usuarios anónimos, permitiendo conectar a los usuarios locales del sistema con su usuario y contraseña propios.

$ sudo nano /etc/vsftpd.conf

listen=YES

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

chown_uploads=YES

chown_username=gilbert

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

data_connection_timeout=120

nopriv_user=ftpsecure

async_abor_enable=YES

ascii_upload_enable=YES

ascii_download_enable=YES

ftpd_banner=Bienvenido al Servidor FTP de este sitio

de tecacheenlau

deny_email_enable=YES

banned_email_file=/etc/vsftpd.banned_emails

chroot_local_user=YES

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem



Una vez configurado a nuestro gusto debemos reiniciar el servicio:

$ sudo /etc/init.d/vsftpd restart

Una vez instalado vamos a editar el archivo /etc/motion/motion.conf

nano /etc/motion/motion.conf

Ahora al final de el fichero vamos a insertar esta linea ( claro esta ) que tienes que modificar el nombre de usuario, el password y la dirección del ftp remoto por los tuyos

on_picture_save vsftpdftp://nombredeusuario:password@servidorremoto/directorio/













Dirección donde se subirá el documento:

Buscar en: http://tecacheenlau.blogspot.com/























Bibliografia



http://www.avrsen.dk/foswiki/bin/view/motion/motionguide.



http://www.guia-ubutu.org/index.php?title = servidor-de-ftp



http://ideasdepella.com/?p = 438

1 comentario:

  1. Hola William, me ha gustado mucho el articulo pero la pagina original ya no existe. Me la podrias mandar con las imagenes a mi correo??

    zaccaro_86(aqui va la arroba)hotmail.com

    ResponderEliminar