pontifÍcia universidade catÓlica do paranÁ ccet...

139
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO ALARME MONITORADO E CONTROLADO POR MEIO DE COMUNICAÇÃO WEB. CURITIBA 2008

Upload: others

Post on 29-Dec-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ

CCET – CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA

ENGENHARIA DE COMPUTAÇÃO

ALARME MONITORADO E CONTROLADO POR MEIO DE COMUNICAÇÃO WEB.

CURITIBA

2008

Page 2: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

JEFFERSON PATRÍCIO CALDEIRA

MICHEL T. K. SPHAIR

ALARME MONITORADO E CONTROLADO POR MEIO DE COMUNICAÇÃO WEB.

Trabalho apresentado ao professor Luiz Lima da disciplina

de Projeto Final II do 10º período do curso de Engenharia

de Computação da Pontifícia Universidade Católica do

Paraná.

Orientador: Altair Olivo Santin

CURITIBA

2008

Page 3: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

SUMÁRIO

RESUMO ............................................................................................................................................. 4

INTRODUÇÃO ................................................................................................................................... 4

DETALHAMENTO DO PROJETO .................................................................................................... 5

Central TINI ..................................................................................................................................... 6

Módulo Sensor de Presença ............................................................................................................. 7

Módulo de Comunicação Celular .................................................................................................. 11

Módulo Monitoramento da Bateria ................................................................................................ 12

PROCEDIMENTO DE TESTE E VALIDAÇÃO DO PROJETO ..................................................... 16

PROCEDIMENTOS DE CAIXA BRANCA ................................................................................. 16

Teste da Central TINI ................................................................................................................. 16

Teste do Software da Central TINI ............................................................................................ 20

Teste do Módulo Sensor de Presença ......................................................................................... 26

Teste do Firmware do Módulo Sensor de Presença ................................................................... 28

Teste do Módulo Monitoramento da Bateria ............................................................................. 37

Teste do Software do Módulo Monitoramento da Bateria ......................................................... 40

PROCEDIMENTOS DE CAIXA PRETA ..................................................................................... 43

CONCLUSÃO ................................................................................................................................... 56

APROVAÇÃO DO ORIENTADOR .................................................................................................. 57

REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................................... 58

ANEXO A – CÓDIGO FONTE DO AT80S52 – MÓDULO SENSOR DE PRESENÇA ................ 60

ANEXO B – CÓDIGO FONTE DO AT80S52 – MÓDULO MONITORAMENTO DE BATERIA 64

ANEXO C – CÓDIGO FONTE DA CENTRAL – REQUISIÇÕES HTTP ...................................... 66

ANEXO D – CÓDIGO FONTE DA CENTRAL – TRATAMENTO DE POSTS ............................ 67

ANEXO E – CÓDIGO FONTE DA CENTRAL – MONITORAMENTO DE SENSOR ............... 107

ANEXO F – CÓDIGO FONTE DA CENTRAL – MONITORAMENTO DE SMS ...................... 113

ANEXO G – ESQUEMA ELÉTRICO COMPLETO DO MÓDULO MONITORAMENTO DA

BATERIA ......................................................................................................................................... 132

ANEXO H – ESQUEMA ELÉTRICO COMPLETO DO MÓDULO SENSOR DE PRESENÇA 133

ANEXO I – LAYOUT DAS PLACAS FEITAS NO ORCAD ........................................................ 134

ANEXO J – FOTOS ........................................................................................................................ 136

ANEXO K – CÓDIGO HTML PÁGINA INICIAL ........................................................................ 138

Page 4: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

4

RESUMO

Este documento aborda o conceito de um projeto que consiste em um alarme monitorado

através da internet e por meio de mensagens SMS a partir de celulares. A problemática a ser

resolvida é o total controle do alarme à distancia, permitindo assim a dispensa do serviço de

monitoração, não onerando ainda mais o cliente final.

Para resolver esse problema a configuração e o controle do alarme serão feitos utilizando-se

da internet e assim acessando um servidor, papel esse desempenhado pela placa de desenvolvimento

TINI.

Esse servidor será desenvolvido em Java e HTML, linguagens atuais que permitem uma

grande versatilidade para a central do alarme. Ainda será integrado o módulo de celular para que

esse servidor possa ser monitorado através de mensagens curtas enviados por qualquer celular.

INTRODUÇÃO

Com o constante aumento da violência e criminalidade no mundo, todas as pessoas tendem a

procurar meios de sentirem-se mais seguras. Para isso investem bastante dinheiro em seguros

automotivos, pessoais e de casa, em alarmes e sistemas de monitoramento. Esse público está sempre

procurando novos métodos de segurança e são conscientes que sempre podem economizar seu

dinheiro.

O ideal seria acabar com a criminalidade através de programas de educação implantados

pelo governo para todas as classes sociais e econômicas. Como essa é uma realidade distante de ser

alcançada, outras soluções devem ser encontradas para minimizar os problemas com a segurança.

Por outro lado vemos a crescente utilização da internet em todos os lugares devido à baixa

dos preços de computadores pessoais, os baixos custos de acesso em lan houses e a vasta oferta de

banda larga pelas várias operadoras.

Outro fator relevante é a utilização em massa de celulares dos mais variados tipos em nossa

sociedade. Hoje em dia qualquer pessoa, mesmo não tendo um telefone fixo, possui um celular que

além de fazer ligações envia mensagens de texto, possui câmera digital para captura de imagens, faz

vídeo e toca músicas.

Todos estes fatores fazem com que a idéia de uma central de alarmes residencial e

empresarial de fácil configuração e utilização torne-se motivadora visto que o produto final tende a

ser algo útil para a sociedade.

Page 5: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

5

Atualmente existem várias soluções na área de segurança que desempenham as mais

variadas funcionalidades. Essas soluções foram avaliadas e várias limitações foram encontradas.

Isto se torna outro motivador para este projeto, ou seja, a falta no mercado de um sistema

independente de monitoramento do alarme à distância e também que preze pela fácil configuração,

instalação e utilização. Todos os sensores serão micro controlados para controle de uso da bateria.

Através dos conceitos de eletrônica discreta[1]

, redes, programação em Java[2]

e

microprocessadores adquiridos durante o curso acredita-se que este projeto será passível de

implementação.

Este documento está estruturado em tópicos onde será apresentado o detalhamento do

problema especificando em detalhes todo hardware, firmware e software, cronograma com as datas

de cada etapa do projeto e conclusão, procedimento de teste e validação do projeto do ponto de vista

do usuário e do sistema, os riscos e a conclusão.

DETALHAMENTO DO PROJETO

Figura 1: Diagrama geral do projeto.

Page 6: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

6

Descrição dos blocos:

Central TINI

A central TINI[3],

(Tiny InterNet Interface) é uma plataforma desenvolvida pela Dallas

Semicondutores, que possui como características prover um custo baixo para desenvolvimento e

uma gama imensa de conexões a dispositivos. Os principais componentes do kit de

desenvolvimento são:

Micro controlador;

Flash ROM;

Static RAM;

Interfaces Ethernet e Serial.

Os módulos de monitoramento da bateria, de comunicação celular e do sensor de presença

comunicar-se-ão com a central TINI via serial. Esta central TINI possui duas interfaces seriais

padrão RS232, uma serial padrão proprietário 1-Wire (1-Fio) e uma interface ethernet.

Para utilizar a serial 1 da TINI foi necessário retornar ao datasheet da mesma para verificar

onde se localizavam os pinos de transmissão de recebimento e envio serial. Esses pinos podem ser

visualizados na Figura 03 como RX e TX, que foram ligados a um MAX232 para que os sinais TTL

recebidos e enviados fossem tratados e transformados em sinais RS232 padrão para portas seriais.

Como isso se conseguiu mais uma porta serial para a comunicação com os periféricos do projeto.

Figura 2: Ligação elétrica para acessar a Serial 1.

Page 7: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

7

A linguagem de programação adotada para o desenvolvimento é JAVA, porém a TINI

também permite que sejam desenvolvidos programas em C e compilados para o formato .tini, visto

ser o formato executável da TINI. Foi escolhido o ECLIPSE para desenvolver o código em Java

visto ser amplamente utilizado e ter muitas funcionalidades úteis ao programador. Uma tela do

desenvolvimento é apresentada na figura 3.

Figura 3: Eclipse – Desenvolvimento em Java.

Os blocos de código desenvolvidos para as classes estão contidos no anexo C, D, E e F.

Módulo Sensor de Presença

O módulo sensor de presença é composto pelo sensor de presença, pelo monitor de nível de

bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT89S52 com interface serial

para comunicação com a central TINI.

O circuito abaixo mostra o AT89S52 com o MAX232 para interfacear com a serial. Como a

fonte é de 18V e praticamente toda a alimentação do circuito é de 5V, foi utilizado um regulador

L7805(5V) e foi utilizado também um regulador L7812(12V) para alimentar o sensor.

Page 8: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

8

Figura 4: Circuito do AT89S52 com interface serial e reguladores de tensão.

Figura 5: Foto do AT89S52 com interface serial e reguladores de tensão.

A porta utilizada foi a 2 e os pinos utilizados no AT89S52 pode ser visto abaixo:

Figura 6: Pinos utilizados do AT89S52.

Page 9: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

9

O sensor de presença infravermelho que será utilizado será um da ATEEI modelo Lince, sua

tensão de trabalho é de 10-15V, consumo de 15mA, área de atuação de 12x12m e com controle de

sensibilidade feito por jumper.

Figura 7: Foto do sensor de presença da ATEEI

O sensor foi ligado ao AT89S52 pelo seu relé (com contato normalmente fechado). Quando

houver um disparo o relé se abrirá detectando assim um disparo.

O standby do sensor foi feito utilizando um BC548 onde o terra do sensor está ligado no

coletor. Uma das saídas do AT89S52 está ligado na base, quando se tem nível 1 (5V) o sensor é

aterrado fechando o circuito e com isso ligando o sensor. Caso o nível na base for 0 (0V) o circuito

do sensor ficará aberto fazendo com que ele permaneça desligado. Abaixo é apresentado o circuito:

Figura 8: Circuito do standby do sensor.

Page 10: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

10

O monitor de nível de bateria se constitui por um TL081 que compara a tensão da fonte com

a tensão de 1,2V que é a referência gerada pelo LM385. Se a tensão da fonte ficar menor que

aproximadamente 16V que corresponde a 1,2V por causa do divisor de tensão, a saída do TL081

estará com nível lógico 1 (5V) e se for maior que a tensão de 1,2V, a saída do TL081 estará com

nível lógico 0 (0V). Foi utilizado um buffer 74LS244, um inversor HEF4049, um BC557 e um

BC548 para que houvesse compatibilidade de nível em relação a entrada do microcontrolador e pela

baixa impedância de entrada. Caso a bateria esteja fraca o LED D2 acenderá e caso o alarme seja

ligado o LED D1 se ligará para emitir um aviso visual ao usuário.

Figura 9: Circuito do monitoramento do nível de bateria.

Além disso foi adicionado também um circuito para disparar uma sirene para emitir um

aviso sonoro quando o alarme for disparado que funciona usando o mesmo principio do standby

para aciona-lá.

Figura 10: Circuito da sirene.

A foto abaixo mostra o standby, o circuito de monitoramento do nível de bateria e o circuito

da sirene.

Page 11: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

11

Figura 11: Foto do standby, circuito de monitoramento de nível de bateria e o circuito da sirene.

O micro controlador foi programado utilizando a linguagem C e a IDE de desenvolvimento

Keil uVision3, além disto, para gravar no micro controlador foi utilizado o software IC Writer

juntamente com o gravador de 8051 que é emprestado pela PUC.

O diagrama de circuito completo, o bloco de código (firmware) que foi gravado no micro

controlador e foto do módulo completo estão no Anexo H, A e I respectivamente.

Módulo de Comunicação Celular

Para o módulo de comunicação celular foi utilizado o GR64. É um módulo que se

caracteriza por ter integrado protocolos de pilha TCP/UDP/IP, celular (rádio, dados e voz), uma

escala de temperatura industrial (-30°C a +75°C) e um micro controlador ARM9. As especificações

do módulo podem ser vistas a seguir:

Core processor: ARM9, 32 bit

Memory: Internal

Digital Control: Up to 12 GPIO, 5 x 5 keyboard

Digital Comms : 2 UART, I2C

Analogue Interfaces : 4 ADC

Audio Interfaces : 2 analogue channels, PCM

Cellular Radio: Global operation (quad band 800/900/1800/1900 MHz)

Cellular Data: GSM standard SMS, CSD (circuit), GPRS cl 10 (packet)

Cellular Voice: Quad codec (FR/HR/EFR/AMR)

Package: 60pin, 50mm x 33mm x 3.3mm.

Page 12: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

12

Figura 12: Foto do módulo de comunicação celular.

Este módulo trabalhará ligado a TINI via serial e sua funcionalidade é receber e enviar

mensagens utilizando a rede de comunicação celular. Este módulo trabalha com uma tensão entre

6,59V até 14V consumindo uma corrente de aproximadamente 1A.

Módulo Monitoramento da Bateria

O módulo monitoramento da bateria é composto pelo monitor de nível de bateria e micro

controlador AT89S52 com interface serial para comunicação com a central TINI .

O circuito abaixo mostra o AT89S52 com o MAX232 para interfacear com a serial. O

circuito é alimentado por uma fonte e uma bateria ligados aos diodos D5 e D6, lembrando que neste

sistema necessariamente a tensão da fonte tem que ser maior que a tensão da bateria. Quando a luz é

cortada (fonte), a bateria de 12V automaticamente entra em funcionamento. Foi utilizado no

circuito um regulador de tensão L7805(5V) para alimentar os componentes do circuito.

Page 13: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

13

Figura 13: Circuito do AT89S52 com interface serial.

Figura 14: Foto do AT89S52 com interface serial e reguladores de tensão.

Figura 15: Pinos utilizados do AT89S52.

Page 14: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

14

O monitor de nível de bateria se constitui por um TL081 que compara a tensão da fonte com

a tensão de 1,2V que é a referência gerada pelo LM385. Se a tensão da fonte ficar menor que

aproximadamente 10V que corresponde a 1,2V por causa do divisor de tensão, a saída do TL081

estará com nível lógico 1 (5V) e se for maior que a tensão de 1,2V, a saída do TL081 estará com

nível lógico 0 (0V). O LED D1 indica quando a bateria está fraca. O circuito é apresentado abaixo:

Figura 16: Circuito do monitoramento do nível de bateria.

Foi adicionado um LED para indicar que o módulo está funcionando com a tensão da fonte.

Quando a tensão da fonte está ligada, o LED D2 se manterá acesso. Se houver uma queda da tensão

da fonte, o LED D2 se apagará e o sistema estará funcionando com a tensão da bateria, servindo

como aviso visual que a tensão da fonte não está presente.

Figura 17: Circuito do LED da tensão da fonte.

Além disso, foi adicionado um LED para indicar que o módulo está ligado.

Page 15: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

15

Figura 18: Circuito do LED para indicar que está ligado.

Tanto a central TINI como o módulo de comunicação celular estão ligados neste módulo que

será alimentado com a fonte e uma bateria. Caso haja uma queda de tensão, esse módulo mantém a

energia e consequentemente o alarme em funcionamento.

A foto abaixo mostra o circuito de monitoramento do nível de bateria, o circuito do LED da

tensão da fonte e o circuito do LED para indicar que o módulo está ligado.

Figura 19: Foto do circuito de monitoramento de nível de bateria, do LED da tensão da fonte e do

