Trucos Asterisk, Entrega número 2

­Improvisa :: Informática :: Trucos Asterisk, entrega número 2Seguimos adelante con la iniciativa y proponemos de nuevo una segunda entrega de trucos de Asterisk.

En esta entrega os enseñaremos a hacer un Sistema de Alarma con Asterisk y una Webcam, sin necesidad de contratar nada nuevo y de los más fiable.

 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
%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

Este documento es una reproducción exacta de este creado por Servitux­

 
 

Comentarios

    Warning: Use of undefined constant type - assumed 'type' (this will throw an Error in a future version of PHP) in /home/improvisa_com/web/improvisa.com/public_html/wp-content/themes/grassland/comments.php on line 38
  • Devil dice:

    Gracias por la info!! (aunque si me pones un texto redactado en chino no sería capaz de ver la diferencia jejejejeje).

    Besos!