SlideShare a Scribd company logo
1 of 7
Download to read offline
O USO DO ASTERISK PARA O CONTROLE REMOTO DE SISTEMAS DE AUTOMAÇÃO
MICHEL C. DIAS, DAIANA C. LUCENA, ELIEL P. SANTOS
Laboratório de Telefonia e Redes Convergentes, Departamento de Engenharia Elétrica, Instituto Federal de
Educação, Ciência e Tecnologia da Paraíba - IFPB
Avenida Primeiro de Maio, 720 - Jaguaribe, João Pessoa - PB, 5015-430
E-mails: michel.dias@ifpb.edu.br, daiana000@gmail.com, elielpoggi@gmail.com
Abstract This work describes a multiuser platform that allows the remote and concurrent control of automation systems
which uses an Arduino as main controller. It user interface is an IVR (Interactive Voice Response) that send commands over the
TCP/IP network established for the remote systems to be controlled. The platform was developed with Asterisk VoIP software
which is in public domain, free and widely spread in Internet. The validation occurred through two experiments set up and tested
in laboratory. The result is a low cost and open VoIP platform that fulfills what was described above.
Keywords Asterisk, Automation Systems, Arduino, VoIP.
Resumo Este trabalho descreve uma plataforma multiusuário que permite o controle remoto e concorrente de sistemas de au-
tomação que utilizam o Arduino como controlador principal. A interface com o usuário é uma URA (Unidade de Resposta audí-
vel) que de acordo com as interações dos usários envia comandos para os sistemas remotos a serem controlados. A plataforma
foi desenvolvida com o software VoIP Asterisk que é de domínio público, gratuito e amplamente utilizado na Internet. A valida-
ção foi feita em dois experimentos realizados em laboratório. O resultado é uma plataforma aberta e baixo custo que atende o
proposto no artigo.
Palavras-chave Asterisk, Sistemas de Automação, VoIP.
1 Introdução
É cada vez mais frequente o uso de sistemas de
automação para resolver problemas do cotidiano.
Soluções são dadas nas mais variadas áreas, desde
segurança até na área de saúde. No entanto, em mui-
tos casos, um dos fatores que dificultam a implemen-
tação das soluções de automação é o custo. Além
disto, os sistemas comerciais em sua grande maioria
são de difícil alteração e evolução tecnológica. Dian-
te do exposto, este artigo contribui para sanar estas
deficiências ao propor um sistema de baixo custo
formado por soluções de software gratuito (Asterisk)
de código aberto, e hardware livre (Arduino, 2013).
O software Asterisk (ASTERISK, 2013), nor-
malmente utilizada como PABX VoIP (Voice Over
IP) em empresas, contém um conjunto de aplicações
e funções que podem ser utilizadas para fins de au-
tomação. Estas permitem gerenciar e direcionar cha-
madas telefônicas, através de uma URA (Unidade de
Resposta Audível), a processos de automação, con-
trolando equipamentos remotamente, reduzindo cus-
tos e criando um sistema flexível. Um servidor cen-
tralizado executando o Asterisk pode ser responsável
pelo gerenciamento das chamadas e pelo envio de
comandos pela rede TCP/IP aos sistemas a serem
controlados (GONÇALVES, 2009), (KAPICAK et.
al, 2011).
O Asterisk é um software em código aberto que
executa as funções de uma central telefônica e recebe
diversas contribuições de programadores de todo o
mundo. O software pode ser customizado de acordo
com as necessidades do usuário (ASTERISK, 2013).
Algumas funcionalidades como o acesso a bases
de dados e comunicação com recursos externos po-
dem ser executadas através de scripts em outras lin-
guagens de programação, tais como Python, PHP
(Hypertext Preprocessor) e Perl a partir do plano de
discagem por meio do AGI (Asterisk Gateway Inter-
face) (MACURA et. al, 2012), (KELLERl, 2009),
(QUADEER, SHAH & GOEL, 2012).
O Arduino é uma placa eletrônica em código
aberto, sendo o seu ambiente para desenvolvimento
um software também em código aberto.
O objetivo deste trabalho é propor uma plata-
forma aberta VoIP (Voice Over IP), de baixo custo,
multiusuário e que permite acesso concorrente para
controle remoto de múltiplos sistemas de automação.
A plataforma desenvolvida permite gerenciar e
direcionar múltiplas chamadas telefônicas para o
controle de processos de automação, e pode ser apli-
cada de diversas situações. É um sistema de baixo
custo já que necessita apenas de um computador com
o software Asterisk instalado, uma placa Arduico
para cada sistema de automação a ser controlado e
uma conexão de rede TCP/IP entre os dois. E é aber-
ta porque utiliza apenas softwares/plataformas em
código aberto. Por outro lado, o Asterisk pode tam-
bém ser instalado em um dispositivo Android para
controlar uma quantidade pequena de dispositivos
Arduino. Estas características agregam à plataforma
proposta, alta flexibilidade e escalabilidade.
Tecnologias como bluetooth, GPRS e Web Ser-
vice tem sido utilizadas em sistemas de automação.
Comumente surgem novas pesquisas na área de sis-
temas de automação utilizando diferentes mecanis-
mos para o controle remoto (JIN et. al, 2000),
(KAPICAK et. al, 2011), (LEE & CHOI, 2003). A
plataforma proposta, sendo modular, aberta e facil-
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1674
mente modificável, pode ser utilizada junto a essas
novas tecnologias.
Atualmente, o Asterisk vem sendo utilizado por
diversos usuários em projetos para automação resi-
dencial (EGUINO, 2013) (HACKWORTH, 2012).
São príncípios de trabalhos como por exemplo em
(GRAVEN, 2009) que se baseiam a automação resi-
dencial utilizando Asterisk no qual é possível contro-
lar aplicações através dele. Projetos que descrevem a
integração do GSM com o Asterisk na qual o usuário
consegue registrar um servidor asterisk em celulares
e em computadores também tem sido alvo de pesqui-
sas (GUPTA, AGRAWAL & QADEER, 2013).
Este trabalho está organizado da seguinte forma:
inicialmente é descrito que microcontrolador foi uti-
lizado como também o software Asterisk. Em seguida
é explicado como é estabelecida a comunicação entre
o Asterisk e o Arduino e a arquitetura da plataforma.
Ao fim, são apresentadas a validação da plataforma e
as considerações finais.
2 Arduino
O Arduino é um circuito eletrônico para controle
de entrada/saída de dados baseada no microcontrola-
dor AVR de 8 bits, de arquitetura Harvard (memória
de dados e de programa são fisicamente separadas),
da Atmel. Seu projeto foi iniciado na cidade de Ivre,
Itália, em 2005, com o intuito de interagir em proje-
tos escolares, com um orçamento menor que outros
sistemas de prototipagem disponíveis na época. De
forma que as pessoas tivessem acesso ao código-
fonte do software e ao projeto do hardware (sendo
assim open-source), podendo estender e adequar a
plataforma às suas necessidades (ARDUINO, 2013).
O Arduino pode ter suas funcionalidades esten-
didas através de shields, que são placas contendo
dispositivos adicionais como receptores GPS, módu-
los Ethernet, bluetooth, zigBee, etc. Estes conectam-
se ao Arduino por barras de pinos empilháveis, man-
tendo o layout e permitindo que outro shield se en-
caixe acima.
Para o desenvolvimento do trabalho foi utilizado
um Arduino Uno, que é responsável por receber os
comandos de um Ethernet shield, processá-los e en-
viar sinais para que os dispositivos sejam acionados.
A Figura 1 apresenta os elementos de um Arduino
Uno (ARDUINO BRASIL, 2013).
Figura 1 – Elementos de um Arduino Uno (ARDUINO
BRASIL, 2013).
3 Asterisk
A plataforma Asterisk foi criada pela companhia
Digium, tem sido utilizado por pequenas e grandes
empresas, call centers, operadoras, provedores VoIP
e agências governamentais em todo o mundo.
A estrutura dinâmica da plataforma Asterisk
permite ao cliente adequar o cenário da empresa aos
diversos recursos tecnológicos por meio de aplica-
ções tais como: correio de voz, conferências, bilheta-
gem, chamadas em fila, call agents (gerencia funções
como roteamento de ligações e sinalização), Distri-
buição Automática de Chamadas (DAC), Unidade de
Resposta Audível (URA), música em espera, grava-
ção da chamada, bloqueio de chamadas, entre outras.
Essas aplicações são características padronizadas ou
que podem ser inseridas no software por meio do
plano de discagem (MADSEN, MEGGELEN &
SMITH, 2011).
Existem três tipos de dispositivos finais que po-
dem ser usados para o estabelecimento de comunica-
ção via rede TCP/IP: Telefone IP, Softfone e ATAs
(Analog Terminal Adaptors). Um Telefone IP possui
a interface de um telefone convencional, e pode co-
nectar-se diretamente a uma rede. O Softfone é uma
aplicação em software que se pode executar em um
computador ou em um celular, exercendo a função de
um telefone. ATAs são designados para permitir que
telefones convencionais possam ser conectados a
rede.
A arquitetura do Asterisk é organizada em módu-
los, isto é, componentes carregáveis que possibilitam
a execução de uma funcionalidade especifica, como o
driver de um canal (chan_sip.so) ou um recurso que
permite conexão com uma tecnologia externa
(func_odbc.so).
O plano de discagem é o ponto central do Aste-
risk, composto por contextos, extensões, prioridades
e aplicações. É por onde passam todas as chamadas, e
é o que determina como elas devem ser processadas.
Pode ser configurado utilizando a sintaxe tradicional
em /etc/Asterisk/extensions.conf.
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1675
Os contextos mantem blocos isolados no plano
de discagem, sendo definidos por um nome entre
colchetes ([]). Uma extensão definida em um contex-
to está isolada de extensões em outro contexto.
Quando um canal é configurado (no arquivo sip.conf
ou iax.conf), um dos parâmetros necessário é o con-
texto, que especifica o ponto no plano de discagem,
onde as instruções devem começar a ser executadas.
A Figura 2 ilustra isto (MADSEN, MEGGELEN &
SMITH, 2011).
Figura 2 – Relação entre um arquivo de configuração do canal e o
contexto no plano de discagem (MADSEN, MEGGELEN &
SMITH, 2011).
As extensões que são identificações dentro de
cada contexto definem os passos a serem seguidos no
plano de discagem. Cada extensão é composta por
um nome (ou número), prioridade (que define qual
passo irá ser executado) e aplicação. A sintaxe é a
seguinte:
exten => nome, prioridade, aplicação()
As prioridades são numeradas sequencialmente,
começando com “1”, e cada uma executa uma aplica-
ção especifica. A prioridade ”n” pode ser utilizada
para indicar que a anterior mais “1” deve ser execu-
tada.
As aplicações executam uma ação especifica
como tocar um som, procurar algo no banco de da-
dos, desligar ou atender uma chamada, entre outros.
O funcionamento e a operação do Asterisk estão
baseados em quatro componentes básicos: protocolo,
driver do canal, CODEC e aplicações.
3.1 Protocolo
Os protocolos de transporte TCP (Transport
Control Protocol) e UDP (User Datagram Protocol)
não foram desenvolvidos tendo como prioridade o
fluxo de dados em tempo real. E os dispositivos fi-
nais devem lidar com a perda de pacotes, aguardando
a chegada de alguns, requisitando uma retransmissão
ou desconsiderando os que foram perdidos. No en-
tanto, na transmissão de voz, se pacotes são perdidos
ou ocorrer um atraso superior a 150 milissegundos
haverá dificuldades em continuar uma conversação.
Sendo necessário para o estabelecimento de uma co-
nexão/chamada VoIP entre dispositivos finais um
protocolo de sinalização (MADSEN, MEGGELEN
& SMITH, 2011).
Quanto aos protocolos de sinalização, a reco-
mendação H.323 foi largamente implementada em
redes VoIP (Voice Over IP). Atualmente, tem se tor-
nado comum o uso do SIP (Session Initiation Proto-
col), considerado mais simples em relação ao H.323.
O SIP trata cada conexão como um par, negoci-
ando o estabelecimento da conexão entre eles, e
transporta apenas a sinalização sobre TCP ou UDP.
O RTP (Real Time Protocol) é usado junto ao SIP ou
H.323 para a transmissão dos pacotes de dados (que
contêm o áudio das chamadas) (GONÇALVES,
2013).
O IAX (Inter-Asterisk eXchange) é um protocolo
de aplicação aberto, que utiliza um processo de regis-
tro e autenticação similar ao SIP e foi produzido com
o objetivo de estabelecer comunicação entre dois
servidores Asterisk. A sinalização do canal e o fluxo
de dados são enviados por uma única porta UDP
(4569) (o protocolo RTP não é utilizado para o
transporte do áudio), e consegue reduzir a vazão uti-
lizada, através de uma característica denominada
trunk que possibilita a multiplexação de várias cha-
madas utilizando um único cabeçalho. E o IAX2 (2ª
versão do protocolo IAX) foi desenvolvido para fun-
cionar em uma rede que utilize NAT (Network
Adress Translation) (GONÇALVES, 2013),
(MADSEN, MEGGELEN & SMITH, 2011).
Em uma rede IP os dados serão transportados
utilizando como protocolo de transporte, o TCP,
UDP ou SCTP.
O TCP quase nunca é utilizado em VoIP, pois
embora garanta a entrega dos dados, acrescenta um
atraso significativo, aumentando a latência, não sen-
do eficiente para comunicação em tempo real. O pro-
posito do TCP é garantir a entrega dos pacotes, e por
isto, vários mecanismos são implementados, como
numeração dos pacotes, confirmação da entrega e
retransmissão de pacotes perdidos. Diferentemente
do TCP, o UDP não oferece nenhuma garantia de
entrega dos dados, conseguindo que os pacotes che-
guem ao destino final em um intervalo de tempo me-
nor.
O SCTP (Stream Control Transmission Proto-
col) foi desenvolvido para suprir as limitações do
TCP e do UDP. Consegue implementar técnicas mais
eficazes de controle de congestionamento (evitando
também ataques de negação de serviço), garante a
sequência dos pacotes entregues e apresenta baixa
latência [2, (KELLER, 2009)].
3.2 Driver do canal
São necessários para a realização de chamadas.
Cada protocolo utilizado (SIP, IAX, etc.) possui um
driver específico como descrito a seguir: chan_iax2 -
promove conexão entre dois terminais IAX, chan_sip
- driver do protocolo SIP, chan_mgcp - driver do
protocolo MGCP, chan_dahdi - possibilita comuni-
cação com a RTPC (Rede Pública de Telefonia Co-
mutada), entre outros. O driver do canal age como
um gateway para o Asterisk.
3.3 CODEC
Software dedicado a codificar e decodificar uma
informação digital. O propósito dos algoritmos de
codificação é apresentar diferentes relações entre
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1676
eficiência e qualidade. São caracterizados de acordo
com a taxa de compressão, perda de pacotes, vazão
utilizada e processamento computacional exigido,
possibilitam a detecção de silêncio e geração do ruí-
do de conforto. Como a vazão é finita, o número de
conversações simultâneas que uma conexão pode
estabelecer está diretamente relacionado ao CODEC
utilizado.
3.4 Aplicações
As aplicações definem, dentro do plano de dis-
cagem (extensions.conf), as ações que devem ser
aplicadas às chamadas, são responsáveis por exem-
plo, pelo estabelecimento da comunicação, toque de
uma gravação, recebimento de dígitos e desligamento
de uma chamada.
As aplicações são invocadas a partir do plano de
discagem. O plano de discagem realiza o gerencia-
mento das chamadas determinando a sequência de
passos por onde a chamada será conduzida. A maio-
ria das características como VoiceMail, conferência,
call center são executadas como aplicações.
3.5 AGI (Asterisk Gateway Interface)
Em várias situações se faz necessário estender as
funcionalidades da plataforma Asterisk utilizando
aplicações externas. O AGI permite ao desenvolve-
dor realizar o controle das chamadas ou parte dele, na
linguagem de programação de sua escolha, como
Perl, PHP e Python. Isto permite integrar o Asterisk
com outros sistemas, como um Arduino. Para isto, é
criado um script em /var/lib/Asterisk/agi-bin/, que
será executado por meio do AGI a partir do plano de
discagem. A sintaxe dentro do plano de discagem
deve ser a seguinte: exten => nome, prioridade, AGI
(<nome do arquivo>) (KELLER, 2009), (AGI,
2013).
Neste trabalho utilizou-se um script em PHP,
executado através do AGI, para estabelecer uma co-
nexão, via socket, entre a plataforma Asterisk e o
Arduino.
3.6 AstDB (Asterisk Database)
O AstDB foi utilizado neste trabalho para arma-
zenamento/consulta do login e senha dos usuários,
necessário durante a etapa de autenticação, para aces-
so ao menu da URA. Este é um banco de dados inter-
no do Asterisk que armazena os dados em grupos
chamados famílias com valores identificados por
chaves, onde cada chave possui um valor único. Cada
valor alocado está associado a uma família. Os dados
do AstDB ficam no arquivo /var/lib/Asterisk/astdb.
4 Estabelecimento da Comunicação
Esta seção irá descrever como se estabeleceu a
comunicação entre o servidor Asterisk e o Arduino
para o envio de comandos de controle.
Um processo envia e recebe mensagens da rede
utilizando uma interface de software denominada
socket, que é a interface de programação pelas quais
as aplicações de rede são inseridas na Internet. É uma
interface ou porta entre o processo de aplicação e a
camada de transporte dentro de uma máquina, que
especifica os detalhes de como o programa aplicativo
interage com o protocolo. Uma vez que o socket for
estabelecido, os aplicativos podem transferir infor-
mações (KUROSE & ROSS, 2010), (COMER,
2000).
Para realizar a comunicação entre o Arduino e o
Asterisk, estabeleceu-se um socket UDP, através de
um script, utilizando uma classe da programação
PHP, o PHPAGI (PHPAGI, 2013). Este foi especifi-
camente criado para o desenvolvimento de aplicações
com o AGI (Asterisk Gateway Interface) e está dis-
ponível para uso e distribuição sob os termos da
GNU GPL (General Public License). O Asterisk es-
pera encontrar o script no diretório
/var/lib/Asterisk/agi-bin/ para que o AGI possa exe-
cutá-lo. E os parâmetros recebidos pelo Asterisk du-
rante a execução do menu da URA, são passados
para o script PHP através do AGI. A sintaxe utilizada
no plano de discagem é a seguinte:
exten => nome, prioridade, AGI(<nome do ar-
quivo>, valor1, valor2, valor3).
Os parâmetros valor1, valor2 e valor3 serão ar-
mazenados respectivamente em $argv[1], $argv[2] e
argv[3]. A variável $argv[ ] é um array próprio da
linguagem PHP que armazena todos os parâmetros
passados para o script PHP, neste caso enviado atra-
vés do plano de discagem do Asterisk, do arquivo
extensions.conf. Os parâmetros são as informações
que o usuário escolheu durante o menu da URA.
Para a abertura do socket utilizou-se a função
fsockopen(), que apresenta a sintaxe: fsockopen ($Ar-
duino_ip, $Arduino_port, $errno, $errstr), onde
$Arduino_ip, $Arduino_port, $errno e $errstr são
variáveis que contém respectivamente, o endereço IP
do Arduino, o número da porta, uma mensagem de
erro e o valor “0” caso haja algum problema na inici-
alização do socket (PHP, 2013).
5 Arquitetura da Plataforma
A plataforma implementada é formada por um ser-
vidor Asterisk com uma URA configurada, os dispo-
sitivos a serem acionados, telefone IP, softfone ou
telefone analógico com um ATA e uma placa Ardui-
no com Ethernet shield para cada localidade a ser
controlada. A Figura 3 ilustra a arquitetura geral da
plataforma.
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1677
Figura 3 - Arquitetura geral do sistema. Fonte: Própria.
A Figura 4 ilustra a arquitetura detalhada do sis-
tema mostrando alguns pontos específicos.
Figura 4 - Arquitetura detalhada do sistema. Fonte: Própria.
Conforme pode ser observado na Figura 4, o
funcionamento da plataforma ocorre da seguinte for-
ma:
1. Inicialmente, o usuário inicia uma chamada
direcionada ao servidor Asterisk utilizando
um telefone IP (hardware ou software).
2. Quando a chamada é estabelecida, o usuário
é direcionado a um processo de autentica-
ção, em que um login e uma senha são soli-
citados.
3. Caso o passo 2 seja bem sucedido, o usuário
pode acessar o menu, para controle dos dis-
positivos, da URA.
4. De acordo com as escolhas do usuário, o As-
terisk irá receber e processar tons DTMF
(Dual-Tone Multi-Frequency), que corres-
ponderão dentro do menu, a um dos disposi-
tivos configurados previamente.
5. A escolha do usuário é direcionada a uma
ação, de acordo com o que foi configurado
no plano de discagem (dialplan).
6. O script PHP será executado através do
AGI, estabelecendo comunicação e envian-
do os comandos para o Arduino.
7. O Arduino envia sinais de controle para os
dispositivos.
Na configuração do softfone foram utilizados os
protocolos SIP/RTP para o estabelecimento da cha-
mada, alternativamente o protocolo IAX poderia ter
sido usado.
O arquivo de configuração do plano de discagem
é o extensions.conf, onde estão as aplicações e fun-
ções necessárias para o desenvolvimento do projeto.
Nele está configurada uma URA, que está relaciona-
da a cada um dos usuários, já que estes podem possu-
ir diferentes dispositivos a controlar. Ao escolher as
opções durante o menu da URA, o AGI executa o
programa em linguagem PHP, passando as opções
em forma de argumentos.
O plano de discagem possui uma etapa de auten-
ticação, no qual o usuário deve digitar seu login e sua
senha para que possa ter acesso ao sistema. Caso erre
o login ou a senha, o usuário retorna a um estágio
anterior para repetir o processo de identificação. Es-
tes dados foram previamente armazenados no banco
de dados do Asterisk, o astDB, onde cada usuário
possui sua entrada correspondente.
O bloco designado como interface elétrica é
composto por um circuito de chaveamento capaz de
elevar a corrente recebida do Arduino (40 mA), e
possibilitar o acionamento de dispositivos em 220 V.
Na programação do Arduino, para que alguns
dispositivos pudessem permanecer acionados por um
intervalo de tempo determinado pelo usuário, utili-
zou-se um temporizador interno através da função
millis(), que retorna o tempo em milissegundos desde
que o programa corrente está em execução. Este nú-
mero estoura aproximadamente após 50 dias
(ARDUINO, 2013).
É válido salientar que utilizar um temporizador in-
terno apresenta os seguintes inconvenientes: precisão
na contagem, acumulando erros em períodos muito
longos e ao ser desligado a contagem é interrompida,
sendo reiniciada quando o dispositivo for novamente
energizado. E devido à estrutura do sistema, cada vez
que o usuário acessar outro menu na URA, o progra-
ma também será reiniciado, interrompendo a tempo-
rização. A solução seria utilizar um RTC (Real Time
Clock), que é um módulo capaz de gerar uma conta-
gem de tempo precisa a partir da oscilação de um
cristal (no valor padrão de 32 KHz, (KAPICAK et.
al, 2011), (LEE & CHOI, 2003)), armazenando a
data (com ano, mês e dia) e a hora, minuto e segundo.
Mantendo a contagem de tempo mesmo que a energia
principal seja desligada, através de uma bateria de
backup. Para a comunicação destes módulos com
microcontroladores geralmente se utiliza o protocolo
I²C (Inter-Integrated Circuit).
6 Validação da Plataforma
Para fins de validação da plataforma construíram-
se em laboratório dois experimentos. No primeiro, o
usuário realiza uma chamada telefônica utilizando um
softfone configurado com uma conta SIP no servidor
Asterisk. O usuário escolhe opções através do menu
da URA e os comandos são enviados para os disposi-
tivos através da rede. A intenção deste cenário é si-
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1678
mular o controle de dispositivos comumente utiliza-
dos em utilizados em automação residencial.
A plataforma utilizada durante o experimento po-
de ser visualizada na Figura 5. A interface elétrica
entre o Arduino e os dispositivos é composta basica-
mente por relés e transistores atuando como chave. O
Arduino fornece uma corrente máxima de 40 mA, e
quatro de seus pinos estão configurados como saída e
ligados a transistores que por sua vez irão fazer com
que os relés comutem, sempre que o pino correspon-
dente estiver em nível lógico alto, ativando os dispo-
sitivos. A saída de tensão de 5 VCC do Arduino, que
estava sendo alimentado via USB, foi utilizada para
alimentar o circuito de chaveamento, o motor e o
cooler.
Figura 5 - Plataforma utilizada durante o experimento. Fonte:
Própria.
Estabeleceu-se comunicação entre o Asterisk e o
Ethernet shield através do socket criado pelo progra-
ma em PHP, e o Arduino foi responsável por geren-
ciar os sinais de saída.
O segundo cenário implementado foi um sistema
de irrigação temporizado. Nele o usuário determina o
tempo em minutos em que o sistema deve permane-
cer ativo, através da URA. Para realizar a irrigação
utilizou-se uma válvula solenoide normalmente fe-
chada. O seu princípio de funcionamento consiste em
uma bobina (formada por um condutor enrolado atra-
vés de um cilindro) que, quando energizada, gera
uma força fazendo com que o êmbolo da válvula seja
deslocado, permitindo a passagem do fluido, neste
caso a água. O tipo de válvula utilizada, ilustrada
pela Figura 6, é a que está presente em máquinas de
lavar roupa. Na Figura 7 é mostrado o protótipo de-
senvolvido.
Figura 6 – Valvula solenoide utilizada. Fonte: Própria.
Figura 7 – Protótipo desenvolvido para irrigação residencial.
Fonte: Própria.
Assim como acontece para o sistema de irrigação,
o plano de discagem pode ser adequado para receber
o intervalo de tempo (em minutos) durante o qual o
usuário deseje acionar os demais dispositivos.
Considerações Finais
Neste trabalho foi proposta uma solução para sis-
temas de automação. Inicialmente foi realizado um
estudo das ferramentas a serem utilizadas, o software
Asterisk e a plataforma microcontrolada Arduino. E
posteriormente como a comunicação entre eles seria
feita. Ao fim apresentou-se o sistema implementado
em laboratório.
A solução é simples, de baixo custo e baseada em
plataformas bem estabelecidas e abertas a modifica-
ções como o Asterisk e a placa Arduino com Ethernet
shield. Desta forma, reduziu-se o tempo de desenvol-
vimento e facilitaram-se futuras alterações no siste-
ma. Além disso, considera-se a solução abrangente,
pois pode ser utilizada em vários campos diferentes
da automação tais como residencial, agrícola, indus-
trial, engenharia biomédica.
Em trabalhos futuros o sistema pode ser modifica-
do. Outra plataforma microcontrolada que permita
comunicação pela Internet pode ser utilizada. O sis-
tema pode utilizar o reconhecimento de voz, em vez
do recebimento de dígitos.
Com relação à segurança do sistema, foi imple-
mentada uma autenticação do usuário na URA atra-
vés do login e senha. Mas, outras questões relaciona-
das à segurança do tráfego das informações dos usuá-
rios pela rede devem ser consideradas. Devem-se
procurar soluções que permitam garantir a confiden-
cialidade e integridade dos dados transmitidos. Neste
sentido propõe-se construir uma aplicação no Aste-
risk e fazer uma modificação no software do Ethernet
shield para que se possa estabelecer um túnel cripto-
grafado entre a URA e as plataformas microcontrola-
da.
Propõe-se também estender os cenários de valida-
ção para problemas relacionados à assistência a pes-
soas com necessidades especiais dentro do contexto
de tecnologia e-health. A título de exemplo, um te-
traplégico poderia utilizar o sistema para realizar
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1679
tarefas como ligar luzes, levantar a cama e ligar a
televisão sem o auxílio de outras pessoas bastando
para isso apenas adicionar o reconhecimento de voz à
solução.
Quanto ao acionamento de dispositivos por um
tempo predeterminado (com aplicação em um sistema
de irrigação, por exemplo), um hardware adicional
deve ser utilizado, um módulo RTC. Pois com a fun-
ção millis() ou outra função/procedimento que funci-
one como temporizador e seja interno ao Arduino, o
horário em que o dispositivo deve ser desligado será
perdido a cada reinicialização do programa, o que
ocorre a cada vez que o usuário acessa um menu dife-
rente na URA, ou a cada vez que o Arduino for rea-
limentado.
Referências Bibliográficas
AGI. AGI Scripting with PHP. Disponível em: < http://www.itp-
redial.com/class/weekly-notes/week4-notes/agi-scripting-
with-php> Acesso em: 10 Fev 2013.
ASTERISK. Disponível em: <http://www.asterisk.org/>. Acesso
em: 15 Jul 2013.
ARDUINO. Arduino Uno. Disponível em:
<http://Arduino.cc/en/Main/ArduinoBoardUno> Acesso em:
23 Jan 2013.
ARDUINO BRASIL. Nova versão do Arduino: Uno. Disponível
em: < http://www.arduinobrasil.com/2011/01/uno/> Acesso
em: 23 Mar 2013.
COMER, D., E. Redes de Computadores e Internet. 4ª ed.
Bookman Companhia Editora Ltda, São Paulo, 2007.
EGUINO, A. (2013). Asterisk & Z-Wave demo. Disponível em:
<http://domotica4all.com/2013/11/asterisk-z-wave-demo-in-
voip2day-2013/>. Acesso em: 12 Jun 2014.
GONÇALVES, F., E. Configuration Guide for Asterisk PBX: How
to build and configure a PBX with Open Source Software. 2ª
ed. V.Office Networks LTDA, 2007.
GRAVES, M. (2009). Controlling Applications From Asterisk.
Disponível em :
<http://www.mgraves.org/2009/01/controlling-applications-
from-asterisk/> Acesso em: 13 Jun 2014.
GUPTA, P; AGRAWAL, N and QADEER, M. A (2013). GSM
and PSTN Gateway for Asterisk EPBX. Wireless and Opti-
cal Communications Networks (WOCN), 2013 Tenth Inter-
national Conference on.
HACKWORTH, J. (2012). Home Automation with Asterisk and
FreePBX. Disponível em:
<http://www.jordanhackworth.com/home-automation-with-
asterisk-and-freepbx/>. Acesso em: 12 Jun 2014.
JIN, J., JIN+, J., WANG, Y., ZHAO, K. and HU, J. (2008)
Development of Remote-Controlled Home Automation
System with Wireless Sensor Network. Fifth IEEE
International Symposium on Embedded Computing, pp.
169-173.
KAPICAK, L., NEVLUD, P., ZDRALEK, J., DUBEC, P. and
PLUCAR, J (2011). Remote Control of Asterisk via Web
Services. Telecommunications and Signal Processing, pp.
27-30.
KELLER, A. Asterisk na prática. 1ª ed. São Paulo: Novatec,
2009.
KUROSE, J., F., ROSS, K., W. Redes de Computadores e a
Internet: Uma Abordagem Top-down. 5ª ed. Addison-
Wesley, 2010.
LEE, Y., K. and CHOI, J., W. (2003). Remote-Controlled Home
Automation System via Bluetooth Home Network. SICE
Annual Conference in Fukui, August 4-6, pp. 2824-2829.
MACURA, L.; VOZNAK, M.; TOMALA, K. and SLACHTA, J.
(2012). Embedded multiplatform SIP server
solution, Telecommunications and Signal Processing (TSP),
2012 35th International Conference on , vol., no., pp.263 -
266.
MADSEN, L., MEGGELEN, J., V., and BRYANT, R. (2011).
Asterisk: The Definitive Guide. 3 ed. USA: O’Reilly Media.
QADEER, M.A.; SHAH, K. and GOEL, U., (2012). Voice - Video
Communication on Mobile Phones and PCs' Using Asterisk
EPBX. Communication Systems and Network Technologies
(CSNT), 2012 International Conference on. pp.534-538.
PHP. PHP Manual. Disponível em:
<http://www.php.net/manual/pt_BR/language.functions.php
> Acesso em: 22 Jan 2013.
PHPAGI. PHPAGI: Where PHP connects to Asterisk. Disponível
em: <http://phpagi.sourceforge.net/> Acesso em: 20 Jan
2013.
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1680

