¿Necesito usar MQTT o HTTP?

9

Estoy trabajando en un dispositivo que detecta y recopila información del entorno, como la temperatura, la humedad, etc.

El dispositivo no está conectado a ninguna fuente de alimentación, pero tiene una batería y un panel solar para cargarlo.

Está casi en un estado de sueño profundo la mayor parte del tiempo, y solo se despierta cuando necesita detectar y transferir datos. Esta operación dura aproximadamente 1-2 minutos, y luego se va a dormir nuevamente.

No soy un experto en esta área, pero creo que MQTT debería ser una buena opción si el dispositivo necesita ser accesible para recibir mensajes de un tema todo el tiempo, pero en mi escenario solo lee sensores y envía datos a un servidor periódicamente.

Actualmente estoy enviando los datos a través de HTTP, pero me pregunto si tiene sentido implementar MQTT. ¿Debo obtener alguna ventaja sobre HTTP para este escenario?

zephrax
fuente
1
Es similar, pero mi punto es entender si necesito implementar MQTT en mi escenario: cuándo mi dispositivo estará en reposo el 99% del tiempo, y solo despertaré para enviar lecturas.
zephrax
1
Yo sugeriría que ninguno. En primer lugar, escriba sus requisitos e implemente el protocolo más simplista. No tendría sentido usar un motor Ferrari en una cortadora de césped para cortar el césped. No se deje atrapar por la palabrería de las cosas: solo haga su investigación básica e implemente lo que funciona mejor.
Xofo
Sería bueno capturar el requisito en el título de la pregunta. Genéricamente, está preguntando acerca de valores de sensores pequeños e infrecuentes, creo.
Sean Houlihane
@ Xofo Me interesaría ver una respuesta al respecto, y por qué podría sugerir el uso de un protocolo personalizado. ¿Vale la pena el esfuerzo adicional de 'rodar el suyo', además de los problemas de seguridad, etc.?
Aurora0001
No es un protocolo personalizado ... Dije primero definir los requisitos. Algunos de los protocolos prescritos suelen ser demasiado pesados.
Xofo

Respuestas:

8

Si está almacenando datos, simplemente siga con HTTP. HTTP es solo una señal unidireccional.

Si su servidor o cualquier otra "cosa" debe reaccionar a una señal específica (baja temperatura, ...), utilice MQTT. De esta manera, muchos dispositivos pueden suscribirse a su señal de temperatura y reaccionar inmediatamente sin usar su servidor.

Goufalite
fuente
1
También hay una división entre grandes (http) y pequeñas (mqtt) cantidad de datos a la vez y también mqtt es más confiable en condiciones de mala señal.
mico
1
El servidor solo recibe datos de los sensores. El punto de mi publicación es que no estoy seguro de si tiene sentido usar MQTT, porque el dispositivo estará el 99% del tiempo en estado de suspensión profunda (todos los autobuses, módems, sensores apagados) y solo se despierta para leer sensores y enviar datos.
zephrax
Si almacena sus datos en algún lugar, esto significa que tiene una base de datos y una forma de backend para consultarlos (servidor apache, línea de comando SQL, ...). Si coloca un MQTT encima de esto, tendrá otra instancia y puerto para administrar.
Goufalite
1
Estoy de acuerdo con esta respuesta Si no necesita comunicación bidireccional y el dispositivo está dormido la mayor parte del tiempo, HTTP es una opción de protocolo simple y adecuada.
TheMagicCow
8

Usted menciona un panel solar y una batería como parte del dispositivo, por lo que probablemente desee minimizar el uso de energía durante las transmisiones para asegurarse de que su dispositivo no se quede sin energía por completo.

Por lo tanto, es posible que desee considerar la COAP , el Co nstrained A plicación P rotocolo, que está diseñado específicamente para dispositivos con restricciones en la Internet de las cosas.

En el documento Comparando la rentabilidad de CoAP y HTTP en aplicaciones Web of Things , puede encontrar evidencia bastante convincente de que CoAP podría obtener algunos ahorros de energía aquí. En el Apéndice A (página 38), puede ver la vida útil esperada de la batería de los dispositivos en la Tabla A.4. Por un intervalo de tiempo de 120 segundos, como espera en su caso de uso:

t bat (HTTP), días - 2013

t bat (CoAP), días - 11013

Esos cálculos se realizaron con un par de baterías AA de carbono-zinc, pero puede ver claramente que CoAP usa mucha menos energía, por lo que vale la pena considerarlo. Su 'modo push', como se describe en el documento, parece exactamente el tipo de cosas que planeas hacer.

Aunque no preguntó específicamente sobre CoAP, creo que vale la pena mencionarlo, ya que Goufalite ya ha cubierto las diferencias esenciales entre MQTT y HTTP. Una buena regla general es: ¿planea comunicarse uno a uno o uno a muchos ? Si es lo primero, HTTP y CoAP parecen encajar mejor. Si es lo último, MQTT es probablemente más conveniente.

Aurora0001
fuente