Suponga que hay numerosos sensores débiles (por ejemplo, dispositivos de nivel Arduino) que dependen de BLE como medio de comunicación y que estos dispositivos están conectados a una puerta de enlace más potente (por ejemplo, dispositivos de nivel Raspberry pi).
Me gustaría saber si MQTT se considera un protocolo apropiado para transmitir sus lecturas (mensajes cortos y frecuentes).
Varios blogs / documentos consideran que MQTT es apropiado para "aplicaciones IoT" porque es más ligero en comparación con HTTP y conserva energía. Sin embargo, a mi entender, requiere que se mantenga abierta una conexión, que no es el caso con BLE u otros protocolos de comunicación apropiados para IoT. BLE no mantiene la conexión abierta durante períodos prolongados de tiempo para reservar energía. Aparentemente, MQTT es apropiado cuando se usa un protocolo de capa MAC como WiFi. Esto casi rompe la lógica detrás del uso de MQTT en primer lugar (es decir, si el dispositivo maneja de manera computacional un protocolo como WiFi, entonces podría no necesitar un protocolo como MQTT). ¿Ves un defecto en esta lógica?
¿Existe algún protocolo alternativo de capa de aplicación para ese propósito? ¿Cuál es la estructura más frecuente de este tipo de mensajes (por ejemplo, datos binarios sin procesar, JSON, XML) cuando se comunican con una puerta de enlace y cuando se comunican directamente con un servidor?
fuente
Respuestas:
MQTT tiene que ejecutarse a través de TCP / IP (no recuerdo si realmente está en la especificación o si se hacen suficientes suposiciones para hacerlo), pero su protocolo hermano MQTT-SN se puede ejecutar en casi cualquier protocolo que pueda pasar datos , He visto implementaciones en UDP y en serie.
Habiendo dicho que no estoy seguro de lo que gana al ejecutar BLE, las características integradas de BLE ofrecen el mismo beneficio (aunque solo de 1 a 1) con cosas como notificación.
Creo que una de las cosas importantes para recordar es lo que significa "I" en IoT, implica acceso a Internet en algún momento (incluso si es un dispositivo de puerta de enlace o un teléfono). En ese punto, MQTT puede ser muy útil, pero no necesariamente significa todo el camino hasta el borde (sangrante).
fuente
Podría decirse que sería mejor hacer un mapeo simple de los datos de los paradigmas BLE a MQTT, en lugar de intentar enviar literalmente MQTT sobre BLE.
BLE generalmente intercambia datos en forma de características . Estos tienen varios mecanismos únicos de BLE para descubrir el cambio de valor que puede serle útil. Pero tienen una longitud máxima de datos de 20 bytes .
Es posible transmitir datos en serie a través de BLE, moviendo 20 bytes a la vez. Esto a veces se hace para implementar un puerto serie virtual, y podría hacer un túnel MQTT completo a través de esto.
Pero probablemente sea mejor usar una colección de características BLE para transportar los datos de diferentes temas, y tener un puente que asigne la identidad característica a un tema MQTT y asigne el valor a la carga útil de MQTT.
BLE tiene su propio sentido de sesiones conectadas continuas frente a sesiones no conectadas. Probablemente debería averiguar qué uso de BLE es mejor para su aplicación y luego asignarlo al sentido MQTT de mantener una conexión.
Debería poder hacer esto en una o ambas direcciones: BLE-> MQTT y MQTT-> BLE
fuente