More Related Content

Similar to Projeto asteris para controle remoto

Automatização residencial com dispositivos móveis
Automatização residencial com dispositivos móveisAutomatização residencial com dispositivos móveis
Automatização residencial com dispositivos móveisDavidson Fernando
 
Automação Residencial com Controle por Smartphone Android
Automação Residencial com Controle por Smartphone AndroidAutomação Residencial com Controle por Smartphone Android
Automação Residencial com Controle por Smartphone AndroidGabriel Gaspar
 
Automacao residencial, a casa inteligente
Automacao residencial, a casa inteligenteAutomacao residencial, a casa inteligente
Automacao residencial, a casa inteligenteDouglas Scriptore
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem FioDouglas Frari
 
Uma Análise dos Sistemas de Comunicação IP
Uma Análise dos Sistemas de Comunicação IPUma Análise dos Sistemas de Comunicação IP
Uma Análise dos Sistemas de Comunicação IPIP10
 
Java Micro Edition Applied
Java Micro Edition AppliedJava Micro Edition Applied
Java Micro Edition Appliedmarcelobeckmann
 
Tecnologia da informacao
Tecnologia da informacaoTecnologia da informacao
Tecnologia da informacaoLuiz
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...Jucemar Dimon
 
White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013SpinEngenharia
 
