Implementar un sistema de alarma con Asterisk y una webcam
(c) 2007 Servitux Servicios Informáticos S.L.
Este documento tiene licencia GPL.
Este sencillo manual explica cómo montar un sistema de alarma usando el software Asterisk y una webcam, bajo Linux Debian 4.0. No se detalla la instalación de Asterisk o cualquier otro software, solo la configuración.
English version
You can read the English version of this document here:
http://www.voip-info.org/wiki/view/How+to+implement+an+alarm+system+with+Asterisk+and+a+webcam
Thanks to RazaMetal for the translation
IMPORTANTE
Este sistema de alarma puede ser didáctico y divertido de implementar, pero no debe ser usado como un sistema único de protección. Servitux Servicios Informáticos S.L. no se responsabiliza en absoluto de cualquier percance que surga de utilizar este sistema.
Requisitos previos
- Linux instalado y funcionando con conexión a Internet
- Asterisk funcionando y con conexión a un proveedor de VozIP o la linea telefónica
- Motion (software de control de webcam)
- Webcam compatible para Linux
Configurar motion
Una vez que la webcam está funcionando, editamos el fichero /etc/motion/motion.conf y lo dejamos tal que así:
daemon on quiet on width 640 height 480 framerate 25 quality 85 auto_brightness on brightness 0 contrast 0 saturation 0 hue 0 webcam_localhost off webcam_quality 30 webcam_maxrate 6 on_motion_detected /usr/local/bin/cam_event.sh text_right %Y-%m-%d\n%T text_left SERVITUX CAM webcam_port 8000 webcam_motion on minimum_motion_frames 9 on_picture_save wput -b -q ftp://user:password@ftp.servidor.com
Lo más importante a destacar es:
- on_motion_detected : Este comando se ejecutará cuando la camara detecte movimiento
- on_picture_save : este comando se ejecutará cuando se guarden las imágenes generadas por la webcam al detectar movimiento. En nuestro caso, le decimos que suba todas las imagenes a un servidor ftp remoto. El comando wput se debe instalar si no lo está ya.
Script de gestión de eventos cam_event.sh
Este script se encarga de realizar una llamada a través de asterisk cuando se detecta movimiento.
#!/bin/sh # primero reproducimos un fichero de audio por los altavoces for i in `seq 1 15` ; do play /usr/local/bin/alarma.wav ; done # y luego efectuamos la llamada cat << EOF > /tmp/alarmevent.call Channel: SIP/Proveedor/687XXXXXX Callerid: 966160600 MaxRetries: 2 RetryTime: 20 WaitTime: 20 Context: mensajealarma Extension: s Priority: 1 EOF chown asterisk:asterisk /tmp/alarmevent.call mv /tmp/alarmevent.call /var/spool/asterisk/outgoing/
Recordad cambiar este fichero según vuestras necesidades. El reproducir el fichero de audio por los altavoces tiene 2 funciones: ahuyentar al posible intruso, y darnos tiempo de apagar la alarma cuando entramos en la oficina. Si no se quiere reproducir audio, con poner un "sleep 60" por ejemplo, nos dejaría 60 segundos de inicio para apagar la alarma y que no llamara.
Configurando el dialplan de Asterisk
Ahora viene la configuración de asterisk. La configuración consta del comando para activar la alarma, el comando para desactivarla, y las acciones para cuando salte la alarma.
; contexto de las extensiones, por ejemplo, default o from-internal exten => *666,1,Answer exten => *666,n,Wait(1) exten => *666,n,Playback(activated) exten => *666,n,Wait(120) exten => *666,n,System(/usr/local/bin/control_motion.sh start) exten => *666,n,Wait(1) exten => *666,n,Hangup() exten => *777,1,Answer exten => *777,n,Wait(1) exten => *777,n,System(/usr/local/bin/control_motion.sh stop) exten => *777,n,Playback(de-activated) exten => *777,n,Wait(1) exten => *777,n,Hangup() [mensajealarma] exten => s,1,Set(LANGUAGE()=es) exten => s,n,Answer exten => s,n,Wait(2) exten => s,n,Playback(activated) exten => s,n,Wait(1) exten => s,n,Playback(activated) exten => s,n,Wait(1) exten => s,n,Playback(activated) exten => s,n,Wait(1) exten => s,n,Playback(activated) exten => s,n,Wait(1) exten => s,n,Playback(activated) exten => s,n,Wait(1) exten => s,n,Hangup
Explicación:
- *666 es el código de activación de la alarma. El sistema espera 120 segundos y la activa, así podemos cerrar y salir de la oficina
- *777 es el código de desactivación de la alarma
- el contexto mensajealarma es lo que se reproduce cuando el sistema nos llama por teléfono
Script de encendido/apagado control_motion.sh
Este script inicia o para el programa motion
#!/bin/sh case $1 in start) sudo /usr/bin/motion ;; stop) PID=`pidof motion` sudo kill $PID sudo killall cam_event.sh sudo rm -f /var/spool/asterisk/outgoing/alarmevent.call ;; esac
Para terminar
Con esta base, puedes modificar todo lo que necesites para amoldarlo a tus necesidades. Puedes hacer que el motion envíe un correo electrónico, o que el asterisk mande un SMS (si tu proveedor lo permite) en vez de una llamada.
Algo que no sé si se podría hacer es que el asterisk hiciera una videollamada a un móvil y ver en directo qué ocurre en la oficina a través del móvil, algo así:
PC + Softphone + Webcam ----- Asterisk ------ Teléfono movil
Me suena haber visto por ahí que el asterisk ya puede gestionar videollamadas, pero no sé a que nivel...
Si tienes un teléfono con soporte para "intercom", puedes usarlo para llamar a la oficina cuando salte la alarma, y escuchar en directo lo que esté ocurriendo y hablar en directo con los "visitantes" ;)
No hay comentarios:
Publicar un comentario