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
Comentar
Bom dia Pessoal, Vitor, sabe se o json do avise-já ainda está no ar?
Obrigado!
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 conta" foi 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.
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!
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. :)
Seu projeto é espetacular.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)