LED para indicar que o módulo está ligado.

O micro controlador foi programado utilizando a linguagem C e a IDE de desenvolvimento

Keil uVision3, além disto, para gravar no micro controlador foi utilizado o software IC Writer

juntamente com o gravador de 8051 que é emprestado pela PUC.

O diagrama de circuito completo, o bloco de código (firmware) que foi gravado no micro

controlador e foto do módulo completo estão no Anexo G, B e I respectivamente.

Page 16: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

16

PROCEDIMENTO DE TESTE E VALIDAÇÃO DO PROJETO

Dois tipos de testes[9]

serão executados a fim de verificar a consistência do software e

hardware. São eles:

PROCEDIMENTOS DE CAIXA BRANCA

Teste da Central TINI

Para que a central do alarme funcionasse conforme desejado, foram criadas quatro classes

para atender requisições HTTP e tratamento dessas requisições, das mensagens SMS e das

variações de estado do sensor e dos monitores de bateria.

Dessas classes, as classes de tratamento de mensagens SMS e das variações do sensor e dos

monitores de bateria implementaram uma variação da classe Thread do Java, por necessitarem

funcionar em segundo plano sem ações do usuário.

A partir desse ponto onde temos o código pronto, necessitávamos fazer os testes com o

programa dentro da TINI. Para isso, com as classes prontas, compilamos o código de acordo com o

instruído no manual da TINI, com o seguinte comando Batch no prompt do DOS:

@echo off

javac -bootclasspath ..\..\bin\tiniclasses.jar;..\..\bin\modules.jar -d bin src\*.java

java -classpath ..\..\bin\tini.jar;%classpath% BuildDependency -add HTTPSERVER -x

..\..\bin\owapi_dep.txt -p ..\..\bin\modules.jar -f .\bin\PostHandlerAlarme.class -f

.\bin\PostAlarme.class -f .\bin\MonitorSensor.class -f .\bin\MonitorCelular.class -o .\bin\Alarme.tini

-d ..\..\bin\tini.db

Figura 20: Mensagem de compilação sem erros.

Esse comando, depois de depurados todos os erros de programação, gerou um arquivo Alarme.tini,

o qual é o arquivo principal de todo a central do alarme. Com esse arquivo compilado ligamos a

Page 17: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

17

TINI e com um cabo serial ligado na porta serial zero iniciamos o processo de inserção do código

dentro dela.

Como instruído, pegamos os arquivos compactados de utilização da TINI disponibilizados

pela Dallas e os descompactamos na raiz do disco local, facilitando na hora de digitar o caminho

dos arquivos no prompt do DOS. Nessas pastas descompactadas encontram-se muitas informações

importantes e arquivos necessários para o desenvolvimento, como as bibliotecas Java particulares

da TINI.

Para iniciar o processo de funcionamento da TINI é necessário executar o JAVAKIT, que é

um programa em Java que é incluído no pacote de desenvolvimento da TINI. É necessário que se

tenha instalado o Java JRE para executar o JAVAKIT. Da mesma maneira que a compilação, para

executar o JAVAKIT é necessário rodar um código no prompt do DOS, o qual segue:

set classpath=C:\jre\lib\comm.jar;C:\tini1.17\bin\tini.jar;

C:\jre\bin\java -cp C:\jre\lib\comm.jar;C:\tini1.17\bin\tini.jar; JavaKit -400

Figura 21: Javakit sendo executado.

Como o JAVAKIT aberto, abrimos uma porta de comunicação pela COM1 e resetamos a

TINI, fazendo com que ela espere por comandos do usuário. Carregam-se então os arquivos de

sistema da TINI e damos um Reset pelo Javakit. Seleciona-se então o banco de memória 18 e o

preenche-se com o valor zero. Esse procedimento preenche os 64K mais baixos da memória com

zeros, forçando o sistema a inicializar os ajustes necessários para rodar sem problemas. Após isso se

digita EXIT e o sistema operacional inicia sem mais problemas.

Page 18: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

18

Figura 22: Mensagens iniciais da Central.

Figura 23: Inicialização completa.

Visto que ainda não usamos a serial zero para saída de dados e sim apenas para entrada

continuamos a usar o JAVAKIT para configurar a TINI. Com o comando IPCONFIG ajustamos o IP

e a máscara de sub-rede da interface Ethernet da TINI. Com o comando DATE ajustamos a data e a

hora da central.

Com a interface de rede da central ligada a um switch e também um computador ligado a

ele, acessamos a interface de TELNET da TINI, que facilita bastante a execução de programas e

ajustes de TINI. Por meio dessa interface TELNET se vêem todas as mensagens impressas em

console advindas da central ao decorrer da execução do programa.

Page 19: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

19

Figura 24: Acesso Telnet.

Figura 25 – Exemplo de captura de tela com mensagens advindas da central.

Também com um cliente FTP acessamos o IP da TINI e enviamos todos os arquivos .tini e

os arquivos da página HTML que é enviada a cada requisição.

Enviados os arquivos, executamos o servidor HTML com o comando “Java Alarme.tini &”

por TELNET, onde dessa forma colocamos o servidor HTML para aceitar páginas e esperar por

requisições.

Tendo o servidor executado e a TINI totalmente operante, pelo browser acessamos nossa

página de acesso à central de alarme web pelo IP 10.22.1.99.

Figura 26: Página HTML servida pela TINI.

Page 20: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

20

Teste do Software da Central TINI

O software da central TINI foi totalmente desenvolvido em Java na IDE Eclipse, que pré-

compila todo o código que vai sendo gerado desde o início. Foi acrescentado à JRE padrão do Java

e que é utilizada pelo Eclipse as quatro bibliotecas de desenvolvimento da TINI, como pode ser

visto na figura 27, fazendo com que o código gerado também faça uso dessas bibliotecas que são

essenciais ao desenvolvimento de software para a TINI.

Figura 27: Bibliotecas da TINI adicionadas ao Eclipse.

Foram geradas quatro classes nesse projeto, são elas:

1. Classe de tratamento para solicitações HTTP;

2. Classe de tratamento para Posts HTTP;

3. Classe de monitoramento dos sensores;

4. Classe de monitoramento de SMS.

Para a classe de tratamento se solicitações HTTP abaixo se encontra o diagrama de fluxo de

dados onde se pode ver que depois de ajustados os parâmetros HTTP, há um „loop‟ infinito

atendendo requisições de páginas.

Page 21: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

21

Início

Entrega páginainicial

Solicitação?

Ajusta parâmetrosHTTP

sim

não

Figura 28: Diagrama do programa.

Depois de compilado o código, colocado na TINI e executado, quando é acessado o

endereço ip da TINI é então exibida a página pré-definida nos parâmetros e que encontra-se

disponível em uma pasta também definida, como visto na figura 29. O código HTML da página

encontra-se no Anexo J.

Figura 29: Tela da página web.

Para a classe de tratamento para Posts HTTP também se pode ver o fluxo de dados através

da figura 31, onde há toda a exibição de como a central trata os „posts‟, que vem de solicitações

inicias de acesso à central e posteriormente dos comandos para a central. Essa classe interpreta os

comandos a cada requisição HTTP e é finalizada, não ficando em loop infinito como fica a classe

anterior.

Acessando a central através do Telnet é possível verificar as mensagens que são impressas

no console a cada comando enviado. Todos os comandos têm alguma saída de console e todas as

funções podem e foram verificadas através destas respostas, visto a impossibilidade de realizar um

debug mais preciso em conjunto com a TINI.

Page 22: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

22

Figura 30: Requisição de página atendida.

Início

HTTP Post?

Já Logado?

Verifica Dadosdo Post

Usuário Correto?

Senha Correta?

Atribui Dados doPost a Variáveis Locais

Ligar Monitoramento

dos Sensores?

Ligar Monitoramento

de SMS?$

Status?

Rearmar?

Desligar Monitoramento

dos Sensores?

Desligar Monitoramento

de SMS?

Ajustar NúmeroCelular?

Ver NúmeroCelular?

Ver NúmeroIP?

Ver Data e Hora?

Sair?

Usuário ou SenhaIncorretos

não

sim

sim

sim

sim

sim

não

não

não

não

não

não

não

não

não

não

não

não

Ligar ThreaddeMonitoramento

Ajusta variáveisde controle

Espera Dadosdo Post

não

sim

Fim

Salva Arquivode Log

Verifica Status pelasPortas Seriais

Força Desligar

Força Ligar

Automático?

sim

sim sim

Desligar

Desligar

Coloca Númerona varável

Verifica Númerona varável

Verifica NúmeroIP

Verifica Data e Hora

sim

sim

sim

sim

sim

sim

Ajusta variáveisde controle

não

não

Figura 31: Diagrama do programa.

Page 23: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

23

Quando um usuário entra com o nome de usuário e a senha e clica em enviar, essa classe

trata e verifica os dados enviados e de acordo com a solicitação entrega a página desejada e criada

dinamicamente visto que cada situação possui parâmetros diferentes.

Vemos na figura 32 que depois de digitados usuário e senha corretos o servidor entrega a

página desejada, caso contrário entrega a mesma página mais uma mensagem de erro.

Figura 32: Tela do Sistema – Post atendido.

Uma tela do telnet apresentando o comando status é visualizada abaixo, mostrando a

requisição sendo atendida, os estados das baterias com valores em inteiro e a data e hora.

Figura 33: Tela do Telnet – Post atendido.

Na classe de monitoramento dos sensores temos uma situação interessante, pois ela é uma

derivação da classe Thread do Java, e é criada a cada solicitação de monitoramento dos sensores e

fica em loop infinito. Quando não se deseja mais monitorar os sensores ela morre.

O diagrama dessa classe é apresentado abaixo.

Page 24: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

24

Início

Dormir 30 seg.

Fim

Monitorar? não

Requisita status baterias

Requisita statussensor

Ajusta variáveisde controle

sim

RecebeuDados?

RecebeuDados?

não

sim

não

sim

Salva Arquivode Log

Figura 34: Diagrama da classe de monitoramento dos sensores.

Para não sobrecarregar os sistemas, a cada volta do monitoramento há um descanso de 30

segundos, evitando então que o processador trave por ter tantas tarefas sendo enviadas a ele. Uma

tela da saída em console pode visualizada a seguir na imagem.

Figura 35: Tela do Telnet – Monitoramento Ligado.

A classe de monitoramento de SMS tem o mesmo princípio de funcionamento da classe de

monitoramento dos sensores, pois quando se requer que ela monitore as mensagens sms recebidas e

envie mensagens sms de acordo com os estados da central se cria uma thread que fica em loop

infinito, monitorando, dormindo e acordando e depois quando não se deseja mais esse

Page 25: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

25

monitoramento essa thread morre.

O fluxo de dados é apresentado na figura 36 a seguir.

Início

Dormir 30 seg.

FimMonitorar

SMS?

não

sim

Status não

sim

Status? não

Ligar?

sim

não

Desligar?

sim

sim

não

Rearmar?

Envia SMS comDados

Ligar

Desligar

Ligar

Desligar

não

Salva Arquivode Log

Figura 36: Diagrama da classe de monitoramento de sms.

Para continuar visualizando o estado da central e verificar se o monitoramento realmente

está ocorrendo uma mensagem no console aparece quando esse monitoramento é iniciado.

Figura 37: Tela do Telnet – Monitoramento de SMS ligado.

Page 26: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

26

Teste do Módulo Sensor de Presença

Para testar o circuito do módulo sensor de presença, foi programado o AT89S52 usando o IC

Writer com o programa já simulado. Através da conexão via serial foram enviados comandos pelo

Hyper Terminal. Foram enviados os seguintes comandos: 101LIGAR, 101DESLIGAR,

101GET_STATUS e 101GET_BATT_STATUS e observado o retorno do GET_STATUS e

GET_BATT_STATUS para comprovar o correto funcionamento como ocorrido na simulação. O

circuito foi alimentado com uma fonte de 18V, com dois reguladores de tensão um de 5V para o

circuito e um de 12V para o sensor de presença.

Figura 38: Circuito do AT89S52 com interface serial e reguladores de tensão.

Para testar o standby do sensor, foi colocado um multímetro no pino 27 do AT89S52 e

medido a tensão com o alarme desligado que é de aproximadamente 58mV. Quando o alarme era

ligado a tensão no pino subia para aproximadamente 2,89V, com isso polarizando o transistor Q1 e

aterrando o pino de terra do sensor fechando o circuito e consequentemente ativando o sensor.

Page 27: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

27

Figura 39: Circuito do standby do sensor.

Para monitorar o nível de bateria foi implementado o circuito abaixo. Que nada mais é que

um comparador com uma tensão de referencia que não oscila com a variação da fonte e que passa

pelo buffer e inversor pelo motivo descrito na descrição do bloco. Quando a tensão de 18V cai para

16V ou menos a tensão na saída do operacional sobe para aproximadamente 2,76V, tensão está

sobre o pino 28 do AT89S52 e, além disto, acende o LED D2 servindo como aviso visual que a

bateria do alarme esta fraca. Quando envia um 101GET_BATT_STATUS, ele checa se no pino 28

tem nível lógico 0 ou 1 e retorna uma mensagem que pode ser 010SENSOR01_3 (para bateria

carregada) ou 010SENSOR01_4 (para bateria fraca). Para testar, foi colocado um multímetro no

pino 6 do operacional e diminuído a tensão da fonte de 18V para 16V observou-se o aumento do

nível de tensão. Quando o alarme é ligado a tensão no pino 25 do AT89S52 vai para

aproximadamente 2,98V (nível alto) passando pelo buffer e acendendo o LED D1 para demonstrar

que o alarme está armado.

Figura 40: Circuito do monitoramento do nível de bateria.

Page 28: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

28

O circuito da sirene funciona seguindo o mesmo principio do standby. Foi colocado o

multímetro no pino 24 do AT89S52 e enviado através da serial o comando 101LIGAR. Quando o

alarme é disparado o nível lógico do pino 24 do AT89S52 que está ligado a base do transistor Q2

muda de 0V para aproximadamente 4,89V polarizando o transistor e fechando o circuito da sirene

fazendo a disparar.

Figura 41: Circuito da sirene.

Teste do Firmware do Módulo Sensor de Presença

O programa do módulo do sensor de presença foi desenvolvido com a IDE uVision3 da Keil

utilizando a linguagem C e foi simulado utilizando a mesma IDE. Abaixo o diagrama do programa:

Page 29: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

29

Figura 42: Diagrama do programa.

Quando ligamos o módulo, o sensor de presença esta desligado. Em parallel port 2 mostrado

nas figuras abaixo podemos verificar o estado de cada bit da porta 2 do AT89S52. O bit 0 (zero)

representa o sensor de presença, por ser NF (normalmente fechado), o estado dele é sempre 1 (nível

alto), quando ocorre um disparo o estado muda para 0 (nível baixo). O bit 6 (seis) é utilizado pelo

Standby do sensor, quando ele está no estado 0 (nível baixo) o sensor ficará desligado e quando o

estado muda para 1 (nível alto) o sensor é ligado. O bit 4 (cinco) é utilizado para acender um LED,

quando ele está no estado 0 (nível baixo) o LED ficara desligado e quando o estado muda para 1

(nível alto) o LED é ligado. Podemos constatar com a figura abaixo que o alarme se encontra

desligado, com o sensor e o LED desligados.

Page 30: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

30

Figura 43: Alarme desligado.

Figura 44: Estado dos bits da porta 2 do AT89S52.

Quando o alarme é ligado com o comando 101LIGAR como é mostrado na figura abaixo, Os

