Monitor Estatístico do Avise Já (www.aviseja.com.br)

 

 

 

Segue um exemplo de projeto bem simples do Arduino consumindo uma URL do site Avise Já (Avise Já) que tem como retorno um conteúdo JSON com informações estatísticas do site. O dispositivo irá exibir esses dados em um LCD de 16x2 segmentos e também emitirá um sinal visual e sonoro sempre que um novo usuário se cadastrar no site. O Avise Já é um projeto de rastreamento de pacotes desenvolvido por mim, totalmente gratuito e integrado aos Correios do Brasil e USPS dos Estados Unidos. Além do Avise Já te notificar por email e feeds de RSS sobre as mudanças de status dos seus pacotes, também te notifica, gratuitamente, por SMS. Espero que vocês gostem do serviço e que façam os seus monitores piscarem bastante rs. 

 

Imagem do Projeto Final

 

 

 

Materiais e Bibliotecas Necessárias

 

 

Para este exemplo, utilizarei 1 Arduino Duemilanove, 1 Shield Ethernet (W5100), 1 LCD de 16x2 segmentos, 1 interface serial IIC/I2C/TWI/SPI (neste exemplo usei o IC2), 1 LED de alto brilho azul e 1 buzzer piezo elétrico. A versão da IDE utilizada para desenvolvimento do código  foi a 1.0.4 (aconselho utiliza-la neste exemplo, por já ter correções na biblioteca ethernet nativa), biblioteca aJSON (https://github.com/interactive-matter/aJson), biblioteca LiquidCrystal IC2 (https://s3.amazonaws.com/others-images/LiquidCrystal_I2C.tar.gz).

 

 

Breve introdução do aJSON

 

O aJSON (que pode ser baixado aqui) será a nossa biblioteca responsável por realizar o parse JSON para objeto C++, ou seja, é ele que tratará o retorno do servidor em notação JSON e o transformará em conteúdo útil, "tipado" e pronto para ser usado nos domínios da nossa aplicação. A biblioteca é bem fácil de ser utilizada e ajuda bastante no desenvolvimento do projeto. Vou explicar rapidamente o básico para utilizar a lib:

 

Para instanciar o objeto pai 

 

aJsonObject* objetoPai = aJson.parse(string_json);

 

Sendo a string_json todo o conteúdo entre "{ }" que retornou do servidor. Segue um exemplo do retorno da URL json.aviseja.com.br Ex:

 

{"adesaoDia":2,"totalAdesao":592,"totalSolicitacoes":2010}

 

 

O objeto pai, assume o topo da cadeia hierárquica no conteúdo JSON e é a partir deste objeto que extrairemos seus atributos ou o objeto relacionados a ele. No caso do conteúdo citado acima, temos apenas 1 nó, que é o objeto pai (objetoPai) que possui os atributos (adesaoDia, totalAdesao e totalSolicitacoes). Para capturar esses atributos utilizamos a seguinte notação:

 

aJsonObject* totalUsuariosDia = aJson.getObjectItem(objetoPai, "adesaoDia");
aJsonObject* totalUsuarios = aJson.getObjectItem(objetoPai, "totalAdesao");
aJsonObject* totalSolicitacoes = aJson.getObjectItem(objetoPai, "totalSolicitacoes");

 

A variável totalUsuariosDia contém o total de usuários cadastrados e autenticados no Avise Já no dia corrente. A Variável totalUsuarios contém o total de usuários cadastrados e autenticados no Avise Já. E por fim, a variável totalSolicitacoes, contém o total de solicitações (códigos de rastreio) cadastrados no Avise Já. Essas três variáveis contém dados primitivos do tipo inteiro e podem ser capturados da seguinte forma:

 

int valor = adesaodia->valueint;

 

E por fim, após a utilização do objeto, devemos deletar o mesmo para aliviar memória. Para isso, utilizamos a seguinte notação

 

aJson.deleteItem(objetoPai);

 

Bacana, não é?

 

Firmware para download

 

https://bitbucket.org/victoraldir/ajson-aviseja

 

 

Dúvidas ou correções?

Caso tenham dúvidas, sugestões ou correções, mandem uma mensagem aqui pelo campo de comentários, reponderei assim que puder.

 

 

Saudações!

Victor Hugo Aldir

Exibições: 12840

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Rodrigo Accorsi em 19 dezembro 2014 às 10:33

Bom dia Pessoal, Vitor, sabe se o json do avise-já ainda está no ar? 

Obrigado!

Comentário de daniel alves em 5 setembro 2013 às 15:14
Boa tarde Vitor,
qual o servico SMS vc usa? Clicktell?
Abs e Parabens
Comentário de Rodrigo Azevedo de Medeiros em 22 maio 2013 às 21:44

Victor, ao responder que os SMS's são enviados por outra empresa respondeu tudo... Hehe.

De início achei que você tivesse um "cliente" Arduino em casa para enviar essas mensagens SMSs por Shields GPRS/GSM. Quando perguntei "Como o Arduino fica "consumindo" os dados do servidor pra notificar os clientes" foi justamente por achar que você tinha esse cliente em casa e ficava "consumindo" uma consulta do servidor "local" ou na nuvem. Mais uma vez " Qual é a arquitetura que você usa pra enviar um SMS de confirmação de contafoi por achar que o SMS era um serviço seu também, possivelmente provido por Arduino. A conta a qual me refiro é a conta de confirmação de número de celular.

Abraço, Cara.

Comentário de Victor Hugo em 22 maio 2013 às 13:02

Olá  Rodrigo Azevedo de Medeiros!

Obrigado pelo comentário!

Respondendo as suas perguntas:

Esse serviço SMS é feito pelo Arduino também, certo?

Não, o gateway de SMS é fornecido por um patrocinador do Avise Já. Eu não mantenho a infra de SMS, só consumo o serviço que me é oferecido.

O teu servidor Web é em casa?

 

Não, o Avise Já usa o AWS da Amazon. O servidor JSON que retorna os dados estatísticos do site  está em uma instância no Heroku.

Como o Arduino fica "consumindo" os dados do servidor pra notificar os clientes?

O Arduino não notifica os meus clientes, fiz apenas um monitor que decodifica e exibe no LCD o conteúdo desta URL (json.aviseja.com.br)

 Qual é a arquitetura que você usa pra enviar um SMS de confirmação de conta?

Essa eu não entendi muito bem rs. A que conta você se refere?

Abraço!

Comentário de Rodrigo Azevedo de Medeiros em 21 maio 2013 às 23:32

Seu projeto é espetacular. [2]

Victor, também sou desenvolver Web e curioso no mundo do Arduino. Tu poderia me tirar uma dúvida? Esse serviço SMS é feito pelo Arduino também, certo? O teu servidor Web é em casa? Como o Arduino fica "consumindo" os dados do servidor pra notificar os clientes? Qual é a arquitetura que você usa pra enviar um SMS de confirmação de conta?


No mais, parabéns. :)

Comentário de Almir Bispo dos S.Filho em 20 maio 2013 às 11:10

Seu projeto é espetacular.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço