If you can't read please download the document
Upload
fernando-merces
View
2.475
Download
4
Embed Size (px)
Citation preview
Slide 1
Disparando eventos
com o Asterisk
Fernando Mercs
Apresentao
Fernando [email protected]
Bacharelando em Cincia da Computao e com formao tcnica em eletrnica, Fernando Mercs consultor tcnico da 4Linux, onde atua com sistemas livres. especialista em Comunicao Unificada e SL, tendo trabalhado com soft-PBX proprietrios e livres durante sua carreira. Possui certificaes Aastra/Ericsson, CompTIA e Microsoft, inclusive em UC. Tambm fundador e mantenedor dos sites sobre tecnologia Mente Binria e GNU/Linux Reversing.
Objetivos
Demonstrar como executar aes externas ao Asterisk.
Compreender a importncia deste recurso.
Definir os requisitos para disparo de eventos em hardwares externos.
Agenda
Quando e por que disparar um evento?
Comandos que executam comandos.
Exemplo de votao por URA.
Interfaceando hardware.
Exemplo de um controle de LEDs.
O que preciso saber para usar estes recursos.
Quando e por que disparar um evento
Implementao de recursos no disponveis nativamente.
Administrao remota.
Alternativa ao usurio de servios de rede.
Controle de dispositivos.
Comandos que executam comandos
System(caminho_do_comando argumentos)
Executa um comando no sistema.
Se o comando no executar de maneira correta, a varivel SYSTEMSTATUS conter o valor APPERROR.
prefervel tratar a lgica dentro do programa/script que ser chamado, mas alguma lgica pode (e deve) ser aplicada no contexto do Asterisk.
Comandos que executam comandos
TrySystem(caminho_do_comando argumentos)
Executa um comando no sistema.
Independente do resultado do comando, retorna 0 na SYSTEMSTATUS.
Votao por URA
[vota]exten => s,1,Wait(1)exten => s,n,Read(voto,votamenu,1)exten => s,n,GotoIf($[ "${voto}" = "1"]?votook)exten => s,n,GotoIf($[ "${voto}" = "2"]?votook)exten => s,n,GotoIf($[ "${voto}" = "3"]?votook)exten => s,n,Playback(invalido)exten => s,n,Goto(s,1)exten => s,n(votook),System(./vota.sh ${voto})exten => s,n,Playback(computado)exten => s,n,Hangup
Interfaceando hardware
Porta serial, paralela ou USB.
possvel fazer com scripting em alguns casos.
Para mais controle, necessrio um programa compilado.
Hardware extra necessrio.
Interfaceando hardware
Fonte: www.profelectro.info
Interfaceando hardware
Interfaceando hardware
Porta paralela
8 bits de dados.
Acionamento dos bits em paralelo.
TTL (5V / 0V)
Interfaceando hardware
Porta Paralela com o Parashell
parashell 0x378 1 #00000001parashell 0x378 255 #11111111parashell 0x378 128 #01000000parashell 0x378 0 #00000000
Interfaceando hardware
Porta USB
Interface USB.
Microcontrolador incluso.
Interfaceando hardware
int ledPin = 10; // LED conectado ao pino 10 da placa.void setup(){ pinMode(ledPin, OUTPUT); // Sada o pino.}void loop(){ digitalWrite(ledPin, HIGH); // Envia energia para o pino. delay(1000); // Aguarda 1 segundo digitalWrite(ledPin, LOW); // Desliga a energia do pino. delay(1000);}
O que preciso saber
Programar, mesmo que o bsico, sempre bom. A programao em BASH, no Linux, costuma atender bem o administrador do Asterisk.
A segurana dos scripts precisa ser pensada, afinal, quem executa os comandos externos o usurio que executa o Asterisk (geralmente, o root) e uma invaso pelo telefone se torna perigosa e ameaadora.
O que preciso saber
Eletrnica exige algum estudo. No se pode sair ligando tudo que pino ou cabo. Existem grandezas que precisam ser calculadas antes como intensidade de corrente, tenso eltrica e resistncia. Com um circuito mal feito, os resultados podem no ser concretos e/ou conter muita fumaa. =X
So inmeras operaes que podem ser feitas com o disparo de eventos. S depende de criatividade!
Referncias
www.voip-info.orgwww.arduino.ccwww.faqs.org/docs/Linux-mini/IO-Port-Programming.html#s5http://parashell.sourceforge.nethttp://www.mentebinaria.com.br/hardware/20-controle-de-dispositivos-com-a-porta-paralela
Perguntas?
Obrigado!
Rua Teixeira da Silva, 660 Paraso So Paulo SP(11) 2125-4747