bits 6 e 4 respectivamente do standby do sensor e do LED são mudados para 1 (nível alto).

Page 31: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

31

Figura 45: Alarme ligado.

Figura 46: Estado dos bits da porta 2 do AT89S52.

Page 32: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

32

Foi implementado no programa um comando 101GET_STATUS. O seu retorno pode estar

em 3 estados: 010SENSOR01_0 para alarme desligado, 010SENSOR01_1 para alarme ligado e

010SENSOR01_2 para alarme disparado. Na simulação abaixo foi dado um 101GET_STATUS com

o alarme ligado e foi retornado o status 010SENSOR01_1 (alarme ligado).

Figura 47: 101GET_STATUS quando ligado.

Page 33: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

33

Depois foi dado o comando 101DESLIGAR para desligar o alarme. Os bits 6 e 4 foram

mudados para 0 (nível baixo). Em seguida foi dado o comando 101GET_STATUS para verificar o

status do alarme que retornou o 010SENSOR01_0 (alarme desligado).

Figura 48: 101GET_STATUS quando desligado.

Figura 49: Estado dos bits da porta 2 do AT89S52.

Page 34: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

34

Para o teste do disparo do alarme, foi mudado o status do bit 0 para 0 (nível baixo) que

representa o sensor de presença. Com está ação o alarme foi disparado. Foi dado o comando

101GET_STATUS para ver o status do alarme e foi retornado 010SENSOR01_2 (alarme

disparado). Após 5 minutos (cronometrados) o alarme volta a se armar automaticamente. Além

disto, foi dado o comando 101DESLIGAR e o 101LIGAR, para verificar o correto funcionamento.

Figura 50: Alarme disparado.

Figura 51: Estado dos bits da porta 2 do AT89S52.

Page 35: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

35

O bit 7 é responsável por monitorar o nível da bateria. Se estiver com o bit em 0 (nível

baixo), a bateria retornara 010SENSOR01_3 (bateria carregada). Na simulação abaixo mostra que

se pode verificar o status da bateria com o comando 101GET_BATT_STATUS.

Figura 52: 101GET_BATT_STATUS com a bateria carregada.

Page 36: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

36

Nessa outra simulação o bit 7 está com o bit em 1 (nível alto), indicando que a bateria está

com o nível de carga baixo e retornara 010SENSOR01_4. Isso pode ser constatado pelo comando

101GET_BATT_STATUS.

Figura 53: 101GET_BATT_STATUS com a bateria descarregada.

Figura 54: Estado dos bits da porta 2 do AT89S52.

O código fonte completo do firmware pode ser encontrado no Anexo A.

Page 37: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

37

Teste do Módulo Monitoramento da Bateria

Para testar o circuito do módulo monitoramento da bateria, foi programado o AT89S52

usando o IC Writer com o programa já simulado. Através da conexão via serial foi enviado o

comando pelo Hyper Terminal. Foi enviado o seguinte comando: 101GETBAT. Este comando

retornará o estado da bateria para comprovar o correto funcionamento como ocorrido na simulação.

O circuito foi alimentado com uma fonte de 13V e uma bateria de 12V, com um regulador de tensão

de 5V para o circuito.

Figura 55: Circuito do AT89S52 com interface serial.

A porta utilizada foi a 2 e os pinos utilizados no AT89S52 podem ser visto abaixo:

Figura 56: Pinos utilizados do AT89S52.

Page 38: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

38

Para monitorar o nível de bateria foi implementado o circuito abaixo. Que nada mais é que

um comparador com uma tensão de referencia que não oscila com a variação da fonte. Quando a

tensão da bateria cai de 12V para 10V ou menos a tensão na saída do operacional sobe para

aproximadamente 2,76V, tensão está sobre o pino 21 do AT89S52 e, além disto, acende o LED D1

servindo como aviso visual que a bateria do alarme esta fraca. Quando envia um 101GETBAT, ele

checa se no pino 21 do AT89S52 tem nível lógico 0 ou 1 e retorna uma mensagem que pode ser

010SENSOR02_3 (para bateria carregada) ou 010SENSOR02_4 (para bateria fraca). Para testar, foi

colocado um multímetro no pino 6 do operacional(TL081) e diminuído a tensão da fonte de 12V

para 10V observando-se o aumento do nível de tensão. Está função só funciona sem a fonte, pois

com a fonte sempre vai retornar que a bateria estará carregada.

Figura 57: Circuito do monitoramento do nível de bateria.

Quando a tensão da fonte está ligada, o LED D2 se manterá acesso com uma tensão em cima

do LED D2 de aproximadamente 11,89V verificado com o multímetro. Se houver uma queda da

tensão da fonte, o LED D2 se apagará.

Figura 58: Circuito do LED da tensão da fonte.

Page 39: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

39

Quando o alarme é ligado a tensão no pino 24 do AT89S52 vai para aproximadamente 2,98V

(nível alto) passando pelo buffer e acendendo o LED D3 para demonstrar que o monitoramento da

bateria está ligado.

Figura 59: Circuito do LED para indicar que está ligado.

Page 40: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

40

Teste do Software do Módulo Monitoramento da Bateria

O programa do módulo monitoramento da bateria foi desenvolvido com a IDE uVision3 da

Keil utilizando a linguagem C e foi simulado utilizando a mesma IDE. Abaixo o diagrama do

programa:

Figura 60: Diagrama do programa.

O bit 7 é responsável por monitorar o nível da bateria. Se estiver com o bit em 0 (nível

baixo), a bateria retornara 010SENSOR02_3(bateria com carga alta). Na simulação abaixo mostra

que se pode verificar o status da bateria com o comando 101GETBAT. O bit 4 indica que o

monitoramento esta ligado.

Page 41: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

41

Figura 61: 101GETBAT com a bateria com carga alta.

Figura 62: Estado dos bits da porta 2 do AT89S52.

Nessa outra simulação o bit 7 está com o bit em 1 (nível alto), indicando que a bateria está

com o nível de carga baixo e retornara 010SENSOR01_4. Isso pode ser constatado pelo comando

101GET_BATT_STATUS.

Page 42: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

42

Figura 63: 101GETBAT com a bateria com carga baixa.

Figura 64: Estado dos bits da porta 2 do AT89S52.

O código fonte completo do firmware pode ser encontrado no Anexo B.

Page 43: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

43

PROCEDIMENTOS DE CAIXA PRETA

Do ponto de vista do usuário, o equipamento apresentará procedimentos de teste simples

para que a configuração e utilização ocorra de tranquilamente.

Para começar os testes, primeiramente é necessário confirmar se a todos os módulos e a

central TINI estão alimentados corretamente e ligados. Verifica-se isso através do led indicador de

central ligada na cor verde localizado no módulo monitoramento da bateria, conforme mostrado na

figura 65. Se ele estiver ligado quer dizer que a central também está ligada.

Figura 65: Módulo monitoramento da bateria.

A próxima verificação é na Central TINI, onde também há um led de confirmação de

alimentação na cor verde (Led Verde 01) e outro led vermelho de confirmação de sistema funcional,

de acordo com a figura 66. Caso estejam ligados tudo está funcionando perfeitamente, senão deve

ser verificada a alimentação advinda do módulo monitoramento de bateria da central visto que essa

alimentação é compartilhada, ou reiniciado o estado de andamento do software.

Figura 66: Módulo Central - TINI.

Led Verde

Central Ligada

Led Vermelho

Central Ligada

Led Verde 01

Central

Ligada

Serial 1

Central

Ligada

Serial 4

Central

Ligada

Serial 0

Central

Ligada

Ethernet

Central

Ligada Led Verde 02

Central

Ligada

Page 44: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

44

Também pela figura 66 devem ser verificadas as conexões seriais com o módulo sensor de

presença conectado à serial 4, com o módulo monitoramento da bateria conectado à serial 1 e o

módulo comunicação celular conectado à serial 0. Ainda em se tratando das conexões, deve ser

verificada a conexão com a ethernet através do conector RJ45 localizado na placa e quando

conectado e transmitindo faz com que o led verde dois pisque de acordo com o tráfego de dados.

Outro passo importante é verificar, caso implantado, o estado do módulo de comunicação

celular que transmite e recebe sms. Ele possui um led vermelho, visto na figura 67, que quando

ligado o módulo permanece ligado constante e após feita conexão com a rede GSM fica piscando

ininterruptamente de forma lenta. Caso esteja fazendo alguma comunicação, ou seja, recebendo ou

transmitindo mensagens, esse mesmo led pisca mais rápido.

Figura 67: Módulo Comunicação Celular.

Agora com todas as conexões verificadas e tudo funcionando já é possível configurar um

computador ligado à mesma rede da central TINI para acessar a página de configuração do alarme.

A placa de rede da central possui o endereço ip (internet protocol-protocolo internet) 10.22.1.99

com máscara de sub-rede 255.255.254.0. Faz-se necessário colocar um ip da mesma faixa da central

TINI no computador a ser usado para que haja comunicação. Deve-se acessar a configuração da

placa de rede desse computador e configurado, por exemplo, um ip 10.22.1.100 com máscara de

sub-rede 255.255.254.0.

No navegador já é possível acessar a página de configuração digitando o ip 10.22.1.99. A

tela apresentada deve ser como na figura 68.

Led Vermelho

Page 45: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

45

Figura 68: Página inicial de acesso à central.

O usuário inicial para acessar a central é “root”, sem aspas e a senha é “tini”, também sem

aspas. Caso seja digitado um usuário errado ou uma senha errada uma mensagem de erro é

apresentada.

Após digitado usuário e senha corretos é apresentada a tela inicial do sistema, visto na figura

69, sendo apresentada também a mensagem de acesso com sucesso.

Figura 69: Página inicial de configuração da central.

Nesta tela é possível encontrar uma lista de comandos no menu „drop down‟, o estado da

bateria da central, o estado da bateria do sensor, o estado do sensor, o estado do monitoramento do

sensor, o estado do monitoramento de mensagens sms, as mensagens advindas da central a cada

comando enviado e um link para a verificação do arquivo de log.

Os comandos para a central são os seguintes:

Monitorar Sensores;

Page 46: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

46

Monitorar SMS;

Status;

Rearmar Central;

Verificar IP;

Ajustar IP;

Ajustar Mascara Sub-rede;

Ver Número Celular;

Ajustar Número Celular;

Ver Data;

Ajustar Data;

Trocar Usuário;

Trocar Senha;

Desligar Mon. SMS;

Desligar Mon. Sensores;

SAIR;

Para cada comando há uma mensagem de resposta da central bem como a variação dos

ícones dependendo do estado dos sensores, das baterias e dos monitoramentos. Também há variação

no status dos leds das placas indicando cada situação.

Na primeira situação criada para testes, verifica-se o estado da bateria com o comando

Status. Esse comando retorna a tela a seguir, onde se verifica que as baterias estão carregadas, o

sensor está desligado (ou standby) e os monitoramentos estão desligados.

Figura 70: Resposta da Central TINI ao comando Status.

Page 47: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

47

Quando a bateria do sensor está fraca e novamente é requisitado o estado da central TINI

pelo comando Status, a figura que mostrava bateria ok agora muda para bateria fraca. Também se

pode verificar o nível fraco de bateria pelo led vermelho que permanece aceso quando neste estado.

Figura 71: Placa do sensor.

Figura 72: Resposta da Central TINI ao comando Status.

Quando a energia do local de instalação da central TINI acaba, a bateria da central TINI está

fraca e novamente é requisitado o estado da central pelo comando Status, a figura que mostrava

bateria ok agora muda para bateria fraca.

Led

Vermelho

Page 48: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

48

Figura 73: Resposta da Central TINI ao comando Status.

Os leds do módulo de monitoramento da bateria também indicam que a energia do local de

instalação acabou e que a bateria está fraca. Quando a energia acaba o led vermelho central desliga

e quando a bateria está fraca o led vermelho da direita permanece aceso.

Figura 74: Módulo monitoramento da bateria.

Ao ligar o monitoramento dos sensores a figura relacionada ao monitoramento muda de

desligado para ligado conforme imagem abaixo.

Energia do local

Energia fraca da

bateria

Page 49: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

49

Figura 75: Resposta da Central TINI quando ligado o monitoramento dos Sensores.

Outra alteração é a figura do estado do sensor que muda de standby para ligado, o que

acontece em alguns segundos após a inicialização do sensor, que pode ser verificado na tela a

seguir.

Figura 76: Resposta da Central TINI ao comando Status.

Depois de ligado o monitoramento dos sensores, é interessante também ligar o

monitoramento das mensagens curtas do módulo comunicação celular para que sejam enviadas

mensagens de variação no estado do sensor e recebidas mensagens de comando para a central TINI.

Quando ligado esse monitoramento a figura relativa é alterada também de desligado para ligado.

Page 50: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

50

Figura 77: Resposta da Central TINI quando ligado o monitoramento de sms.

Quando esse monitoramento de comandos sms está ligado as seguintes mensagens podem

ser enviadas à central TINI, são elas:

LIGAR: quando enviada esta mensagem a central verifica se o monitoramento dos sensores

já está ligado e se não estiver é efetuada a ligação do monitoramento e uma mensagem sms é

enviada ao celular dizendo que o monitoramento foi ligado e o estado das baterias do sensor

e da central TINI, senão apenas uma mensagem dizendo que a central já está ligada é

enviada.

DESLIGAR: acontece praticamente o mesmo do que o comando ligar, porém inversamente.

Quando a mensagem é recebida e o monitoramento dos sensores já está desligado uma

mensagem de monitoramento já desligado é enviada, caso contrário o monitoramento é

desligado e uma mensagem sms é enviada dizendo que o monitoramento foi desligado.

REARMAR: nesse comando é forçado um desligamento do monitoramento dos sensores e

posterior religamento desse monitoramento. Uma mensagem de central rearmada é enviada

juntamente com o estado das baterias da Central TINI e do sensor de presença.

STATUS: recebido esse comando a Central TINI verifica o nível das baterias tanto do sensor

de presença quanto da Central TINI juntamente com o estado do sensor e envia todos esses

dados ao celular programado.

Caso não se deseje mais que sejam monitoradas as mensagens sms é necessário que seja

enviado o comando desligar monitoramento de sms, que retorna o estado de monitoramento de sms

desligado e apresenta a mensagem também de monitoramento de sms desligado.

Page 51: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

51

Figura 78: Resposta da Central quando desligado o monitoramento dos sensores.

Desligar o monitoramento dos sensores retorna mensagens praticamente idênticas às

mensagens quando se desliga o monitoramento de sms, porém voltadas ao desligamento dos

sensores. Essa variação verifica-se pela imagem abaixo.

Figura 79: Resposta da Central quando desligado o monitoramento de sms.

Outro comando importante é o de rearmar a central TINI e o módulo sensor de presença, que

faz com que o monitoramento do sensor seja desligado, todas as variáveis de controle são

reiniciadas e novamente é ligado o monitoramento dos sensores. A mensagem da central TINI

rearmada é retornada ao se enviar esse comando.

Page 52: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

52

Figura 80: Resposta da Central ao comando Rearmar Central.

Foram implementados alguns comandos de configuração da central TINI, como o comando

de verificar o ip da central, que retorna o endereço ip atribuído inicialmente à central e a máscara de

sub-rede correspondente.

Figura 81: Resposta da Central ao comando verificar IP.

Também na área de configuração temos o comando que verifica o número de celular para o

qual serão enviadas as mensagens sms em caso de variação do estado do sensor. Também há o

comando para alterar esse número, que se faz colocando o novo número de celular com DDD no

