Olá pessoal, bom dia!

Instalei um arduino se comunicando por TCP/IP via modulo W5100 e rodando uma aplicação básica de MQTT que faz um "publish" de 30 em 30 segundos enviando um pacote de 8 bytes. Considerando todos os bytes adicionais do próprio protocolo, penso que não pode ultrapassar 50 bytes cada transmissão, o que daria no máximo  6 Kbytes por hora. Ocorre que o relatório da operadora de celular (M2M), está informando os seguintes dados por hora: 127.3 Kbytes de upload e 91.3 Kbytes de download o que totaliza um consumo de  218,6 Kbytes, ou seja mais de 30 vezes o que eu tinha previsto. 

E mais, considerando que a aplicação faz apenas "publish" e não "subscribe", não deveria ter dados de download. Alguém sabe como isso é feito e porque essa diferença tão grande entre o esperado e o realizado?

Agradeço qualquer ajuda, pois esse consumo inviabiliza o projeto.

Apenas como curiosidade, o sketck que eu estou usando é um derivado do anexo.

  

Exibições: 45

Anexos

Responder esta

Respostas a este tópico

Bom dia J2R,

acredito que estes sites  de IOT, principalmente qdo são gratuitos, acessem mais informações que supomos.

Também gasta-se dados durante o processo de estabelecer a comunicação e finaliza-la.

RV

Ola.
  Repare nos leds, veja se piscam fora do periodo em que deveriam piscar.

  Pode ser que a função .loop do mqtt faça alguma transmissão.

  Uma possibilidade seria rodar ela menos vezes, por ex a cada 1s. Mas se o que ele transmite estiver temporizado (algum keepalive) não vai adiantar nada.
  30x é bastante coisa, considerando que tudo vc já calculou com margem. Mas se ele transmite tudo em texto e enfia dentro de um JSON não me assusta.. Pode ser o "Novo normal" para os protocolos moderninhos.

  Para visualizar os dados vc pode usar um programa como o wireshark. Eu já usei ele no passado com sucesso mas é preciso ter um hub ethernet. Os que usamos atualmente fazem uma otimização, são verdadeiro switchs, enviando os pacotes apenas para a porta destino do switch (exceto os broadcast). Antigamente exitiam produtos que eram verdadeiros hubs. 

Ref:
https://blog.udemy.com/hub-vs-switch/?utm_source=adwords&utm_me...

https://www.wireshark.org/

Lista de hubs verdadeiros:
https://wiki.wireshark.org/HubReference Tem usado pra vender no ML.

Vc tb pode usar a função para isso de alguns roteadores como os Microtik

Eduardo,

Pode ser esse loop do mqtt. Ele está sendo executada dentro do void loop() do arduino, então ela tá fazendo muitas vezes por segundo. Veja só:

void loop() {
  mqtt.loop();
  if (TstBit(PORTD, FLAG_2)){transmite();}
}

Ela só faz isso e starta a transmissão a cada 30 segundos. Esse start e controlado pelo timer. 

Vou tentar substituir essa função por alguma coisa que só execute quando for transmitir. depois eu posto o resultado.

Obrigado pela ajuda.

Zé Roberto

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2020   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço