projeto asteris para controle remoto

7
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: [email protected], [email protected], [email protected] 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

Upload: wellington-neves

Post on 14-Jan-2017

93 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Projeto   asteris para controle remoto

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: [email protected], [email protected], [email protected]

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

Page 2: Projeto   asteris para controle remoto

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

Page 3: Projeto   asteris para controle remoto

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

Page 4: Projeto   asteris para controle remoto

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

Page 5: Projeto   asteris para controle remoto

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

Page 6: Projeto   asteris para controle remoto

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

Page 7: Projeto   asteris para controle remoto

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