campo parâmetros dos comandos e enviar o comando ajustar número celular, que retorna uma

mensagem de alteração com sucesso. É possível confirmar essa alteração verificando-se novamente

o número celular.

Page 53: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

53

Figura 82: Resposta da Central TINI ao comando verificar número celular.

Figura 83: Resposta da Central TINI ao comando alterar número celular.

Page 54: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

54

Verificar a data com o comando verificar data retorna a data configurada na central. Essa

data é configurada inicialmente e mesmo se a central for desligada ela continua correta.

Figura 84: Resposta da Central TINI ao comando verificar data.

Ao executar o comando SAIR, a sessão de configuração e monitoramento é encerrada e a

tela inicial é apresentada somada da mensagem de sessão finalizada com sucesso.

Figura 85: Resposta da Central TINI ao comando SAIR.

Page 55: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

55

Ainda dentro da sessão de monitoramento e configuração, quando o monitoramento dos

sensores está ligado e há uma detecção no sensor o estado do sensor é alterado para sensor

disparado. Caso o monitoramento de mensagens sms estiver ligado uma mensagem é enviada ao

celular pré-configurado acusando o disparo do alarme e da sirene. Se nenhuma atitude for tomada

em cinco minutos, o sensor retorna que a central TINI deve ser rearmada

Figura 86: Resposta da Central TINI ao comando Status.

Pela placa do sensor também pode ser visualizado o disparo do alarme pelo led verde que

fica ligado caso seja disparado o sensor.

Figura 87: Placa do sensor.

Led Verde

Page 56: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

56

CONCLUSÃO

Este documento propôs demonstrar o mais detalhadamente possível o projeto relacionado ao

problema que atualmente é encontrado nas centrais de alarmes comercializadas. A solução definida

é demonstrada passo-a-passo a partir do diagrama em blocos do sistema completo e os testes.

Utilizando-se da internet e conexão celular, manter-se-á uma central de alarme operante todo o

tempo mesmo que condições adversas apareçam.

O detalhamento do projeto foi exposto a fim de explanar como foi desenvolvido todo o

sistema com diagramas de blocos, diagramas elétricos, diagramas de fluxo de dados, códigos e

testes para cada um dos módulos desenvolvidos.

Alguns problemas surgiram no decorrer do projeto que prejudicou o andamento do mesmo.

O primeiro a ser mencionado foi a falta de tempo dos integrantes do grupo que trabalham em

horário integral sendo assim não podendo usufruir de tempo suficiente do laboratório, onde esse

pouco tempo foi de extrema importância para a implementação de vários pontos do projeto.

O segundo foi a comunicação RF entre o módulo sensor de presença e a central TINI. O alto

nível de ruído inviabilizou a agregação desta tecnologia ao projeto tendo em vista que o AT80S52

funciona usando interrupções vindas da serial e as respostas não foram satisfatórias. Depois de

muito tempo gasto nesta parte depois a equipe decidiu em não integrar os módulos usando esta

tecnologia.

O terceiro e ultimo ponto foi a falta de documentação principalmente sobre a placa de

desenvolvimento TINI, sendo que foi desprendido muito tempo para aprender sobre o

funcionamento da mesma.

Programando o micro controlador 8051 em C ajudou a relembrar os conceitos vistos desde o

início do curso bem como a aprender novos conceitos em programação de micro controladores. A

utilização do Java foi muito interessante visto ser uma tecnologia atual e fácil de utilizar para criar

todas as classes utilizadas no projeto, tanto em programação seqüencial como com threads.

Page 57: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

57

APROVAÇÃO DO ORIENTADOR

Altair Olivo Santin

Assinatura: __________________________________________________

Page 58: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

58

REFERÊNCIAS BIBLIOGRÁFICAS

[1] Sedra, Adel S.; Smith, Kenneth C.. Microeletrônica. Quarta Edição. Makron Books,

2000.

[2] Deitel, H. M.; Deitel, P. J.. Como Programar em Java. Terceira Edição. Bookman,

2001.

[3] Loomis, Don. The Tini Specification and Developer´s Guide. Primeira Edição.

Addison-Wesley, 2001.

[4] Maxim – Explorando a TINI: disponível na internet em

http://www.maxim-ic.com/appnotes.cfm/an_pk/708

[5] Listas de Discussão sobre TINI: disponível na internet em

http://lists.dalsemi.com

[6] Site do Prof. Afonso sobre 8051: disponível na internet em

http://www.engcomp.pucpr.br/afonso/Graduacao/MPI/8051/8051.htm

[7] Diagrama de Fluxo de Dados: disponível na internet em

www.dimap.ufrn.br/~jair/mes/slides/dfd.ppt

[8] Diagrama de Fluxo de Dados (DFD): disponível na internet em

www.portallivre.org/academico/arquivos/DFD_ER.pdf

[9] Informações sobre pinagem em celulares: disponível na internet

http://pinouts.ru/

[10] Teste de Software – Wikipedia: disponível na internet em

http://pt.wikipedia.org/wiki/Teste_de_software

[11] TINI Resources: disponível na internet em

http://www.apms.com.au/tini/

Page 59: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

59

[12] Explicação das Classes TININet: disponível na internet em

http://www.apms.com.au/tini/TINIJavaDocs_Beta1/overview-summary.html

[13] Dicas da TINI: disponível na internet em

http://www.systronix.com/tutor/tips/tini_tips_top.htm

[14] Tutoriais da TINI: disponível na internet em

http://www.systronix.com/tutor/top.htm

[15] TINIAnt – Simplificação de construção para aplicativos TINI: disponível na

internet em http://tiniant.sourceforge.net/

Page 60: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

60

ANEXO A – CÓDIGO FONTE DO AT80S52 – MÓDULO SENSOR DE PRESENÇA

/*------------------------------------------------------------------------------

prj8051.c

Copyright 1995-2005 Keil Software, Inc.

------------------------------------------------------------------------------*/

#include <Atmel\REGX52.H> /* special function register declarations */

/* for the intended 8051 derivative */

#include <stdio.h> /* prototype declarations for I/O functions */

#include <string.h> /* prototype declarations for String functions

*/

#define LIGADO 1

#define DESLIGADO 0

#define DISPARADO 2

//***********************************************

//GLOBAL VARS *

//***********************************************

unsigned char status;

unsigned short int contador_timer_0;

unsigned int timer_delay=0;

unsigned int flag=0;

//***********************************************

//INTERRUPT *

//***********************************************

void serial_int (void) interrupt SIO_VECTOR {

char buffer [20];

if (RI == 1) { /* Recebendo um dado da serial

*/

gets(buffer,sizeof(buffer)-1); /* Lendo uma string */

if (!strcmp(buffer,"101LIGAR")) {

status = LIGADO;

contador_timer_0 = 0;

flag = 0;

} else if (!strcmp(buffer,"101DESLIGAR")) {

status = DESLIGADO;

} else if (!strcmp(buffer,"101GET_STATUS")) {

switch (status) {

case LIGADO:

printf("010SENSOR01_1");

break;

case DESLIGADO:

printf("010SENSOR01_0");

break;

case DISPARADO:

printf("010SENSOR01_2");

break;

}

} else if (!strcmp(buffer,"101GET_BATT_STATUS")) {

if (!P2_7) {

//OK

printf("010SENSOR01_3");

} else {

//LOW

printf("010SENSOR01_4");

}

Page 61: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

61

}

RI = 0;

}

}

#ifdef MONITOR51 /* Debugging with Monitor-51 needs */

char code reserve [3] _at_ 0x23; /* space for serial interrupt if */

#endif /* Stop Exection with Serial Intr. */

/* is enabled */

//***********************************************

//TIMER RESET *

//***********************************************

void reinicia_timer () {

TR0 = 0; /* Para a contagem do timer */

/* apagando a contagem preexistante */

TH0 = 0;

TL0 = 0;

TF0 = 0; /* tira o estouro do timer */

}

//***********************************************

//MAIN *

//***********************************************

void main (void) {

bit disparou_vezes;

#ifndef MONITOR51

TH1 = 0xF3;

TMOD = 0x21;

SCON = 0x50;

TR1 = 1;

TI = 0;

//TI = 1; /*Usar somente na simulacao*/

#endif

SBUF = 65;

/* Configurando as interrupcoes */

IE = 0x91;

/* Resetando todas as saidas de P2 */

P2 = 0;

/* Iniciando a variavel */

contador_timer_0 = 0;

status = DESLIGADO;

//***********************************************

//WHILE TRUE *

//***********************************************

while (1) {

comeco:

if (status == LIGADO) {

goto alarme_ligado;

} else if (status == DESLIGADO) {

goto alarme_desligado;

Page 62: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

62

} else if (status == DISPARADO) {

goto alarme_disparado;

}

}

//***********************************************

//ALARME LIGADO *

//***********************************************

alarme_ligado:

P2_6 = 1; /* Liga o sensor */

P2_3 = 0; /* Desliga sirene */

P2_4 = 1; /* Liga LED */

/* Delay para sincronia do sensor */

reinicia_timer();

if(flag == 0){

while(timer_delay != 530){

TR0 = 1;

while (!TF0) {}

timer_delay++;

TF0 = 0;

reinicia_timer();

}

}

flag=1;

timer_delay=0;

/* Começa a contagem do tempo para o timer 0 */

reinicia_timer();

TR0 = 1; /* Inicia a contagem no Timer

0 */

while (!TF0) {} /* Trava esperando o estouro do

timer 0 */

contador_timer_0 += 1; /* incrementa o contador de

estouros */

if (contador_timer_0 == 8) { /* esperamos o que tinhamos de

esperar 0,5s*/

if (!P2_0) { /* se em 0, dispara */

status = DISPARADO; /* A porra do alarme

disparou e fudeu tudo! */

}

contador_timer_0 = 0;

}

TF0 = 0; /* Apaga o aviso de estouro */

goto comeco;

//***********************************************

//ALARME DISPARADO *

//***********************************************

alarme_disparado:

P2_3 = 1;

disparou_vezes = 0;

reinicia_timer();

TR0 = 1; /* inicia a contagem no Timer

0 */

Page 63: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

63

while (!TF0) {} /* estamos esperando o

estouro do timer */

contador_timer_0 += 1; /* incrementa o contador de

estouros */

if (contador_timer_0 == 4578) { /* esperamos o que tinhamos

de esperar, para 5 mins */

status = LIGADO; /* volta para o estado de

verificação do alarme */

contador_timer_0 = 0;

}

TF0 = 0; /* Apaga o aviso de estouro

*/

goto comeco;

//***********************************************

//ALARME DESLIGADO *

//***********************************************

alarme_desligado:

P2_3 = 0;

P2_6 = 0;

P2_4 = 0;

contador_timer_0 = 0;

flag = 0;

goto comeco;

}

Page 64: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

64

ANEXO B – CÓDIGO FONTE DO AT80S52 – MÓDULO MONITORAMENTO DE

BATERIA

/*------------------------------------------------------------------------------

prjBAT.C

Copyright 1995-2005 Keil Software, Inc.

------------------------------------------------------------------------------*/

#include <Atmel\REGX52.H> /* special function register declarations */

/* for the intended 8051 derivative */

#include <stdio.h> /* prototype declarations for I/O functions */

#include <string.h> /* prototype declarations for String functions

*/

/*Variaveis globais*/

unsigned char status;

unsigned short int contador_timer_0;

void serial_int (void) interrupt SIO_VECTOR {

char buffer [20];

/* Código que gerencia a interrupt de recebimento de comandos */

if (RI == 1) { /* RECEBEMOS UM DADO DA SERIAL!!!! */

gets(buffer,sizeof(buffer)-1); /* lemos a string */

if (!strcmp(buffer,"101GETBAT")) {

if (!P2_7) {

//OK

printf("010SENSOR02_3");

} else {

//LOW

printf("010SENSOR02_4");

}

}

RI = 0;

}

}

#ifdef MONITOR51 /* Debugging with Monitor-51 needs */

char code reserve [3] _at_ 0x23; /* space for serial interrupt if */

#endif /* Stop Exection with Serial Intr. */

/* is enabled */

/*------------------------------------------------

The main C function. Program execution starts

here after stack initialization.

------------------------------------------------*/

void main (void) {

#ifndef MONITOR51

TH1 = 0xF3;

TMOD = 0x21;

SCON = 0x50;

TR1 = 1;

TI = 0;

#endif

SBUF = 65;

Page 65: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

65

/* Configurando as interrupcoes */

IE = 0x91;

/* Resetando todas as saidas de P2 */

P2 = 0;

P2_4 = 1;

while (1) {}

}

Page 66: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

66

ANEXO C – CÓDIGO FONTE DA CENTRAL – REQUISIÇÕES HTTP

/*---------------------------------------------------------------------------

* Copyright (C) 2008 Michel e Jefferson, All Rights Reserved.

*

* Software desenvolvido para o projeto final de curso

* da Engenharia de Computacao pela Pontifícia Universidade Católica

* do Paraná com orientacao do Professor Altair Santin

*

* Software desenvolvido na ferramenta Eclipse com suporte

* ao jdk da TINI.

*

*---------------------------------------------------------------------------

*/

// Imports

import com.dalsemi.tininet.http.HTTPServer;

import com.dalsemi.tininet.http.HTTPServerException;

class PostAlarme

{

static Object lock;

/**

* Main method of our web server

*/

public static void main(String[] args)

{

// Cria um servidor na porta 80

HTTPServer httpd = new HTTPServer(80);

// Pasta padrao para arquivos

httpd.setHTTPRoot( "/html" );

// Pagina inicial

httpd.setIndexPage( "index2.html" );

// arquivo de log

httpd.setLogFilename( "log2.txt" );

// habilita o log

httpd.setLogging( true );

// servidor online

System.out.println("Servidor Online...");

// envia paginas

while (true)

{

try

{ httpd.serviceRequests(); }

catch ( HTTPServerException e )

{

System.out.println( "Ocorreu um Erro ao Processar Pagina: " +

e.getMessage() );

}

}

}

}

Page 67: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

67

ANEXO D – CÓDIGO FONTE DA CENTRAL – TRATAMENTO DE POSTS

/*---------------------------------------------------------------------------

* Copyright (C) 2008 Michel e Jefferson, All Rights Reserved.

*

* Software desenvolvido para o projeto final de curso

* da Engenharia de Computacao pela Pontifícia Universidade Católica

* do Paraná com orientacao do Professor Altair Santin

*

* Software desenvolvido na ferramenta Eclipse com suporte

* ao jdk da TINI.

*

*---------------------------------------------------------------------------

*/

// Includes

import java.io.*;

import java.util.*;

import com.dalsemi.tininet.http.*;

import com.dalsemi.tininet.TININet;

import java.util.Enumeration;

import javax.comm.CommPortIdentifier;

import javax.comm.SerialPort;

import com.dalsemi.system.TINIOS;

import com.dalsemi.comm.*;

import com.dalsemi.*;

/**

* Servidor HTTP para a Central de Alarme TINI WEB

*/

public class PostHandlerAlarme implements PostScript

{

/**

* This method handles all responses to the the HTTP POST

*

* @param data - a Vector of PostElements holding all supplied fields and

Values in pairs

* @param out - an Output Stream to the client socket

* @param work - HTTPWorker contains utility functions used to URL encode

our response

* @throws IOException if an IO error occurs

*/

//String[] listaStr;

//int vetor[]={1,2,3,4,5};

//public static int sessaoIniciada = 0;

public static int sessaoValor = 0;

public static int valorStatusSensor[] = {0,0};

public static int flagStatusSensor = 0;

public static int flagStatusCelular = 0;

public static int flagJaLigado = 0;

public static int flagCelularJaLigado = 0;

public static int flagJaDesligado = 0;

public static int valorBateriaCentral = 0;

public static int valorBateriaSensor = 0;

public static String numeroCelular = "04199110485";

public static int msgJaEnviou = 0;

public static int flagRearmado = 0;

public static String gifCentral = "naoverificado.gif";

public static String gifSensor = "naoverificado.gif";

Page 68: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

68

public static String gifStatus = "naoverificado.gif";

public static String gifLigado = "m3desligado.gif";

public static String gifCelular = "m3desligado.gif";

public static String usuarioLogin = "root";

public static String senhaLogin = "tini";

public void handlePost( Vector data, OutputStream out, HTTPWorker work )

throws IOException

{

//Adicionando

//listaStr[0]="sessao01";

//listaStr[1]="sessao02";

//listaStr[2]="sessao03";

//listaStr[3]="sessao04";

//listaStr[4]="sessao05";

// Inform user that we are handling the POST request

System.out.println("Pagina Sendo Processada...");

PostElement pe;

PostElement pe1;

PostElement pe2;

String failureCause = "";

StringBuffer strBuff;

System.out.println("Servidor Enviando Pagina\n");

OutputStream sout;

InputStream sin;

SerialPort sp;

MonitorSensor moSensor = new MonitorSensor();

MonitorCelular moCelular = new MonitorCelular();

pe = (PostElement)data.elementAt(0);

FileOutputStream arquivoLog;

PrintStream aLog;

if(flagJaLigado == 1){

gifLigado = "mligar.gif";

}

else

gifLigado = "m3desligado.gif";

if(flagCelularJaLigado == 1){

gifCelular = "mligar.gif";

}

else

gifCelular = "m3desligado.gif";

if(pe.value.equals("zero")){

// Check the user name and password they submited.

pe = (PostElement)data.elementAt(1);

pe1 = (PostElement)data.elementAt(2);

pe2 = (PostElement)data.elementAt(3);

int flag = 0;

strBuff = new StringBuffer();

if ( !pe.value.equals(usuarioLogin) && pe2.value.equals("index") )

{

failureCause = "Usuário ou Senha Inválidos";

String textoAnexado = new String();

textoAnexado = " Usuário Inválido!";

// Write out the HTML headers and basic title text here

strBuff.append( "<html>"

+"<head>"

+"<title>-$= Alarme Monitorado e Controlado pela WEB =$-

</title>"

Page 69: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

69

+"<style type=\"text/css\">"

+"<!--"

+".style1 {font-family: \"Courier New\", Courier, monospace}"

+"-->"

+"</style>"

+"</head>"

+"<body>"

+"<div align=\"center\"><img src=\"logoSistemaWEB.gif\"

width=\"447\" height=\"109\" alt=\"Alarme Michel e Jefferson\"></div>"

+"<br>"

+"<table width=\"455\" border=\"1\" align=\"center\">"

+" <tr>"

+" <td><table width=\"445\" border=\"0\" align=\"center\">"

+" <tr>"

+" <td colspan=\"4\"><div align=\"center\"

class=\"style1\">"

+" <p>Entre com Nome de Usuario e Senha.</p>"

+" <p><br>"

+" </p>"

+" </div></td>"

+" </tr>"

+" <tr><FORM METHOD=\"POST\" ENCTYPE=\"application/x-www-

form-urlencoded\" ACTION=\"PostHandlerAlarme\">"

+" <td width=\"45\"><div align=\"center\"

class=\"style1\">"

+" <input type=\"hidden\" name=\"verificador\"

value=\"zero\">"

+" </div></td>"

+" <td width=\"78\"><span

class=\"style1\">Nome:</span></td>"

+" <td colspan=\"2\"><input type=\"text\" name=\"Name\"

></td>"

+" </tr>"

+" <tr>"

+" <td rowspan=\"2\"><div align=\"center\"

class=\"style1\"></div></td>"

+" <td><span class=\"style1\">Senha:</span></td>"

+" <td colspan=\"2\"><input type=\"password\"

name=\"Password\" >"

+" <input type=\"hidden\" name=\"Index\"

value=\"index\">"

+" <input type=\"submit\"

value=\"Enviar\"></td></FORM>"

+" </tr>"

+" <tr>"

+" <td colspan=\"2\"><div align=\"center\"></div></td>"

+" <td width=\"249\"><span

class=\"style1\">"+textoAnexado+"</span></td>"

+" </tr>"

+" </table></td>"

+" </tr>"

+"</table>"

);

// Tell the browser if their login worker or not

}

else if ( pe.value.equals(usuarioLogin) &&

!pe1.value.equals(senhaLogin) && pe2.value.equals("index") )

{

failureCause = "Usuário ou Senha Inválidos";

// Write out the HTML headers and basic title text here

String textoAnexado = new String();

Page 70: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

70

// Tell the browser if their login worker or not

textoAnexado = " Senha Invalida";

// Write out the HTML headers and basic title text here

strBuff.append( "<html>"

+"<head>"

+"<title>-$= Alarme Monitorado e Controlado

pela WEB =$-</title>"

+"<style type=\"text/css\">"

+"<!--"

+".style1 {font-family: \"Courier New\",

Courier, monospace}"

+"-->"

+"</style>"

+"</head>"

+"<body>"

+"<div align=\"center\"><img

src=\"logoSistemaWEB.gif\" width=\"447\" height=\"109\" alt=\"Alarme Michel e

Jefferson\"></div>"

+"<br>"

+"<table width=\"455\" border=\"1\"

align=\"center\">"

+" <tr>"

+" <td><table width=\"445\" border=\"0\"

align=\"center\">"

+" <tr>"

+" <td colspan=\"4\"><div

align=\"center\" class=\"style1\">"

+" <p>Entre com Nome de Usuario e

Senha.</p>"

+" <p><br>"

+" </p>"

+" </div></td>"

+" </tr>"

+" <tr><FORM METHOD=\"POST\"

ENCTYPE=\"application/x-www-form-urlencoded\" ACTION=\"PostHandlerAlarme\">"

+" <td width=\"45\"><div

align=\"center\" class=\"style1\">"

+" <input type=\"hidden\"

name=\"verificador\" value=\"zero\">"

+" </div></td>"

+" <td width=\"78\"><span

class=\"style1\">Nome:</span></td>"

+" <td colspan=\"2\"><input

type=\"text\" name=\"Name\"></td>"

+" </tr>"

+" <tr>"

+" <td rowspan=\"2\"><div

align=\"center\" class=\"style1\"></div></td>"

+" <td><span

class=\"style1\">Senha:</span></td>"

+" <td colspan=\"2\"><input

type=\"password\" name=\"Password\">"

+" <input type=\"hidden\"

name=\"Index\" value=\"index\">"

+" <input type=\"submit\"

value=\"Enviar\"></td></FORM>"

+" </tr>"

+" <tr>"

+" <td colspan=\"2\"><div

align=\"center\"></div></td>"

+" <td width=\"249\"><span

class=\"style1\">"+textoAnexado+"</span></td>"

+" </tr>"

Page 71: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

71

+" </table></td>"

+" </tr>"

+"</table>"

);

}

// Tell the browser if their login worker or not

else if (pe.value.equals(usuarioLogin) &&

pe1.value.equals(senhaLogin) && pe2.value.equals("index") ){

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " Usuário Logado com Sucesso.";

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\"naoverificado.gif\" alt=\"Status Bateria\"

width=\"122\" height=\"22\"></td></tr><tr><td><div align=\"center\"

class=\"style2\">Bateria do Sensor</div></td><td><span

class=\"style2\">:</span></td><td><img src=\"naoverificado.gif\" alt=\"Bateria

Sensor\" width=\"122\" height=\"22\"></td></tr><tr><td><div align=\"center\"

class=\"style2\">Status do Sensor</div></td><td><span

class=\"style2\">:</span></td><td><img src=\"naoverificado.gif\" alt=\"Status

Sensor\" width=\"122\" height=\"22\"></td></tr></table><br><table width=\"420\"

border=\"0\" align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

Page 72: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

72

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">Usuario Logado com Sucesso.</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else

strBuff.append(failureCause + "<BR>\r\n" );

// Create HTML footers

strBuff.append( "</BODY></HTML>" );

// Use HTTPWorker's encode body function to generate the URL encoded

response

out.write( work.encodeBody( HTTPServer.HTTP_OK, "OK",

HTTPServer.MIME_TEXT_HTML, strBuff.length() ) );

// Send out the bytes of our response page

out.write( strBuff.toString().getBytes() );

// Ensure that our data is written imediatly

out.flush();

// Inform user that we are done handling the POST request

System.out.println("Pagina Enviada Com Sucesso!");

}

else /*if(!pe.value.equals("zero"))*/{

// Check the user name and password they submited.

pe = (PostElement)data.elementAt(1);

pe1 = (PostElement)data.elementAt(2);

//pe2 = (PostElement)data.elementAt(2);

strBuff = new StringBuffer();

if ( pe.value.equals("ligar") && pe1.value.equals("alarme") &&

flagJaLigado == 0 ){

flagJaLigado = 1;

String messageStatus01 = new String();

String messageStatus02 = new String();

//get bat

//get bat status

//ligar

//retornar na tela

//mandar no celular

//monitor

try {

//strBuff.append( htmlHeaderGeneric );

//pegando status da bateria da central

String messageString = "101GETBAT\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial1").open("LCentral", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

Page 73: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

73

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada a Central\n");

sout.flush();

int count;

int valorBuffer;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria OK da

Central <<\r\n");

gifCentral = "bateriaok.gif";

messageStatus01 = "Batt Central OK";

System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria BAIXA da

Central <<\r\n");

gifCentral = "bateriafraca.gif";

messageStatus01 = "Batt Central LOW";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

sp.close();

//pegando status da bateria do sensor

messageString = "101GET_BATT_STATUS\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

Page 74: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

74

sout.flush();

count=0;

valorBuffer=0;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria BAIXA do

SENSOR 01 <<\r\n");

gifSensor = "bateriaok.gif";

messageStatus02 = "Batt Sensor OK";

System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria OK do SENSOR

<<\r\n");

gifSensor = "bateriafraca.gif";

messageStatus02 = "Batt Sensor LOW";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

//sp.close();

//ligando o sensor que sai do standby

sp.close();

messageString = "101LIGAR\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Comunicacao Serial OK.");

Page 75: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

75

sp.close();

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Alarme Ligado: " +

dataAtual.toString()+"\r\n");

aLog.close();

//mandando sms

/*

messageString = "at+cmgs=\""+ numeroCelular +"\"";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

//certifica-se de que enviou

sout.flush();

//segundo caracter

sout.write(0x0D);

sout.flush();

//terceiro caracter

sout.write(0x0A);

sout.flush();

//mensagem a ser enviada

messageString = " \nWEB

ALARME:\nLIGADO\n"+messageStatus01+"\n"+messageStatus02+"\n";

sout.write(messageString.getBytes());

sout.flush();

//caracter de final de comando

sout.write(0x1A);

System.out.println("Mensagem Enviada\n");

sout.flush();

System.out.println("Dados Interpretados\n");

sp.close();

*/

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " >> Sensor e Monitoramento Ligados <<";

//gifStatus = "sligado.gif";

gifLigado = "mligar.gif";

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

Page 76: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

76

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

} catch (Exception e) {

System.out.println(e.getMessage());

}

//strBuff.append( "\n>> Sensor e Monitoramento Ligados

<<\r\n");

flagStatusSensor = 0;

flagJaDesligado = 0;

moSensor.start();

}

else if ( pe.value.equals("ligar") && pe1.value.equals("alarme") &&

flagJaLigado == 1 ){

String textoAnexado = new String();

Page 77: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

77

// Tell the browser if their login worker or not

textoAnexado = " >> Sensor e Monitoramento Já Ligados <<";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if(pe.value.equals("setCelular") && pe1.value.equals("alarme")

){

Page 78: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

78

pe = (PostElement)data.elementAt(3);

System.out.println(pe.value.toString());

numeroCelular = pe.value.toString();

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\nNumero Celular Alterado com Sucesso.\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " Numero Celular Alterado com Sucesso";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

Page 79: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

79

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if(pe.value.equals("getCelular") && pe1.value.equals("alarme")

){

//strBuff.append( htmlHeaderGeneric );

//sessaoIniciada = 1;

//sessaoValor ++;

//if(sessaoValor >= 4)

// sessaoValor = 0;

//strBuff.append( "\nNumero Celular: "+ numeroCelular);

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = "Numero Celular: "+numeroCelular;

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

Page 80: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

80

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if(pe.value.equals("setUser") && pe1.value.equals("alarme") ){

pe = (PostElement)data.elementAt(3);

System.out.println(pe.value.toString());

usuarioLogin = pe.value.toString();

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\nNumero Celular Alterado com Sucesso.\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = "Usuário Alterado com Sucesso";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Page 81: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

81

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if(pe.value.equals("getUser") && pe1.value.equals("alarme") ){

//strBuff.append( htmlHeaderGeneric );

//sessaoIniciada = 1;

//sessaoValor ++;

//if(sessaoValor >= 4)

// sessaoValor = 0;

//strBuff.append( "\nNumero Celular: "+ numeroCelular);

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = "Usuário: "+usuarioLogin;

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

Page 82: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

82

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if(pe.value.equals("setPass") && pe1.value.equals("alarme") ){

pe = (PostElement)data.elementAt(3);

System.out.println(pe.value.toString());

senhaLogin = pe.value.toString();

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\nNumero Celular Alterado com Sucesso.\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = "Password Alterado com Sucesso";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

Page 83: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

83

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if(pe.value.equals("getPass") && pe1.value.equals("alarme") ){

//strBuff.append( htmlHeaderGeneric );

//sessaoIniciada = 1;

//sessaoValor ++;

//if(sessaoValor >= 4)

// sessaoValor = 0;

//strBuff.append( "\nNumero Celular: "+ numeroCelular);

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = "Password: "+senhaLogin;

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Page 84: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

84

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if ( pe.value.equals("rearmar") && pe1.value.equals("alarme")

){

flagStatusSensor = 1;

flagJaLigado = 1;

System.out.println("Desligando...");

//strBuff.append( htmlHeaderGeneric );

String messageStatus01 = new String();

String messageStatus02 = new String();

//get bat

//get bat status

//ligar

//retornar na tela

//mandar no celular

//monitor

try {

//pegando status da bateria da central

String messageString = "101GETBAT\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial1").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

Page 85: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

85

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

int count;

int valorBuffer;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria OK da

Central <<\r\n");

gifCentral = "bateriaok.gif";

messageStatus01 = "Batt Central OK";

System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria BAIXA da

Central <<\r\n");

gifCentral = "bateriafraca.gif";

messageStatus01 = "Batt Central LOW";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

sp.close();

//pegando status da bateria do sensor

messageString = "101GET_BATT_STATUS\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

Page 86: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

86

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

count=0;

valorBuffer=0;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria BAIXA do

SENSOR 01 <<\r\n");

gifSensor = "bateriafraca.gif";

messageStatus02 = "Batt Sensor LOW";

System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria OK do SENSOR

01 <<\r\n");

gifSensor = "bateriaok.gif";

messageStatus02 = "Batt Sensor OK";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

sp.close();

//ligando o sensor que sai do standby

sp.close();

messageString = "101LIGAR\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

Page 87: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

87

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Comunicacao Serial OK.");

sp.close();

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Alarme Rearmado: " +

dataAtual.toString()+"\r\n");

aLog.close();

//mandando sms

/*

messageString = "at+cmgs=\""+ numeroCelular +"\"";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

//certifica-se de que enviou

sout.flush();

//segundo caracter

sout.write(0x0D);

sout.flush();

//terceiro caracter

sout.write(0x0A);

sout.flush();

//mensagem a ser enviada

messageString = " \nWEB

ALARME:\nREARMADO\n"+messageStatus01+"\n"+messageStatus02+"\n";

sout.write(messageString.getBytes());

sout.flush();

//caracter de final de comando

sout.write(0x1A);

System.out.println("Mensagem Enviada\n");

sout.flush();

System.out.println("Dados Interpretados\n");

sp.close();

*/

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " >> Central Rearmada <<";

gifStatus = "sligado.gif";

gifLigado = "mligar.gif";

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

Page 88: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

88

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

} catch (Exception e) {

System.out.println(e.getMessage());

}

//strBuff.append( "\n>> Central Rearmada <<\r\n");

System.out.println("Ligando...\nCentral Rearmada.");

while(true)

{

if(!moSensor.isAlive())

break;

Page 89: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

89

}

flagStatusSensor = 0;

flagJaDesligado = 0;

moSensor.start();

}

/*else if ( pe.value.equals("msensor") && pe1.value.equals("alarme")

){

strBuff.append( htmlHeaderGeneric );

strBuff.append( "\n>> Monitoramento dos Sensores Ligado

<<\r\n");

try {

//Flag = 0 $ Monitoramento Pode Ocorrer

flagStatusSensor = 0;

moSensor.start();

System.out.println("Monitoramento Ativado");

String messageString = "SERIAL1\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Comunicacao Serial OK.");

sp.close();

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

*/

else if ( pe.value.equals("celular") && pe1.value.equals("alarme")

){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Monitoramento de Comandos SMS

Ligado <<\r\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " >>Monitoramento de Comandos SMS Ligado<<";

gifCelular = "mligar.gif";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Page 90: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

90

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

try {

//Flag = 0 $ Monitoramento Pode Ocorrer

flagStatusCelular = 0;

flagCelularJaLigado = 1;

moCelular.start();

System.out.println("Monitoramento Celular

Ativado");

String messageString = "Monitor Celular Ligado\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Comunicacao Serial OK.");

Page 91: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

91

sp.close();

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

else if ( pe.value.equals("dsensor") && pe1.value.equals("alarme")

){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Monitoramento dos Sensores

Desligado <<\r\n");

try {

//Flag = 1 $ Monitoramento Cancelado

flagStatusSensor = 1;

System.out.println("Monitoramento dos Sensores

Desligado");

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

else if ( pe.value.equals("dcelular") && pe1.value.equals("alarme")

){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Monitoramento de Comandos SMS

Desligado <<\r\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " >>Monitoramento de Comandos SMS Desligado<<";

gifCelular = "m3desligado.gif";

flagCelularJaLigado = 0;

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

Page 92: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

92

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

try {

//Flag = 1 $ Monitoramento Cancelado

flagStatusCelular = 1;

flagCelularJaLigado = 0;

System.out.println("Monitoramento Celular

Desligado");

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

else if ( pe.value.equals("desligar") && pe1.value.equals("alarme")

&& flagJaDesligado == 0){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Sensor Desligado <<\r\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " >> Sensor e Monitoramento Desligados <<";

gifStatus = "sstandby.gif";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

Page 93: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

93

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

try {

//gravando log

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Alarme Desligado: " +

dataAtual.toString()+"\r\n");

aLog.close();

//mandando sms de desligado

/*

String messageString = "at+cmgs=\""+ numeroCelular

+"\"";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

Page 94: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

94

sp.setSerialPortParams(2400,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

//certifica-se de que enviou

sout.flush();

//segundo caracter

sout.write(0x0D);

sout.flush();

//terceiro caracter

sout.write(0x0A);

sout.flush();

//mensagem a ser enviada

messageString = " \nWEB

ALARME:\nDESLIGADO\n";

sout.write(messageString.getBytes());

sout.flush();

//caracter de final de comando

sout.write(0x1A);

System.out.println("Mensagem Enviada\n");

sout.flush();

System.out.println("Dados Interpretados\n");

sp.close();

*/

} catch (Exception e) {

System.out.println(e.getMessage());

}

//seta flag para parar monitoramento

valorStatusSensor[0] = 0;

flagStatusSensor = 1;

flagJaDesligado = 1;

flagJaLigado = 0;

}

else if ( pe.value.equals("desligar") && pe1.value.equals("alarme")

&& flagJaDesligado == 1 ){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Sensor Já Desligado <<\r\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " >>Sensor e Monitoramento Já Desligados<<";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

Page 95: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

95

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if ( pe.value.equals("status") && pe1.value.equals("alarme") ){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append("Recebendo Status: ");

try {

//pegando status da bateria da central

String messageStatus01 = new String();

String messageStatus02 = new String();

String messageStatus03 = new String();

String messageString = "101GETBAT\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial1").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

Page 96: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

96

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

int count;

int valorBuffer;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria OK da

Central <<\r\n");

gifCentral = "bateriaok.gif";

messageStatus01 = "Batt Central OK";

System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria BAIXA da

Central <<\r\n");

gifCentral = "bateriafraca.gif";

messageStatus01 = "Batt Central LOW";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

sp.close();

//pegando status da bateria do sensor

messageString = "101GET_BATT_STATUS\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

Page 97: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

97

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

count=0;

valorBuffer=0;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria BAIXA do

SENSOR 01 <<\r\n");

gifSensor = "bateriafraca.gif";

messageStatus02 = "Batt Sensor LOW";

System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria OK do SENSOR

01 <<\r\n");

gifSensor = "bateriaok.gif";

messageStatus02 = "Batt Sensor OK";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

sp.close();

Date dataAtual = new Date();

System.out.println(dataAtual.toString());

if(valorStatusSensor[0] == 0)

{

//strBuff.append("Sensor StandBy.\r\n");

gifStatus = "sstandby.gif";

messageStatus03 = "Sensor StandBy";

}

else if(valorStatusSensor[0] == 1)

{

//strBuff.append("Sensor Ligado.\r\n");

gifStatus = "sligado.gif";

messageStatus03 = "Sensor Ligado";

}

else if(valorStatusSensor[0] == 2)

Page 98: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

98

{

//strBuff.append("Sensor Disparado.\r\n");

gifStatus = "alarmeDisparado.gif";

messageStatus03 = "Sensor Disparado";

}

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new PrintStream(arquivoLog);

aLog.println("Status Verificado: " +

dataAtual.toString()+"\r\n");

aLog.close();

//mandando sms

/*

messageString = "at+cmgs=\""+ numeroCelular +"\"";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

//certifica-se de que enviou

sout.flush();

//segundo caracter

sout.write(0x0D);

sout.flush();

//terceiro caracter

sout.write(0x0A);

sout.flush();

//mensagem a ser enviada

messageString = " \nWEB

ALARME:\n"+messageStatus01+"\n"+messageStatus02+"\n"+messageStatus03;

sout.write(messageString.getBytes());

sout.flush();

//caracter de final de comando

sout.write(0x1A);

System.out.println("Mensagem Enviada\n");

sout.flush();

System.out.println("Dados Interpretados\n");

sp.close();

*/

//montando html

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " Status Recebido";

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

Page 99: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

99

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

else if ( pe.value.equals("getIp") && pe1.value.equals("alarme") ){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Endereco IP:

"+TININet.getIPAddress()+"<br>>> Mascara SubRede:"+TININet.getSubnetMask());

String textoAnexado = new String();

// Tell the browser if their login worker or not

Page 100: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

100

textoAnexado = "Endereco IP:

"+TININet.getIPAddress()+"<br>>> Mascara SubRede:"+TININet.getSubnetMask();

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

System.out.println("Endereco IP Revelado");

Page 101: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

101

}

else if ( pe.value.equals("setIp") && pe1.value.equals("alarme") ){

pe = (PostElement)data.elementAt(4);

TININet.setIPAddress(pe.value.toString());

//strBuff.append( htmlHeaderGeneric );

// strBuff.append( "\nEndereco IP Alterado com

Sucesso.\r\n");

String textoAnexado = new String();

// Tell the browser if their login worker or not

textoAnexado = " Endereco IP Alterado com Sucesso";

strBuff.append( "<html><head><title>-$= Alarme Monitorado e

Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2 {font-

family: \"Courier New\", Courier, monospace}a:link {color: #FFFFFF;}a:visited

{color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color: #FFFFFF;}.style4

{font-family: \"Courier New\", Courier, monospace; font-size: small; }--

></style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-

8\"></head><body><div align=\"center\"><img src=\"logoSistemaWEB.gif\" alt=\"WEB

Alarme Michel e Jefferson\" width=\"451\" height=\"111\"><br></div><br><table

width=\"455\" border=\"1\" align=\"center\"><tr><td><table width=\"440\"

border=\"0\" align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

Page 102: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

102

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

}

else if ( pe.value.equals("getData") && pe1.value.equals("alarme")

){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Endereco IP:

"+TININet.getIPAddress()+"<br>>> Mascara SubRede:"+TININet.getSubnetMask());

String textoAnexado = new String();

Date dataAtual = new Date();

// Tell the browser if their login worker or not

textoAnexado = "Data Atual: "+dataAtual.toString();

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

Page 103: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

103

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

System.out.println("Endereco IP Revelado");

}

else if ( pe.value.equals("setData") && pe1.value.equals("alarme")

){

//strBuff.append( htmlHeaderGeneric );

//strBuff.append( "\n>> Endereco IP:

"+TININet.getIPAddress()+"<br>>> Mascara SubRede:"+TININet.getSubnetMask());

String textoAnexado = new String();

Date dataAtual = new Date();

// Tell the browser if their login worker or not

textoAnexado = "Data Atual: "+dataAtual.toString();

strBuff.append( "<html><head><title>-$= Alarme

Monitorado e Controlado pela WEB =$-</title><style type=\"text/css\"><!--.style2

{font-family: \"Courier New\", Courier, monospace}a:link {color:

#FFFFFF;}a:visited {color: #FFFFFF;}a:hover {color: #FFFFFF;}a:active {color:

#FFFFFF;}.style4 {font-family: \"Courier New\", Courier, monospace; font-size:

small; }--></style><meta http-equiv=\"Content-Type\" content=\"text/html;

charset=utf-8\"></head><body><div align=\"center\"><img

src=\"logoSistemaWEB.gif\" alt=\"WEB Alarme Michel e Jefferson\" width=\"451\"

height=\"111\"><br></div><br><table width=\"455\" border=\"1\"

align=\"center\"><tr><td><table width=\"440\" border=\"0\"

align=\"center\"><tr><td width=\"215\"><div align=\"right\"

class=\"style2\">Selecione um comando:</div></td><td width=\"20\"><FORM

METHOD=\"POST\" ENCTYPE=\"application/x-www-form-urlencoded\"

ACTION=\"PostHandlerAlarme\"><input type=\"hidden\" name=\"verificador\"

value=\"inside\"></td><td width=\"151\"><select size=\"1\" name=\"Name\"><option

value=\"\" selected>Lista de Comandos</option><option value=\"ligar\">Monitorar

Sensores</option><option value=\"celular\">Monitorar SMS</option><option

value=\"status\">Status</option><option value=\"rearmar\">Rearmar

Central</option><option value=\"getIp\">Verificar IP</option><option

value=\"setIp\">Ajustar IP</option><option value=\"setIPMask\">Ajustar Mascara

Subrede</option><option value=\"getCelular\">Ver Numero Celular</option><option

value=\"setCelular\">Ajustar Numero Celular</option><option

value=\"getUser\">Verifica Usuario</option><option value=\"setUser\">Ajustar

Nome Usuario</option><option value=\"getPass\">Verifica Senha</option><option

value=\"setPass\">Ajustar Senha</option><option value=\"getData\">Ver

Data</option><option value=\"setData\">Ajustar Data</option><option

value=\"dcelular\">Desligar Mon. SMS</option><option value=\"desligar\">Desligar

Mon. Sensores</option><option value=\"sair\">SAIR</option></tr><tr><td><div

align=\"center\"><span class=\"style4\">Parametros dos

Comandos</span></div></td><td><input type=\"hidden\" name=\"Index\"

value=\"alarme\"></td><td><input type=\"text\"

name=\"secLine\"></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td><input

type=\"submit\" value=\"Enviar\"></FORM></td></tr></table><p></p><table

width=\"350\" border=\"0\" align=\"center\" bordercolor=\"#333333\"><tr><td

width=\"185\"><div align=\"center\" class=\"style2\">Bateria da

Central</div></td><td width=\"21\"><span class=\"style2\">:</span></td><td

Page 104: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

104

width=\"130\"><img src=\""+gifCentral+"\" alt=\"Status Bateria\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Bateria

do Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifSensor+"\" alt=\"Bateria Sensor\" width=\"122\"

height=\"22\"></td></tr><tr><td><div align=\"center\" class=\"style2\">Status do

Sensor</div></td><td><span class=\"style2\">:</span></td><td><img

src=\""+gifStatus+"\" alt=\"Status Sensor\" width=\"122\"

height=\"22\"></td></tr></table><br><table width=\"420\" border=\"0\"

align=\"center\"><tr><td width=\"260\"><div align=\"center\"><span

class=\"style2\">Monitoramento do Sensor</span></div></td><td width=\"150\"><div

align=\"center\"><img src=\""+gifLigado+"\" alt=\"Monitoramento do Sensor\"

width=\"122\" height=\"22\"></div></td></tr><tr><td><div align=\"center\"><span

class=\"style2\">Monitoramento de SMS</span></div></td><td><div

align=\"center\"><img src=\""+gifCelular+ "\" alt=\"Monitoramento de SMS\"

width=\"122\" height=\"22\"></div></td></tr></table><br></CENTER><table

width=\"445\" border=\"0\" align=\"center\"><tr><td><span

class=\"style2\">Mensagem da Central</span></td></tr><tr><td><span

class=\"style2\">"+textoAnexado+"</span></td></tr><tr><td><div

align=\"center\"><a href=\"arquivoLog.txt\" target=\"_blank\"><img

src=\"verificalog.gif\" alt=\"Verificar Arquivo de Log\" width=\"133\"

height=\"35\"></a></div></td></tr></table></td></tr></table><p></p>");

System.out.println("Endereco IP Revelado");

}

else if ( pe.value.equals("sair") && pe1.value.equals("alarme") )

{

failureCause = "Logout";

// Write out the HTML headers and basic title text here

String textoAnexado = new String();

textoAnexado = " Sessao Finalizada com Sucesso.";

// Write out the HTML headers and basic title text here

strBuff.append( "<html>"

+"<head>"

+"<title>-$= Alarme Monitorado e Controlado pela

WEB =$-</title>"

+"<style type=\"text/css\">"

+"<!--"

+".style1 {font-family: \"Courier New\", Courier,

monospace}"

+"-->"

+"</style>"

+"</head>"

+"<body>"

+"<div align=\"center\"><img

src=\"logoSistemaWEB.gif\" width=\"447\" height=\"109\" alt=\"Alarme Michel e

Jefferson\"></div>"

+"<br>"

+"<table width=\"455\" border=\"1\"

align=\"center\">"

+" <tr>"

+" <td><table width=\"445\" border=\"0\"

align=\"center\">"

+" <tr>"

+" <td colspan=\"4\"><div align=\"center\"

class=\"style1\">"

+" <p>Entre com Nome de Usuario e

Senha.</p>"

+" <p><br>"

+" </p>"

+" </div></td>"

+" </tr>"

+" <tr><FORM METHOD=\"POST\"

ENCTYPE=\"application/x-www-form-urlencoded\" ACTION=\"PostHandlerAlarme\">"

Page 105: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

105

+" <td width=\"45\"><div align=\"center\"

class=\"style1\">"

+" <input type=\"hidden\"

name=\"verificador\" value=\"zero\">"

+" </div></td>"

+" <td width=\"78\"><span

class=\"style1\">Nome:</span></td>"

+" <td colspan=\"2\"><input type=\"text\"

name=\"Name\" ></td>"

+" </tr>"

+" <tr>"

+" <td rowspan=\"2\"><div align=\"center\"

class=\"style1\"></div></td>"

+" <td><span

class=\"style1\">Senha:</span></td>"

+" <td colspan=\"2\"><input

type=\"password\" name=\"Password\" >"

+" <input type=\"hidden\"

name=\"Index\" value=\"index\">"

+" <input type=\"submit\"

value=\"Enviar\"></td></FORM>"

+" </tr>"

+" <tr>"

+" <td colspan=\"2\"><div

align=\"center\"></div></td>"

+" <td width=\"249\"><span

class=\"style1\">"+textoAnexado+"</span></td>"

+" </tr>"

+" </table></td>"

+" </tr>"

+"</table>"

);

//sessaoIniciada = 0;

// Tell the browser if their login worker or not

//strBuff.append("\nSessao Finalizada com Sucesso.\n");

}

else

strBuff.append( "<html>"

+ "<head>"

+ "<title>-$= Alarme Monitorado e Controlado pela

WEB =$-</title>"

+ "</head>"

+ "<body>"

+ "<img src=\"sensor_logo.gif\" width=\"254\"

height=\"127\" alt=\"Alarme Michel e Jefferson\">"

+ "<br>"

+ "<pre>"

+ "Entre com um"

+ "<FORM METHOD=\"POST\" ENCTYPE=\"application/x-

www-form-urlencoded\" ACTION=\"PostHandlerAlarme\">"

+ " <INPUT TYPE=\"hidden\"

NAME=\"verificador\" value=\"inside\">"

+ "\n Comando: "/*<INPUT TYPE=\"text\"

NAME=\"Name\" value=\"ligar\">"*/

+ "<select size=\"1\" name=\"Name\">"

+ "<option value=\"\" selected>Lista de

Comandos</option>"

+ "<option value=\"ligar\">ligar</option>"

+ "<option value=\"status\">status</option>"

+ "<option value=\"rearmar\">rearmar</option>"

+ "<option value=\"getIp\">getIp</option>"

+ "<option value=\"setIp\">setIp</option>"

+ "<option value=\"setIPMask\">setIPMask</option>"

Page 106: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

106

+ "<option

value=\"getCelular\">getCelular</option>"

+ "<option

value=\"setCelular\">setCelular</option>"

+ "<option value=\"getData\">getData</option>"

+ "<option value=\"setData\">setData</option>"

+ "<option value=\"desligar\">desligar</option>"

+ "<option value=\"celular\">celular</option>"

+ "<option value=\"sair\">sair</option>"

+ "</select>"

+ " <INPUT TYPE=\"hidden\" NAME=\"Index\"

VALUE=\"alarme\">"

+ "<INPUT TYPE=\"text\" NAME=\"secLine\" value=\"-

restrito-\">"

+ "\n\n <INPUT TYPE=\"submit\"

VALUE=\"Enviar\">"

+ "</FORM>"

+ "</pre>"

);

// Create HTML footers

strBuff.append( "</BODY></HTML>" );

// Use HTTPWorker's encode body function to generate the URL encoded

response

out.write( work.encodeBody( HTTPServer.HTTP_OK, "OK",

HTTPServer.MIME_TEXT_HTML, strBuff.length() ) );

// Send out the bytes of our response page

out.write( strBuff.toString().getBytes() );

// Ensure that our data is written imediatly

out.flush();

// Inform user that we are done handling the POST request

System.out.println("Pagina Enviada Com Sucesso!");

}

}

public static int getFlagSensor(){

int retorno = flagStatusSensor;

return retorno;

}

public static void setStatusSensor(int posicao, int status){

valorStatusSensor[posicao] = status;

}

}

Page 107: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

107

ANEXO E – CÓDIGO FONTE DA CENTRAL – MONITORAMENTO DE SENSOR

/*---------------------------------------------------------------------------

* Copyright (C) 2008 Michel e Jefferson, All Rights Reserved.

*

* Software desenvolvido para o projeto final de curso

* da Engenharia de Computacao pela Pontifícia Universidade Católica

* do Paraná com orientacao do Professor Altair Santin

*

* Software desenvolvido na ferramenta Eclipse com suporte

* ao jdk da TINI.

*

*---------------------------------------------------------------------------

*/

import java.io.*;

import java.util.*;

import com.dalsemi.tininet.http.*;

import java.util.Enumeration;

import javax.comm.CommPortIdentifier;

import javax.comm.SerialPort;

import com.dalsemi.system.TINIOS;

import com.dalsemi.comm.*;

import com.dalsemi.*;

import com.dalsemi.system.Clock;

public class MonitorSensor extends Thread implements Runnable{

public boolean statusLigado = true;

public void run(){

System.out.println("Thread de Monitoramento Ligada\n");

OutputStream sout;

InputStream sin;

SerialPort sp;

//comandos sms

OutputStream cout;

InputStream cin;

SerialPort cp;

boolean jaDisparado = false;

while (statusLigado)

{

try{

Thread.sleep(30000);

String messageString = "101GET_STATUS\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial4").open("GET_STATUS_MONITOR", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

System.out.println("Dados Interpretados\n");

Page 108: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

108

int count;

int valorBuffer;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 48)

{

//sensor standby

PostHandlerAlarme.setStatusSensor(0,0);

PostHandlerAlarme.setStatusSensor(1,0);

System.out.println(valorBuffer);

jaDisparado = false;

}

else if(i==9 && valorBuffer == 49)

{

//sensor ligado

if(PostHandlerAlarme.valorStatusSensor[1]==2)

{

//sensor veio do disparado para ligado

- rearmado

PostHandlerAlarme.valorStatusSensor[1]

= 1;

PostHandlerAlarme.flagRearmado = 1;

sp.close();

//salvando log

FileOutputStream arquivoLog;

PrintStream aLog;

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Alarme Rearmado - 5

Minutos: " + dataAtual.toString()+"\r\n");

aLog.close();

}

PostHandlerAlarme.setStatusSensor(0,1);

PostHandlerAlarme.setStatusSensor(1,1);

System.out.println(valorBuffer);

jaDisparado = false;

}

Page 109: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

109

else if(i==9 && valorBuffer == 50)

{

// sensor disparado

if(jaDisparado == false){

PostHandlerAlarme.msgJaEnviou = 1;

jaDisparado = true;

}

sp.close();

PostHandlerAlarme.setStatusSensor(0,2);

PostHandlerAlarme.setStatusSensor(1,2);

System.out.println("Alarme Disparado");

//strBuff.append("Sensor Disparado.\r\n");

//salvando log

FileOutputStream arquivoLog;

PrintStream aLog;

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Alarme DISPARADO: " +

dataAtual.toString()+"\r\n");

aLog.close();

}

}

sp.close();

//sleep(3000);

//pegando status

//pegando status da bateria da central

messageString = "101GETBAT\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial1").open("bat central", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

count = 0;

valorBuffer = 0;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

Page 110: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

110

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 51)

{ //bateria ok

PostHandlerAlarme.valorBateriaCentral = 1;

//System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 52)

{ //bateria low

PostHandlerAlarme.valorBateriaCentral = 0;

//System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

sp.close();

//pegando status da bateria do sensor

messageString = "101GET_BATT_STATUS\n";

sp = (SerialPort) CommPortIdentifier.getPortIdentifier(

"serial4").open("bat sensor", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

count=0;

valorBuffer=0;

while(true){

sin = sp.getInputStream();

valorBuffer = sin.read();

if(valorBuffer == 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

Page 111: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

111

for(int i =0;i<10;i++)

{

valorBuffer = sin.read();

if(i==9 && valorBuffer == 51)

{

PostHandlerAlarme.valorBateriaSensor = 1;

//System.out.println(valorBuffer);

}

else if(i==9 && valorBuffer == 52)

{

PostHandlerAlarme.valorBateriaSensor = 0;

//System.out.println(valorBuffer);

}

}

//System.out.println("Dados Interpretados\n");

sp.close();

//Busca Flag de Controle

if(PostHandlerAlarme.getFlagSensor()==1)

{

statusLigado = false;

PostHandlerAlarme.valorStatusSensor[0] = 0;

messageString = "101DESLIGAR\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial4").open("Desligar", 2000);

sp.setSerialPortParams(2400,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

sout = sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Comunicacao Serial - Desligar

OK.");

sout.flush();

sout.close();

sp.close();

//System.out.println(PostHandlerAlarme.getSensorStatus());

System.out.println("Desligando Monitoramento do

Sensor...");

}

sp.close();

}catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

public void setRunning(boolean running){

this.statusLigado = running;

}

public void setStopped(){

this.statusLigado = false;

}

public void setStarted(){

Page 112: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

112

this.statusLigado = true;

}

}

Page 113: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

113

ANEXO F – CÓDIGO FONTE DA CENTRAL – MONITORAMENTO DE SMS

/*---------------------------------------------------------------------------

* Copyright (C) 2008 Michel e Jefferson, All Rights Reserved.

*

* Software desenvolvido para o projeto final de curso

* da Engenharia de Computacao pela Pontifícia Universidade Católica

* do Paraná com orientacao do Professor Altair Santin

*

* Software desenvolvido na ferramenta Eclipse com suporte

* ao jdk da TINI.

*

*---------------------------------------------------------------------------

*/

import java.io.*;

import java.util.*;

import com.dalsemi.tininet.http.*;

import java.util.Enumeration;

import javax.comm.CommPortIdentifier;

import javax.comm.SerialPort;

import com.dalsemi.system.TINIOS;

import com.dalsemi.comm.*;

import com.dalsemi.*;

public class MonitorCelular extends Thread implements Runnable{

// public MonitorSensor()

// {

// }

boolean statusCelular = true;

public void run(){

System.out.println("Thread de Monitoramento SMS Ligada\n");

//comandos sms

OutputStream smsout;

InputStream smsin;

SerialPort spsms;

MonitorSensor moSensor = new MonitorSensor();

while (statusCelular)

{

try{

Thread.sleep(10000);

String messageComandoSMS = "at+cmgl=\"REC UNREAD\"\r\n";

spsms = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Thread Celular", 2000);

spsms.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

smsout = spsms.getOutputStream();

smsout.write(messageComandoSMS.getBytes());

//System.out.println("Requisicao Enviada\n");

smsout.flush();

smsin = spsms.getInputStream();

Page 114: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

114

int count;

int valorBuffer;

count = smsin.available();

//System.out.println("Dados no Buffer: " + count);

//System.out.println("Dados Recebidos\n");

for(int i =0;i<26;i++) //27

{

valorBuffer = smsin.read();

//System.out.println(valorBuffer);

if(i==25 && valorBuffer == 79)

{

System.out.println("Buffer Vazio");

//strBuff.append("Sensor StandBy.\r\n");

//System.out.println(valorBuffer);

}

else if(i==23 && valorBuffer == 43)

{

System.out.println("Novo Comando Recebido");

//strBuff.append("Sensor Ligado.\r\n");

//System.out.println(valorBuffer);

for(int j=0;j<40;j++){

valorBuffer = smsin.read();

//System.out.println(valorBuffer);

if(j==39 && valorBuffer == 76){

spsms.close();

//ligar

System.out.println("LIGAR");

//salvando log

FileOutputStream arquivoLog;

PrintStream aLog;

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new

PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Comando SMS

Recebido: LIGAR " + dataAtual.toString()+"\r\n");

aLog.close();

//System.out.println(valorBuffer);

if(PostHandlerAlarme.flagJaLigado

== 1)

{

OutputStream cout;

SerialPort cp;

String messageCelular =

"at+cmgs=\""+PostHandlerAlarme.numeroCelular+"\"";

cp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Envio Status", 2000);

cp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

Page 115: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

115

cout =

cp.getOutputStream();

cout.write(messageCelular.getBytes());

//certifica-se de que

enviou

cout.flush();

//segundo caracter

cout.write(0x0D);

cout.flush();

//terceiro caracter

cout.write(0x0A);

cout.flush();

//mensagem a ser enviada

messageCelular = "

\nWEB ALARME:\nAlarme Ja Ligado";

cout.write(messageCelular.getBytes());

cout.flush();

//caracter de final de

comando

cout.write(0x1A);

System.out.println("Mensagem Enviada\n");

cout.flush();

cout.close();

cp.close();

}

else{

PostHandlerAlarme.flagJaLigado = 1;

String messageStatus01 =

new String();

String messageStatus02 =

new String();

//get bat

//get bat status

//ligar

//retornar na tela

//mandar no celular

//monitor

try {

//pegando status da

bateria da central

OutputStream sout;

InputStream sin;

SerialPort sp;

//FileOutputStream

arquivoLog;

//PrintStream aLog;

String messageString

= "101GETBAT\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial1").open("Write", 2000);

Page 116: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

116

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

count = 0;

valorBuffer = 0;

while(true){

sin =

sp.getInputStream();

valorBuffer =

sin.read();

if(valorBuffer

== 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count =

sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int k

=0;k<10;k++)

{

valorBuffer =

sin.read();

if(k==9 &&

valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria OK da Central <<\r\n");

messageStatus01 = "Batt Central OK";

System.out.println(valorBuffer);

}

Page 117: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

117

else if(k==9 &&

valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria BAIXA da Central <<\r\n");

messageStatus01 = "Batt Central LOW";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

sp.close();

//pegando status da

bateria do sensor

messageString =

"101GET_BATT_STATUS\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

count=0;

valorBuffer=0;

while(true){

sin =

sp.getInputStream();

valorBuffer =

sin.read();

if(valorBuffer

== 48){

valorBuffer = sin.read();

if(valorBuffer == 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

Page 118: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

118

}

count =

sin.available();

System.out.println("Dados no Buffer: " + count);

System.out.println("Dados Recebidos\n");

for(int k

=0;k<10;k++)

{

valorBuffer =

sin.read();

if(k==9 &&

valorBuffer == 52)

{

//strBuff.append( "\n>> Bateria BAIXA do SENSOR 01 <<\r\n");

messageStatus02 = "Batt Sensor LOW";

System.out.println(valorBuffer);

}

else if(k==9 &&

valorBuffer == 51)

{

//strBuff.append( "\n>> Bateria OK do SENSOR 01 <<\r\n");

messageStatus02 = "Batt Sensor OK";

System.out.println(valorBuffer);

}

}

System.out.println("Dados Interpretados\n");

//sp.close();

//ligando o sensor

que sai do standby

sp.close();

messageString =

"101LIGAR\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

Page 119: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

119

System.out.println("Comunicacao Serial OK.");

sp.close();

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new

PrintStream(arquivoLog);

dataAtual = new Date();

aLog.println("Alarme

Ligado: " + dataAtual.toString()+"\r\n");

aLog.close();

messageString =

"at+cmgs=\""+ PostHandlerAlarme.numeroCelular +"\"";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

//certifica-se de que

enviou

sout.flush();

//segundo caracter

sout.write(0x0D);

sout.flush();

//terceiro caracter

sout.write(0x0A);

sout.flush();

//mensagem a ser

enviada

messageString = "

\nWEB ALARME:\nLIGADO\n"+messageStatus01+"\n"+messageStatus02+"\n";

sout.write(messageString.getBytes());

sout.flush();

//caracter de final

de comando

sout.write(0x1A);

System.out.println("Mensagem Enviada\n");

sout.flush();

System.out.println("Dados Interpretados\n");

sp.close();

} catch (Exception e) {

Page 120: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

120

System.out.println(e.getMessage());

}

//strBuff.append( "\n>>

Sensor e Monitoramento Ligados <<\r\n");

PostHandlerAlarme.flagStatusSensor = 0;

PostHandlerAlarme.flagJaDesligado = 0;

moSensor.start();

}

}

else if(j==39 && valorBuffer == 68){

spsms.close();

//desligar

System.out.println("DESLIGAR");

//salvando log

FileOutputStream arquivoLog;

PrintStream aLog;

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new

PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Comando SMS

Recebido: DESLIGAR " + dataAtual.toString()+"\r\n");

aLog.close();

if(PostHandlerAlarme.flagJaDesligado == 1){

OutputStream cout;

SerialPort cp;

String messageCelular =

"at+cmgs=\""+PostHandlerAlarme.numeroCelular+"\"";

cp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Envio Status", 2000);

cp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

cout =

cp.getOutputStream();

cout.write(messageCelular.getBytes());

//certifica-se de que

enviou

cout.flush();

//segundo caracter

cout.write(0x0D);

cout.flush();

Page 121: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

121

//terceiro caracter

cout.write(0x0A);

cout.flush();

//mensagem a ser enviada

messageCelular = "

\nWEB ALARME:\nAlarme Ja Desligado";

cout.write(messageCelular.getBytes());

cout.flush();

//caracter de final de

comando

cout.write(0x1A);

System.out.println("Mensagem Enviada\n");

cout.flush();

cout.close();

cp.close();

}

else{

try {

OutputStream sout;

SerialPort sp;

String messageString

= "DESLIGAR\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Comunicacao Serial OK.");

sp.close();

//gravando log

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new

PrintStream(arquivoLog);

dataAtual = new Date();

aLog.println("Alarme

Desligado: " + dataAtual.toString()+"\r\n");

aLog.close();

messageString =

"at+cmgs=\""+ PostHandlerAlarme.numeroCelular +"\"";

Page 122: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

122

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

//certifica-se de que

enviou

sout.flush();

//segundo caracter

sout.write(0x0D);

sout.flush();

//terceiro caracter

sout.write(0x0A);

sout.flush();

//mensagem a ser

enviada

messageString = "

\nWEB ALARME:\nDESLIGADO\n";

sout.write(messageString.getBytes());

sout.flush();

//caracter de final

de comando

sout.write(0x1A);

System.out.println("Mensagem Enviada\n");

sout.flush();

System.out.println("Dados Interpretados\n");

sp.close();

} catch (Exception e) {

System.out.println(e.getMessage());

}

//seta flag para parar

monitoramento

PostHandlerAlarme.flagStatusSensor = 1;

PostHandlerAlarme.flagJaDesligado = 1;

PostHandlerAlarme.flagJaLigado = 0;

}

}

else if(j==39 && valorBuffer == 82){

spsms.close();

OutputStream sout;

InputStream sin;

Page 123: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

123

SerialPort sp;

//rearmar

System.out.println("REARMAR");

//salvando log

FileOutputStream arquivoLog;

PrintStream aLog;

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new

PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Comando SMS

Recebido: REARMAR " + dataAtual.toString()+"\r\n");

aLog.close();

PostHandlerAlarme.flagStatusSensor = 1;

PostHandlerAlarme.flagJaLigado =

1;

System.out.println("Desligando...");

Thread.sleep(30000);

String messageStatus01 = new

String();

String messageStatus02 = new

String();

//get bat

//get bat status

//ligar

//retornar na tela

//mandar no celular

//monitor

try {

//pegando status da bateria

da central

String messageString =

"101GETBAT\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial1").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

Page 124: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

124

count = 0;

valorBuffer = 0;

while(true){

sin =

sp.getInputStream();

valorBuffer =

sin.read();

if(valorBuffer ==

48){

valorBuffer =

sin.read();

if(valorBuffer

== 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados

no Buffer: " + count);

System.out.println("Dados

Recebidos\n");

for(int k =0;k<10;k++)

{

valorBuffer =

sin.read();

if(k==9 &&

valorBuffer == 51)

{

PostHandlerAlarme.valorBateriaCentral = 1;

messageStatus01

= "Batt Central OK";

System.out.println(valorBuffer);

}

else if(k==9 &&

valorBuffer == 52)

{

PostHandlerAlarme.valorBateriaCentral = 0;

messageStatus01

= "Batt Central LOW";

System.out.println(valorBuffer);

}

}

System.out.println("Dados

Interpretados\n");

sp.close();

//pegando status da bateria

do sensor

Page 125: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

125

messageString =

"101GET_BATT_STATUS\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Requisicao Enviada ao Sensor\n");

sout.flush();

count=0;

valorBuffer=0;

while(true){

sin =

sp.getInputStream();

valorBuffer =

sin.read();

if(valorBuffer ==

48){

valorBuffer =

sin.read();

if(valorBuffer

== 49){

valorBuffer = sin.read();

if(valorBuffer == 48)

break;

}

}

}

count = sin.available();

System.out.println("Dados

no Buffer: " + count);

System.out.println("Dados

Recebidos\n");

for(int t =0;t<10;t++)

{

valorBuffer =

sin.read();

if(t==9 &&

valorBuffer == 52)

{

PostHandlerAlarme.valorBateriaSensor = 0;

messageStatus02

= "Batt Sensor LOW";

Page 126: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

126

System.out.println(valorBuffer);

}

else if(t==9 &&

valorBuffer == 51)

{

PostHandlerAlarme.valorBateriaSensor = 1;

messageStatus02

= "Batt Sensor OK";

System.out.println(valorBuffer);

}

}

System.out.println("Dados

Interpretados\n");

sp.close();

//ligando o sensor que sai

do standby

sp.close();

messageString =

"101LIGAR\n";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial4").open("Write", 2000);

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

System.out.println("Comunicacao Serial OK.");

sp.close();

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new

PrintStream(arquivoLog);

Date dataRearme = new Date();

aLog.println("Alarme

Rearmado: " + dataRearme.toString()+"\r\n");

aLog.close();

messageString =

"at+cmgs=\""+ PostHandlerAlarme.numeroCelular +"\"";

sp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Write", 2000);

Page 127: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

127

sp.setSerialPortParams(2400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sout =

sp.getOutputStream();

sout.write(messageString.getBytes());

//certifica-se de que

enviou

sout.flush();

//segundo caracter

sout.write(0x0D);

sout.flush();

//terceiro caracter

sout.write(0x0A);

sout.flush();

//mensagem a ser enviada

messageString = "

\nWEB ALARME:\nREARMADO\n"+messageStatus01+"\n"+messageStatus02+"\n";

sout.write(messageString.getBytes());

sout.flush();

//caracter de final de

comando

sout.write(0x1A);

System.out.println("Mensagem Enviada\n");

sout.flush();

System.out.println("Dados

Interpretados\n");

sp.close();

} catch (Exception e) {

System.out.println(e.getMessage());

}

System.out.println("Ligando...\nCentral Rearmada.");

while(true)

{

if(!moSensor.isAlive())

break;

}

PostHandlerAlarme.flagStatusSensor = 0;

PostHandlerAlarme.flagJaDesligado

= 0;

moSensor.start();

}

else if(j==39 && valorBuffer == 83){

spsms.close();

//status

Page 128: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

128

System.out.println("STATUS");

//salvando log

FileOutputStream arquivoLog;

PrintStream aLog;

arquivoLog = new

FileOutputStream("html/arquivoLog.txt",true);

aLog = new

PrintStream(arquivoLog);

Date dataAtual = new Date();

aLog.println("Comando SMS

Recebido: STATUS " + dataAtual.toString()+"\r\n");

aLog.close();

//comandos sms

OutputStream cout;

SerialPort cp;

String statusCelular1 = new String();

String statusCelular2 = new String();

String statusCelular3 = new String();

String statusCelular4 = new String();

//verificando status

if (PostHandlerAlarme.flagJaLigado ==

0)

statusCelular1 = "Monitor

Desligado";

else if(PostHandlerAlarme.flagJaLigado

== 0)

statusCelular1 = "Monitor

Ligado";

if(PostHandlerAlarme.valorBateriaCentral == 0)

statusCelular2= "Bat Central

LOW";

else

if(PostHandlerAlarme.valorBateriaCentral == 1)

statusCelular2= "Bat Central OK";

if(PostHandlerAlarme.valorBateriaSensor == 0)

statusCelular3= "Bat Sensor LOW";

else

if(PostHandlerAlarme.valorBateriaSensor == 1)

statusCelular3= "Bat Sensor OK";

if(PostHandlerAlarme.valorStatusSensor[0] == 0)

statusCelular4= "Sensor StandBy";

else

if(PostHandlerAlarme.valorStatusSensor[0]== 1)

statusCelular4= "Sensor Ligado";

else

if(PostHandlerAlarme.valorStatusSensor[0] == 2)

statusCelular4= "Sensor

Disparado";

String messageCelular =

"at+cmgs=\""+PostHandlerAlarme.numeroCelular+"\"";

cp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Envio Status", 2000);

Page 129: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

129

cp.setSerialPortParams(2400,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

cout = cp.getOutputStream();

cout.write(messageCelular.getBytes());

//certifica-se de que enviou

cout.flush();

//segundo caracter

cout.write(0x0D);

cout.flush();

//terceiro caracter

cout.write(0x0A);

cout.flush();

//mensagem a ser enviada

messageCelular = "

\nWEB

ALARME:"+statusCelular1+"\n"+statusCelular2+"\n"+statusCelular3+"\n"+statusCelul

ar4;

cout.write(messageCelular.getBytes());

cout.flush();

//caracter de final de comando

cout.write(0x1A);

System.out.println("Mensagem

Enviada\n");

cout.flush();

cout.close();

cp.close();

break;

}

}

}

}

System.out.println("Dados Recebidos e Interpretados\n");

//sleep(3000);

spsms.close();

//System.out.println("Recebido Comando Celular\n");

if(PostHandlerAlarme.msgJaEnviou == 1 ){

PostHandlerAlarme.msgJaEnviou = 0;

OutputStream cout;

SerialPort cp;

String messageCelular = "at+cmgs=\""+

PostHandlerAlarme.numeroCelular +"\"";

cp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Thread

Monitoramento", 2000);

cp.setSerialPortParams(2400,

SerialPort.DATABITS_8,

Page 130: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

130

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

cout = cp.getOutputStream();

cout.write(messageCelular.getBytes());

//certifica-se de que enviou

cout.flush();

//segundo caracter

cout.write(0x0D);

cout.flush();

//terceiro caracter

cout.write(0x0A);

cout.flush();

//mensagem a ser enviada

messageCelular = " \nWEB

ALARME:\nAlarme Disparou!";

cout.write(messageCelular.getBytes());

cout.flush();

//caracter de final de comando

cout.write(0x1A);

System.out.println("Mensagem Enviada\n");

cout.flush();

cout.close();

cp.close();

PostHandlerAlarme.msgJaEnviou = 0;

}

if(PostHandlerAlarme.flagRearmado == 1){

OutputStream cout;

SerialPort cp;

System.out.println("Alarme Rearmado\n");

String messageCelular = "at+cmgs=\""+

PostHandlerAlarme.numeroCelular +"\"";

cp = (SerialPort)

CommPortIdentifier.getPortIdentifier(

"serial0").open("Sensor Disparado",

2000);

cp.setSerialPortParams(2400,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

cout = cp.getOutputStream();

cout.write(messageCelular.getBytes());

//certifica-se de que enviou

cout.flush();

//segundo caracter

cout.write(0x0D);

cout.flush();

//terceiro caracter

cout.write(0x0A);

cout.flush();

//mensagem a ser enviada

Page 131: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

131

messageCelular = " \nWEB

ALARME:\nAlarme Rearmado!";

cout.write(messageCelular.getBytes());

cout.flush();

//caracter de final de comando

cout.write(0x1A);

System.out.println("Mensagem Enviada\n");

cout.flush();

cout.close();

cp.close();

PostHandlerAlarme.flagRearmado = 0;

}

if(PostHandlerAlarme.flagStatusCelular == 1)

{

statusCelular = false;

PostHandlerAlarme.flagStatusCelular = 0;

}

}catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

public void setRunning(boolean running){

this.statusCelular = running;

}

}

Page 132: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

132

ANEXO G – ESQUEMA ELÉTRICO COMPLETO DO MÓDULO MONITORAMENTO

DA BATERIA

Page 133: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

133

ANEXO H – ESQUEMA ELÉTRICO COMPLETO DO MÓDULO SENSOR DE

PRESENÇA

Page 134: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

134

ANEXO I – LAYOUT DAS PLACAS FEITAS NO ORCAD

Layout do standby, circuito de monitoramento de nível de bateria e o circuito da sirene.

Layout do circuito de monitoramento de nível de bateria, do LED da tensão da fonte e do LED para

indicar que o módulo está ligado.

Page 135: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

135

Layout do AT89S52 com interface serial e reguladores de tensão do módulo sensor de presença.

Layout do AT89S52 com interface serial e reguladores de tensão do módulo monitoramento

da bateria.

Page 136: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

136

ANEXO J – FOTOS

Módulo monitoramento de bateria.

Módulo sensor de presença.

Page 137: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

137

Módulo Central TINI + Módulo Comunicação Celular + Módulo Monitoramento da Bateria

Módulo Sensor de Presença

Page 138: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

138

ANEXO K – CÓDIGO HTML PÁGINA INICIAL

<html>

<head>

<title>-$= Alarme Monitorado e Controlado pela WEB =$-</title>

<style type="text/css">

<!--

.style1 {font-family: "Courier New", Courier, monospace}

-->

</style>

</head>

<body>

<div align="center"><img src="logoSistemaWEB.gif" width="447" height="109"

alt="Alarme Michel e Jefferson"></div>

<br>

<table width="455" border="1" align="center">

<tr>

<td><table width="445" border="0" align="center">

<tr>

<td colspan="4"><div align="center" class="style1">

<p>Entre com Nome de Usuario e Senha.</p>

<p><br>

</p>

</div></td>

</tr>

<tr><FORM METHOD="POST" ENCTYPE="application/x-www-form-urlencoded"

ACTION="PostHandlerAlarme">

<td width="45"><div align="center" class="style1">

<input type="hidden" name="verificador" value="zero">

</div></td>

<td width="78"><span class="style1">Nome:</span></td>

<td colspan="2"><input type="text" name="Name"></td>

</tr>

<tr>

<td rowspan="2"><div align="center" class="style1"></div></td>

<td><span class="style1">Senha:</span></td>

<td colspan="2"><input type="password" name="Password">

<input type="hidden" name="Index" value="index">

<input type="submit" value="Enviar"></td></FORM>

</tr>

<tr>

<td colspan="2"><div align="center"></div></td>

Page 139: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET …laplima/ensino/tcc/concluidos/1sem2008/alarme.pdf · bateria, pelo standby do sensor, pela sirene e pelo micro controlador AT

139

<td width="249"><span class="style1"> </span></td>

</tr>

</table></td>

</tr>

</table>