Preciso usar MQTT ou HTTP?

9

Estou trabalhando em um dispositivo que detecta e coleta informações do ambiente, como temperatura, umidade etc.

O dispositivo não está conectado a nenhuma fonte de energia, mas possui uma bateria e um painel solar para carregá-lo.

Está quase em um estado de sono profundo na maioria das vezes, e só é ativado quando é necessário detectar e transferir dados. Esta operação leva cerca de 1-2 minutos e depois entra no modo de suspensão novamente.

Não sou especialista nesta área, mas acho que o MQTT deve ser uma boa opção se o dispositivo precisar estar acessível para receber mensagens de um tópico o tempo todo, mas, no meu cenário, ele apenas lê sensores e envia dados para um servidor periodicamente.

Atualmente, estou enviando os dados por HTTP, mas estou pensando se faz sentido implementar o MQTT? Devo ter alguma vantagem sobre HTTP para este cenário?

zephrax
fonte
11
É semelhante, mas meu objetivo é entender se preciso implementar o MQTT no meu cenário: quando meu dispositivo estará em suspensão profunda 99% do tempo e apenas acordando para enviar leituras.
Zephrax 19/05
11
Eu também não sugeriria. Primeiro, escreva seus requisitos e implemente o protocolo mais simplista. Não faria sentido usar um Ferrari Engine em um cortador de grama para cortar grama. Não seja pego de surpresa pelas coisas - basta fazer sua pesquisa básica e implementar o que funciona melhor.
Xofo 19/05/19
Seria bom capturar o requisito no título da pergunta. Genericamente, você está perguntando sobre valores pequenos e pouco frequentes do sensor, eu acho.
Sean Houlihane
@Xofo Gostaria de ver uma resposta sobre isso e por que você pode sugerir o uso de um protocolo personalizado. Vale a pena o esforço adicional de 'rodar sozinho', além dos problemas de segurança etc.?
Aurora0001
Não é um protocolo personalizado ... Eu disse primeiro defina os requisitos. Alguns dos protocolos prescritos geralmente são muito pesados.
Xofo

Respostas:

8

Se você estiver armazenando dados, basta manter o HTTP. HTTP é apenas um sinal de sentido único.

Se o seu servidor ou qualquer outra "coisa" reagir a um sinal específico (baixa temperatura, ...), use o MQTT. Assim, muitos dispositivos podem assinar o seu sinal de temperatura e reagir imediatamente sem usar o servidor.

Goufalite
fonte
11
Também existe uma divisão entre grande quantidade (http) e pequena (mqtt) de dados de uma só vez e também mqtt é mais confiável em más condições de sinal.
Mico
11
O servidor recebe apenas dados dos sensores. O ponto da minha postagem é que não tenho certeza se faz sentido usar o MQTT, porque o dispositivo ficará 99% do tempo em estado de sono profundo (todos os barramentos, modem, sensores desligados) e apenas acorda para ler sensores e enviar dados.
Zephrax
Se você armazenar seus dados em algum lugar, isso significa que você tem um banco de dados e uma maneira de back-end para consultá-los (servidor apache, linha de comando SQL, ...). Se você colocar um MQTT em cima disso, terá outra instância e porta para gerenciar.
Goufalite
11
Eu concordo com esta resposta. Se você não precisar de comunicação bidirecional e o dispositivo estiver adormecido a maior parte do tempo, o HTTP é uma opção de protocolo simples e adequada.
TheMagicCow
8

Como você menciona um painel solar e uma bateria como parte do dispositivo, provavelmente deseja minimizar o uso de energia durante as transmissões para garantir que o dispositivo não fique completamente sem energia.

Portanto, você pode querer considerar Coap , o Co nstrained A APLICAÇÃO P rotocolo, que é projetado especificamente para dispositivos com restrições na Internet das Coisas.

No artigo Comparando a relação custo-benefício do CoAP e HTTP nos aplicativos Web of Things , você pode encontrar algumas evidências bastante convincentes de que o CoAP pode obter algumas economias de energia aqui. No Apêndice A (página 38), você pode dar uma olhada na duração esperada da bateria dos dispositivos na Tabela A.4. Por um intervalo de tempo de 120 segundos, como você espera no seu caso de uso:

t bat (HTTP), dias - 2013

t bat (CoAP), dias - 11013

Esses cálculos foram executados em um par de baterias AA de carbono-zinco, mas você pode ver claramente que o CoAP consome muito menos energia, portanto vale a pena considerar. Seu 'modo push', conforme descrito no artigo, parece exatamente o tipo de coisa que você planeja fazer.

Embora você não tenha perguntado especificamente sobre o CoAP, acho que vale a pena mencionar, pois o Goufalite já cobriu as diferenças essenciais entre o MQTT e o HTTP. Uma boa regra geral é: você planeja se comunicar individualmente ou um para muitos ? Se for o primeiro, HTTP e CoAP parecerão melhores ajustes. Se for o último, o MQTT provavelmente é mais conveniente.

Aurora0001
fonte