Artigo sobre a Bahr na Revista Robótica 87
Artigo sobre a Bahr na Revista Robótica 87Artigo sobre a Bahr na Revista Robótica 87
Artigo sobre a Bahr na Revista Robótica 87fluidotronica
 
Internet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningInternet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningAlvaro Viebrantz
 
Cv Paulo Alonso
Cv Paulo AlonsoCv Paulo Alonso
Cv Paulo AlonsoProggo
 
Estudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software Livre
Estudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software LivreEstudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software Livre
Estudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software LivreAntonio Marcos Alberti
 
Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011afranio47
 
Sunlit technologies portfolio produtos &amp; serviços agosto2016
Sunlit technologies   portfolio produtos &amp; serviços  agosto2016Sunlit technologies   portfolio produtos &amp; serviços  agosto2016
Sunlit technologies portfolio produtos &amp; serviços agosto2016Antonio Carlos Scola - MSc
 

Similar to Projeto asteris para controle remoto (20)

Automatização residencial com dispositivos móveis
Automatização residencial com dispositivos móveisAutomatização residencial com dispositivos móveis
Automatização residencial com dispositivos móveis
 
Automação Residencial com Controle por Smartphone Android
Automação Residencial com Controle por Smartphone AndroidAutomação Residencial com Controle por Smartphone Android
Automação Residencial com Controle por Smartphone Android
 
Automacao residencial, a casa inteligente
Automacao residencial, a casa inteligenteAutomacao residencial, a casa inteligente
Automacao residencial, a casa inteligente
 
Droidlar 2011
Droidlar 2011Droidlar 2011
Droidlar 2011
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem Fio
 
Uma Análise dos Sistemas de Comunicação IP
Uma Análise dos Sistemas de Comunicação IPUma Análise dos Sistemas de Comunicação IP
Uma Análise dos Sistemas de Comunicação IP
 
Java Micro Edition Applied
Java Micro Edition AppliedJava Micro Edition Applied
Java Micro Edition Applied
 
DOOR BLE
DOOR BLEDOOR BLE
DOOR BLE
 
Tecnologia da informacao
Tecnologia da informacaoTecnologia da informacao
Tecnologia da informacao
 
Restaurante
RestauranteRestaurante
Restaurante
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
 
White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013
 
Asterisk
AsteriskAsterisk
Asterisk
 
Artigo sobre a Bahr na Revista Robótica 87
Artigo sobre a Bahr na Revista Robótica 87Artigo sobre a Bahr na Revista Robótica 87
Artigo sobre a Bahr na Revista Robótica 87
 
Internet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningInternet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine Learning
 
Cv Paulo Alonso
Cv Paulo AlonsoCv Paulo Alonso
Cv Paulo Alonso
 
Estudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software Livre
Estudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software LivreEstudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software Livre
Estudo e Desenvolvimento de Soluções de Voz Sobre Ip Baseado Em Software Livre
 
Scada e scdc trabalho
Scada e scdc   trabalhoScada e scdc   trabalho
Scada e scdc trabalho
 
Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011
 
Sunlit technologies portfolio produtos &amp; serviços agosto2016
Sunlit technologies   portfolio produtos &amp; serviços  agosto2016Sunlit technologies   portfolio produtos &amp; serviços  agosto2016
Sunlit technologies portfolio produtos &amp; serviços agosto2016
 

Recently uploaded

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 

Recently uploaded (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

Projeto asteris para controle remoto

  • 1. O USO DO ASTERISK PARA O CONTROLE REMOTO DE SISTEMAS DE AUTOMAÇÃO MICHEL C. DIAS, DAIANA C. LUCENA, ELIEL P. SANTOS Laboratório de Telefonia e Redes Convergentes, Departamento de Engenharia Elétrica, Instituto Federal de Educação, Ciência e Tecnologia da Paraíba - IFPB Avenida Primeiro de Maio, 720 - Jaguaribe, João Pessoa - PB, 5015-430 E-mails: michel.dias@ifpb.edu.br, daiana000@gmail.com, elielpoggi@gmail.com Abstract This work describes a multiuser platform that allows the remote and concurrent control of automation systems which uses an Arduino as main controller. It user interface is an IVR (Interactive Voice Response) that send commands over the TCP/IP network established for the remote systems to be controlled. The platform was developed with Asterisk VoIP software which is in public domain, free and widely spread in Internet. The validation occurred through two experiments set up and tested in laboratory. The result is a low cost and open VoIP platform that fulfills what was described above. Keywords Asterisk, Automation Systems, Arduino, VoIP. Resumo Este trabalho descreve uma plataforma multiusuário que permite o controle remoto e concorrente de sistemas de au- tomação que utilizam o Arduino como controlador principal. A interface com o usuário é uma URA (Unidade de Resposta audí- vel) que de acordo com as interações dos usários envia comandos para os sistemas remotos a serem controlados. A plataforma foi desenvolvida com o software VoIP Asterisk que é de domínio público, gratuito e amplamente utilizado na Internet. A valida- ção foi feita em dois experimentos realizados em laboratório. O resultado é uma plataforma aberta e baixo custo que atende o proposto no artigo. Palavras-chave Asterisk, Sistemas de Automação, VoIP. 1 Introdução É cada vez mais frequente o uso de sistemas de automação para resolver problemas do cotidiano. Soluções são dadas nas mais variadas áreas, desde segurança até na área de saúde. No entanto, em mui- tos casos, um dos fatores que dificultam a implemen- tação das soluções de automação é o custo. Além disto, os sistemas comerciais em sua grande maioria são de difícil alteração e evolução tecnológica. Dian- te do exposto, este artigo contribui para sanar estas deficiências ao propor um sistema de baixo custo formado por soluções de software gratuito (Asterisk) de código aberto, e hardware livre (Arduino, 2013). O software Asterisk (ASTERISK, 2013), nor- malmente utilizada como PABX VoIP (Voice Over IP) em empresas, contém um conjunto de aplicações e funções que podem ser utilizadas para fins de au- tomação. Estas permitem gerenciar e direcionar cha- madas telefônicas, através de uma URA (Unidade de Resposta Audível), a processos de automação, con- trolando equipamentos remotamente, reduzindo cus- tos e criando um sistema flexível. Um servidor cen- tralizado executando o Asterisk pode ser responsável pelo gerenciamento das chamadas e pelo envio de comandos pela rede TCP/IP aos sistemas a serem controlados (GONÇALVES, 2009), (KAPICAK et. al, 2011). O Asterisk é um software em código aberto que executa as funções de uma central telefônica e recebe diversas contribuições de programadores de todo o mundo. O software pode ser customizado de acordo com as necessidades do usuário (ASTERISK, 2013). Algumas funcionalidades como o acesso a bases de dados e comunicação com recursos externos po- dem ser executadas através de scripts em outras lin- guagens de programação, tais como Python, PHP (Hypertext Preprocessor) e Perl a partir do plano de discagem por meio do AGI (Asterisk Gateway Inter- face) (MACURA et. al, 2012), (KELLERl, 2009), (QUADEER, SHAH & GOEL, 2012). O Arduino é uma placa eletrônica em código aberto, sendo o seu ambiente para desenvolvimento um software também em código aberto. O objetivo deste trabalho é propor uma plata- forma aberta VoIP (Voice Over IP), de baixo custo, multiusuário e que permite acesso concorrente para controle remoto de múltiplos sistemas de automação. A plataforma desenvolvida permite gerenciar e direcionar múltiplas chamadas telefônicas para o controle de processos de automação, e pode ser apli- cada de diversas situações. É um sistema de baixo custo já que necessita apenas de um computador com o software Asterisk instalado, uma placa Arduico para cada sistema de automação a ser controlado e uma conexão de rede TCP/IP entre os dois. E é aber- ta porque utiliza apenas softwares/plataformas em código aberto. Por outro lado, o Asterisk pode tam- bém ser instalado em um dispositivo Android para controlar uma quantidade pequena de dispositivos Arduino. Estas características agregam à plataforma proposta, alta flexibilidade e escalabilidade. Tecnologias como bluetooth, GPRS e Web Ser- vice tem sido utilizadas em sistemas de automação. Comumente surgem novas pesquisas na área de sis- temas de automação utilizando diferentes mecanis- mos para o controle remoto (JIN et. al, 2000), (KAPICAK et. al, 2011), (LEE & CHOI, 2003). A plataforma proposta, sendo modular, aberta e facil- Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 1674
  • 2. mente modificável, pode ser utilizada junto a essas novas tecnologias. Atualmente, o Asterisk vem sendo utilizado por diversos usuários em projetos para automação resi- dencial (EGUINO, 2013) (HACKWORTH, 2012). São príncípios de trabalhos como por exemplo em (GRAVEN, 2009) que se baseiam a automação resi- dencial utilizando Asterisk no qual é possível contro- lar aplicações através dele. Projetos que descrevem a integração do GSM com o Asterisk na qual o usuário consegue registrar um servidor asterisk em celulares e em computadores também tem sido alvo de pesqui- sas (GUPTA, AGRAWAL & QADEER, 2013). Este trabalho está organizado da seguinte forma: inicialmente é descrito que microcontrolador foi uti- lizado como também o software Asterisk. Em seguida é explicado como é estabelecida a comunicação entre o Asterisk e o Arduino e a arquitetura da plataforma. Ao fim, são apresentadas a validação da plataforma e as considerações finais. 2 Arduino O Arduino é um circuito eletrônico para controle de entrada/saída de dados baseada no microcontrola- dor AVR de 8 bits, de arquitetura Harvard (memória de dados e de programa são fisicamente separadas), da Atmel. Seu projeto foi iniciado na cidade de Ivre, Itália, em 2005, com o intuito de interagir em proje- tos escolares, com um orçamento menor que outros sistemas de prototipagem disponíveis na época. De forma que as pessoas tivessem acesso ao código- fonte do software e ao projeto do hardware (sendo assim open-source), podendo estender e adequar a plataforma às suas necessidades (ARDUINO, 2013). O Arduino pode ter suas funcionalidades esten- didas através de shields, que são placas contendo dispositivos adicionais como receptores GPS, módu- los Ethernet, bluetooth, zigBee, etc. Estes conectam- se ao Arduino por barras de pinos empilháveis, man- tendo o layout e permitindo que outro shield se en- caixe acima. Para o desenvolvimento do trabalho foi utilizado um Arduino Uno, que é responsável por receber os comandos de um Ethernet shield, processá-los e en- viar sinais para que os dispositivos sejam acionados. A Figura 1 apresenta os elementos de um Arduino Uno (ARDUINO BRASIL, 2013). Figura 1 – Elementos de um Arduino Uno (ARDUINO BRASIL, 2013). 3 Asterisk A plataforma Asterisk foi criada pela companhia Digium, tem sido utilizado por pequenas e grandes empresas, call centers, operadoras, provedores VoIP e agências governamentais em todo o mundo. A estrutura dinâmica da plataforma Asterisk permite ao cliente adequar o cenário da empresa aos diversos recursos tecnológicos por meio de aplica- ções tais como: correio de voz, conferências, bilheta- gem, chamadas em fila, call agents (gerencia funções como roteamento de ligações e sinalização), Distri- buição Automática de Chamadas (DAC), Unidade de Resposta Audível (URA), música em espera, grava- ção da chamada, bloqueio de chamadas, entre outras. Essas aplicações são características padronizadas ou que podem ser inseridas no software por meio do plano de discagem (MADSEN, MEGGELEN & SMITH, 2011). Existem três tipos de dispositivos finais que po- dem ser usados para o estabelecimento de comunica- ção via rede TCP/IP: Telefone IP, Softfone e ATAs (Analog Terminal Adaptors). Um Telefone IP possui a interface de um telefone convencional, e pode co- nectar-se diretamente a uma rede. O Softfone é uma aplicação em software que se pode executar em um computador ou em um celular, exercendo a função de um telefone. ATAs são designados para permitir que telefones convencionais possam ser conectados a rede. A arquitetura do Asterisk é organizada em módu- los, isto é, componentes carregáveis que possibilitam a execução de uma funcionalidade especifica, como o driver de um canal (chan_sip.so) ou um recurso que permite conexão com uma tecnologia externa (func_odbc.so). O plano de discagem é o ponto central do Aste- risk, composto por contextos, extensões, prioridades e aplicações. É por onde passam todas as chamadas, e é o que determina como elas devem ser processadas. Pode ser configurado utilizando a sintaxe tradicional em /etc/Asterisk/extensions.conf. Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 1675
  • 3. Os contextos mantem blocos isolados no plano de discagem, sendo definidos por um nome entre colchetes ([]). Uma extensão definida em um contex- to está isolada de extensões em outro contexto. Quando um canal é configurado (no arquivo sip.conf ou iax.conf), um dos parâmetros necessário é o con- texto, que especifica o ponto no plano de discagem, onde as instruções devem começar a ser executadas. A Figura 2 ilustra isto (MADSEN, MEGGELEN & SMITH, 2011). Figura 2 – Relação entre um arquivo de configuração do canal e o contexto no plano de discagem (MADSEN, MEGGELEN & SMITH, 2011). As extensões que são identificações dentro de cada contexto definem os passos a serem seguidos no plano de discagem. Cada extensão é composta por um nome (ou número), prioridade (que define qual passo irá ser executado) e aplicação. A sintaxe é a seguinte: exten => nome, prioridade, aplicação() As prioridades são numeradas sequencialmente, começando com “1”, e cada uma executa uma aplica- ção especifica. A prioridade ”n” pode ser utilizada para indicar que a anterior mais “1” deve ser execu- tada. As aplicações executam uma ação especifica como tocar um som, procurar algo no banco de da- dos, desligar ou atender uma chamada, entre outros. O funcionamento e a operação do Asterisk estão baseados em quatro componentes básicos: protocolo, driver do canal, CODEC e aplicações. 3.1 Protocolo Os protocolos de transporte TCP (Transport Control Protocol) e UDP (User Datagram Protocol) não foram desenvolvidos tendo como prioridade o fluxo de dados em tempo real. E os dispositivos fi- nais devem lidar com a perda de pacotes, aguardando a chegada de alguns, requisitando uma retransmissão ou desconsiderando os que foram perdidos. No en- tanto, na transmissão de voz, se pacotes são perdidos ou ocorrer um atraso superior a 150 milissegundos haverá dificuldades em continuar uma conversação. Sendo necessário para o estabelecimento de uma co- nexão/chamada VoIP entre dispositivos finais um protocolo de sinalização (MADSEN, MEGGELEN & SMITH, 2011). Quanto aos protocolos de sinalização, a reco- mendação H.323 foi largamente implementada em redes VoIP (Voice Over IP). Atualmente, tem se tor- nado comum o uso do SIP (Session Initiation Proto- col), considerado mais simples em relação ao H.323. O SIP trata cada conexão como um par, negoci- ando o estabelecimento da conexão entre eles, e transporta apenas a sinalização sobre TCP ou UDP. O RTP (Real Time Protocol) é usado junto ao SIP ou H.323 para a transmissão dos pacotes de dados (que contêm o áudio das chamadas) (GONÇALVES, 2013). O IAX (Inter-Asterisk eXchange) é um protocolo de aplicação aberto, que utiliza um processo de regis- tro e autenticação similar ao SIP e foi produzido com o objetivo de estabelecer comunicação entre dois servidores Asterisk. A sinalização do canal e o fluxo de dados são enviados por uma única porta UDP (4569) (o protocolo RTP não é utilizado para o transporte do áudio), e consegue reduzir a vazão uti- lizada, através de uma característica denominada trunk que possibilita a multiplexação de várias cha- madas utilizando um único cabeçalho. E o IAX2 (2ª versão do protocolo IAX) foi desenvolvido para fun- cionar em uma rede que utilize NAT (Network Adress Translation) (GONÇALVES, 2013), (MADSEN, MEGGELEN & SMITH, 2011). Em uma rede IP os dados serão transportados utilizando como protocolo de transporte, o TCP, UDP ou SCTP. O TCP quase nunca é utilizado em VoIP, pois embora garanta a entrega dos dados, acrescenta um atraso significativo, aumentando a latência, não sen- do eficiente para comunicação em tempo real. O pro- posito do TCP é garantir a entrega dos pacotes, e por isto, vários mecanismos são implementados, como numeração dos pacotes, confirmação da entrega e retransmissão de pacotes perdidos. Diferentemente do TCP, o UDP não oferece nenhuma garantia de entrega dos dados, conseguindo que os pacotes che- guem ao destino final em um intervalo de tempo me- nor. O SCTP (Stream Control Transmission Proto- col) foi desenvolvido para suprir as limitações do TCP e do UDP. Consegue implementar técnicas mais eficazes de controle de congestionamento (evitando também ataques de negação de serviço), garante a sequência dos pacotes entregues e apresenta baixa latência [2, (KELLER, 2009)]. 3.2 Driver do canal São necessários para a realização de chamadas. Cada protocolo utilizado (SIP, IAX, etc.) possui um driver específico como descrito a seguir: chan_iax2 - promove conexão entre dois terminais IAX, chan_sip - driver do protocolo SIP, chan_mgcp - driver do protocolo MGCP, chan_dahdi - possibilita comuni- cação com a RTPC (Rede Pública de Telefonia Co- mutada), entre outros. O driver do canal age como um gateway para o Asterisk. 3.3 CODEC Software dedicado a codificar e decodificar uma informação digital. O propósito dos algoritmos de codificação é apresentar diferentes relações entre Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 1676
  • 4. eficiência e qualidade. São caracterizados de acordo com a taxa de compressão, perda de pacotes, vazão utilizada e processamento computacional exigido, possibilitam a detecção de silêncio e geração do ruí- do de conforto. Como a vazão é finita, o número de conversações simultâneas que uma conexão pode estabelecer está diretamente relacionado ao CODEC utilizado. 3.4 Aplicações As aplicações definem, dentro do plano de dis- cagem (extensions.conf), as ações que devem ser aplicadas às chamadas, são responsáveis por exem- plo, pelo estabelecimento da comunicação, toque de uma gravação, recebimento de dígitos e desligamento de uma chamada. As aplicações são invocadas a partir do plano de discagem. O plano de discagem realiza o gerencia- mento das chamadas determinando a sequência de passos por onde a chamada será conduzida. A maio- ria das características como VoiceMail, conferência, call center são executadas como aplicações. 3.5 AGI (Asterisk Gateway Interface) Em várias situações se faz necessário estender as funcionalidades da plataforma Asterisk utilizando aplicações externas. O AGI permite ao desenvolve- dor realizar o controle das chamadas ou parte dele, na linguagem de programação de sua escolha, como Perl, PHP e Python. Isto permite integrar o Asterisk com outros sistemas, como um Arduino. Para isto, é criado um script em /var/lib/Asterisk/agi-bin/, que será executado por meio do AGI a partir do plano de discagem. A sintaxe dentro do plano de discagem deve ser a seguinte: exten => nome, prioridade, AGI (<nome do arquivo>) (KELLER, 2009), (AGI, 2013). Neste trabalho utilizou-se um script em PHP, executado através do AGI, para estabelecer uma co- nexão, via socket, entre a plataforma Asterisk e o Arduino. 3.6 AstDB (Asterisk Database) O AstDB foi utilizado neste trabalho para arma- zenamento/consulta do login e senha dos usuários, necessário durante a etapa de autenticação, para aces- so ao menu da URA. Este é um banco de dados inter- no do Asterisk que armazena os dados em grupos chamados famílias com valores identificados por chaves, onde cada chave possui um valor único. Cada valor alocado está associado a uma família. Os dados do AstDB ficam no arquivo /var/lib/Asterisk/astdb. 4 Estabelecimento da Comunicação Esta seção irá descrever como se estabeleceu a comunicação entre o servidor Asterisk e o Arduino para o envio de comandos de controle. Um processo envia e recebe mensagens da rede utilizando uma interface de software denominada socket, que é a interface de programação pelas quais as aplicações de rede são inseridas na Internet. É uma interface ou porta entre o processo de aplicação e a camada de transporte dentro de uma máquina, que especifica os detalhes de como o programa aplicativo interage com o protocolo. Uma vez que o socket for estabelecido, os aplicativos podem transferir infor- mações (KUROSE & ROSS, 2010), (COMER, 2000). Para realizar a comunicação entre o Arduino e o Asterisk, estabeleceu-se um socket UDP, através de um script, utilizando uma classe da programação PHP, o PHPAGI (PHPAGI, 2013). Este foi especifi- camente criado para o desenvolvimento de aplicações com o AGI (Asterisk Gateway Interface) e está dis- ponível para uso e distribuição sob os termos da GNU GPL (General Public License). O Asterisk es- pera encontrar o script no diretório /var/lib/Asterisk/agi-bin/ para que o AGI possa exe- cutá-lo. E os parâmetros recebidos pelo Asterisk du- rante a execução do menu da URA, são passados para o script PHP através do AGI. A sintaxe utilizada no plano de discagem é a seguinte: exten => nome, prioridade, AGI(<nome do ar- quivo>, valor1, valor2, valor3). Os parâmetros valor1, valor2 e valor3 serão ar- mazenados respectivamente em $argv[1], $argv[2] e argv[3]. A variável $argv[ ] é um array próprio da linguagem PHP que armazena todos os parâmetros passados para o script PHP, neste caso enviado atra- vés do plano de discagem do Asterisk, do arquivo extensions.conf. Os parâmetros são as informações que o usuário escolheu durante o menu da URA. Para a abertura do socket utilizou-se a função fsockopen(), que apresenta a sintaxe: fsockopen ($Ar- duino_ip, $Arduino_port, $errno, $errstr), onde $Arduino_ip, $Arduino_port, $errno e $errstr são variáveis que contém respectivamente, o endereço IP do Arduino, o número da porta, uma mensagem de erro e o valor “0” caso haja algum problema na inici- alização do socket (PHP, 2013). 5 Arquitetura da Plataforma A plataforma implementada é formada por um ser- vidor Asterisk com uma URA configurada, os dispo- sitivos a serem acionados, telefone IP, softfone ou telefone analógico com um ATA e uma placa Ardui- no com Ethernet shield para cada localidade a ser controlada. A Figura 3 ilustra a arquitetura geral da plataforma. Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 1677
  • 5. Figura 3 - Arquitetura geral do sistema. Fonte: Própria. A Figura 4 ilustra a arquitetura detalhada do sis- tema mostrando alguns pontos específicos. Figura 4 - Arquitetura detalhada do sistema. Fonte: Própria. Conforme pode ser observado na Figura 4, o funcionamento da plataforma ocorre da seguinte for- ma: 1. Inicialmente, o usuário inicia uma chamada direcionada ao servidor Asterisk utilizando um telefone IP (hardware ou software). 2. Quando a chamada é estabelecida, o usuário é direcionado a um processo de autentica- ção, em que um login e uma senha são soli- citados. 3. Caso o passo 2 seja bem sucedido, o usuário pode acessar o menu, para controle dos dis- positivos, da URA. 4. De acordo com as escolhas do usuário, o As- terisk irá receber e processar tons DTMF (Dual-Tone Multi-Frequency), que corres- ponderão dentro do menu, a um dos disposi- tivos configurados previamente. 5. A escolha do usuário é direcionada a uma ação, de acordo com o que foi configurado no plano de discagem (dialplan). 6. O script PHP será executado através do AGI, estabelecendo comunicação e envian- do os comandos para o Arduino. 7. O Arduino envia sinais de controle para os dispositivos. Na configuração do softfone foram utilizados os protocolos SIP/RTP para o estabelecimento da cha- mada, alternativamente o protocolo IAX poderia ter sido usado. O arquivo de configuração do plano de discagem é o extensions.conf, onde estão as aplicações e fun- ções necessárias para o desenvolvimento do projeto. Nele está configurada uma URA, que está relaciona- da a cada um dos usuários, já que estes podem possu- ir diferentes dispositivos a controlar. Ao escolher as opções durante o menu da URA, o AGI executa o programa em linguagem PHP, passando as opções em forma de argumentos. O plano de discagem possui uma etapa de auten- ticação, no qual o usuário deve digitar seu login e sua senha para que possa ter acesso ao sistema. Caso erre o login ou a senha, o usuário retorna a um estágio anterior para repetir o processo de identificação. Es- tes dados foram previamente armazenados no banco de dados do Asterisk, o astDB, onde cada usuário possui sua entrada correspondente. O bloco designado como interface elétrica é composto por um circuito de chaveamento capaz de elevar a corrente recebida do Arduino (40 mA), e possibilitar o acionamento de dispositivos em 220 V. Na programação do Arduino, para que alguns dispositivos pudessem permanecer acionados por um intervalo de tempo determinado pelo usuário, utili- zou-se um temporizador interno através da função millis(), que retorna o tempo em milissegundos desde que o programa corrente está em execução. Este nú- mero estoura aproximadamente após 50 dias (ARDUINO, 2013). É válido salientar que utilizar um temporizador in- terno apresenta os seguintes inconvenientes: precisão na contagem, acumulando erros em períodos muito longos e ao ser desligado a contagem é interrompida, sendo reiniciada quando o dispositivo for novamente energizado. E devido à estrutura do sistema, cada vez que o usuário acessar outro menu na URA, o progra- ma também será reiniciado, interrompendo a tempo- rização. A solução seria utilizar um RTC (Real Time Clock), que é um módulo capaz de gerar uma conta- gem de tempo precisa a partir da oscilação de um cristal (no valor padrão de 32 KHz, (KAPICAK et. al, 2011), (LEE & CHOI, 2003)), armazenando a data (com ano, mês e dia) e a hora, minuto e segundo. Mantendo a contagem de tempo mesmo que a energia principal seja desligada, através de uma bateria de backup. Para a comunicação destes módulos com microcontroladores geralmente se utiliza o protocolo I²C (Inter-Integrated Circuit). 6 Validação da Plataforma Para fins de validação da plataforma construíram- se em laboratório dois experimentos. No primeiro, o usuário realiza uma chamada telefônica utilizando um softfone configurado com uma conta SIP no servidor Asterisk. O usuário escolhe opções através do menu da URA e os comandos são enviados para os disposi- tivos através da rede. A intenção deste cenário é si- Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 1678
  • 6. mular o controle de dispositivos comumente utiliza- dos em utilizados em automação residencial. A plataforma utilizada durante o experimento po- de ser visualizada na Figura 5. A interface elétrica entre o Arduino e os dispositivos é composta basica- mente por relés e transistores atuando como chave. O Arduino fornece uma corrente máxima de 40 mA, e quatro de seus pinos estão configurados como saída e ligados a transistores que por sua vez irão fazer com que os relés comutem, sempre que o pino correspon- dente estiver em nível lógico alto, ativando os dispo- sitivos. A saída de tensão de 5 VCC do Arduino, que estava sendo alimentado via USB, foi utilizada para alimentar o circuito de chaveamento, o motor e o cooler. Figura 5 - Plataforma utilizada durante o experimento. Fonte: Própria. Estabeleceu-se comunicação entre o Asterisk e o Ethernet shield através do socket criado pelo progra- ma em PHP, e o Arduino foi responsável por geren- ciar os sinais de saída. O segundo cenário implementado foi um sistema de irrigação temporizado. Nele o usuário determina o tempo em minutos em que o sistema deve permane- cer ativo, através da URA. Para realizar a irrigação utilizou-se uma válvula solenoide normalmente fe- chada. O seu princípio de funcionamento consiste em uma bobina (formada por um condutor enrolado atra- vés de um cilindro) que, quando energizada, gera uma força fazendo com que o êmbolo da válvula seja deslocado, permitindo a passagem do fluido, neste caso a água. O tipo de válvula utilizada, ilustrada pela Figura 6, é a que está presente em máquinas de lavar roupa. Na Figura 7 é mostrado o protótipo de- senvolvido. Figura 6 – Valvula solenoide utilizada. Fonte: Própria. Figura 7 – Protótipo desenvolvido para irrigação residencial. Fonte: Própria. Assim como acontece para o sistema de irrigação, o plano de discagem pode ser adequado para receber o intervalo de tempo (em minutos) durante o qual o usuário deseje acionar os demais dispositivos. Considerações Finais Neste trabalho foi proposta uma solução para sis- temas de automação. Inicialmente foi realizado um estudo das ferramentas a serem utilizadas, o software Asterisk e a plataforma microcontrolada Arduino. E posteriormente como a comunicação entre eles seria feita. Ao fim apresentou-se o sistema implementado em laboratório. A solução é simples, de baixo custo e baseada em plataformas bem estabelecidas e abertas a modifica- ções como o Asterisk e a placa Arduino com Ethernet shield. Desta forma, reduziu-se o tempo de desenvol- vimento e facilitaram-se futuras alterações no siste- ma. Além disso, considera-se a solução abrangente, pois pode ser utilizada em vários campos diferentes da automação tais como residencial, agrícola, indus- trial, engenharia biomédica. Em trabalhos futuros o sistema pode ser modifica- do. Outra plataforma microcontrolada que permita comunicação pela Internet pode ser utilizada. O sis- tema pode utilizar o reconhecimento de voz, em vez do recebimento de dígitos. Com relação à segurança do sistema, foi imple- mentada uma autenticação do usuário na URA atra- vés do login e senha. Mas, outras questões relaciona- das à segurança do tráfego das informações dos usuá- rios pela rede devem ser consideradas. Devem-se procurar soluções que permitam garantir a confiden- cialidade e integridade dos dados transmitidos. Neste sentido propõe-se construir uma aplicação no Aste- risk e fazer uma modificação no software do Ethernet shield para que se possa estabelecer um túnel cripto- grafado entre a URA e as plataformas microcontrola- da. Propõe-se também estender os cenários de valida- ção para problemas relacionados à assistência a pes- soas com necessidades especiais dentro do contexto de tecnologia e-health. A título de exemplo, um te- traplégico poderia utilizar o sistema para realizar Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 1679
  • 7. tarefas como ligar luzes, levantar a cama e ligar a televisão sem o auxílio de outras pessoas bastando para isso apenas adicionar o reconhecimento de voz à solução. Quanto ao acionamento de dispositivos por um tempo predeterminado (com aplicação em um sistema de irrigação, por exemplo), um hardware adicional deve ser utilizado, um módulo RTC. Pois com a fun- ção millis() ou outra função/procedimento que funci- one como temporizador e seja interno ao Arduino, o horário em que o dispositivo deve ser desligado será perdido a cada reinicialização do programa, o que ocorre a cada vez que o usuário acessa um menu dife- rente na URA, ou a cada vez que o Arduino for rea- limentado. Referências Bibliográficas AGI. AGI Scripting with PHP. Disponível em: < http://www.itp- redial.com/class/weekly-notes/week4-notes/agi-scripting- with-php> Acesso em: 10 Fev 2013. ASTERISK. Disponível em: <http://www.asterisk.org/>. Acesso em: 15 Jul 2013. ARDUINO. Arduino Uno. Disponível em: <http://Arduino.cc/en/Main/ArduinoBoardUno> Acesso em: 23 Jan 2013. ARDUINO BRASIL. Nova versão do Arduino: Uno. Disponível em: < http://www.arduinobrasil.com/2011/01/uno/> Acesso em: 23 Mar 2013. COMER, D., E. Redes de Computadores e Internet. 4ª ed. Bookman Companhia Editora Ltda, São Paulo, 2007. EGUINO, A. (2013). Asterisk & Z-Wave demo. Disponível em: <http://domotica4all.com/2013/11/asterisk-z-wave-demo-in- voip2day-2013/>. Acesso em: 12 Jun 2014. GONÇALVES, F., E. Configuration Guide for Asterisk PBX: How to build and configure a PBX with Open Source Software. 2ª ed. V.Office Networks LTDA, 2007. GRAVES, M. (2009). Controlling Applications From Asterisk. Disponível em : <http://www.mgraves.org/2009/01/controlling-applications- from-asterisk/> Acesso em: 13 Jun 2014. GUPTA, P; AGRAWAL, N and QADEER, M. A (2013). GSM and PSTN Gateway for Asterisk EPBX. Wireless and Opti- cal Communications Networks (WOCN), 2013 Tenth Inter- national Conference on. HACKWORTH, J. (2012). Home Automation with Asterisk and FreePBX. Disponível em: <http://www.jordanhackworth.com/home-automation-with- asterisk-and-freepbx/>. Acesso em: 12 Jun 2014. JIN, J., JIN+, J., WANG, Y., ZHAO, K. and HU, J. (2008) Development of Remote-Controlled Home Automation System with Wireless Sensor Network. Fifth IEEE International Symposium on Embedded Computing, pp. 169-173. KAPICAK, L., NEVLUD, P., ZDRALEK, J., DUBEC, P. and PLUCAR, J (2011). Remote Control of Asterisk via Web Services. Telecommunications and Signal Processing, pp. 27-30. KELLER, A. Asterisk na prática. 1ª ed. São Paulo: Novatec, 2009. KUROSE, J., F., ROSS, K., W. Redes de Computadores e a Internet: Uma Abordagem Top-down. 5ª ed. Addison- Wesley, 2010. LEE, Y., K. and CHOI, J., W. (2003). Remote-Controlled Home Automation System via Bluetooth Home Network. SICE Annual Conference in Fukui, August 4-6, pp. 2824-2829. MACURA, L.; VOZNAK, M.; TOMALA, K. and SLACHTA, J. (2012). Embedded multiplatform SIP server solution, Telecommunications and Signal Processing (TSP), 2012 35th International Conference on , vol., no., pp.263 - 266. MADSEN, L., MEGGELEN, J., V., and BRYANT, R. (2011). Asterisk: The Definitive Guide. 3 ed. USA: O’Reilly Media. QADEER, M.A.; SHAH, K. and GOEL, U., (2012). Voice - Video Communication on Mobile Phones and PCs' Using Asterisk EPBX. Communication Systems and Network Technologies (CSNT), 2012 International Conference on. pp.534-538. PHP. PHP Manual. Disponível em: <http://www.php.net/manual/pt_BR/language.functions.php > Acesso em: 22 Jan 2013. PHPAGI. PHPAGI: Where PHP connects to Asterisk. Disponível em: <http://phpagi.sourceforge.net/> Acesso em: 20 Jan 2013. Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 1680