Comunicación local y distante MQTT


7

En mi proyecto, tengo un conjunto de sensores en una red local que debería comunicarse con un Raspberry Pi 3 y luego con un agente MQTT distante.

Como estoy usando ESP8266 para los nodos sensores, pensé que haría que los nodos esp sean clientes MQTT que se comuniquen con el intermediario directamente a través de la conexión a internet del pi. Pero necesito que el pi tenga acceso a los datos de los sensores de los nodos locales, así como a los datos de los sensores vinculados a ellos.

Por lo tanto, me gustaría la mejor solución para implementar dicha comunicación. Pensé en agregar un intermediario al Pi que se uniría al intermediario distante, así como publicar mensajes MQTT en un programa de Python que se ejecuta en la Frambuesa.

  1. ¿Hay alguna manera de evitar poner otro corredor en el Pi?

  2. ¿Hay una mejor solución para hacer esto?

  3. ¿El corredor consumirá demasiada memoria?

Sabiendo que es posible que también necesite transmitir datos del cuadro de la cámara.

Respuestas:


7

Un corredor como mosquitto correrá felizmente en el Pi y se unirá a un corredor remoto.

La cantidad de recursos que consumirá depende completamente de la cantidad de tráfico que envíe a través de él y si termina poniendo en cola grandes cantidades de mensajes retenidos. En la mayoría de los casos, es bastante bajo (a menos que esté planeando transmitir video a través de MQTT).

Pero esta solución tiene el beneficio de que si el enlace con el agente remoto deja de funcionar, todo continuará funcionando localmente.

Corredores en capas como este es uno de los casos de uso específicos que MQTT fue diseñado para manejar.


2

Podrías configurar algo como Node-RED que recolectaría las cargas de los sensores ESP8266, y darte la vuelta y enviar las mismas cargas usando un tema diferente. Lo hago yo mismo en mi configuración de automatización del hogar. Tengo una lectura temporal que aparece cada tres segundos sobre un tema, pero necesitaba reducirlos a una vez por minuto y enviarlos de regreso usando un tema diferente. Ambos conjuntos de mensajes usan el mismo Broker.

Entonces, en su caso, use Raspberry Pi como el agente local MQTT con su propio conjunto de temas, haga que Node-RED capture los paquetes que deben enviarse y use un conjunto diferente de temas para enviarlos. Tengo un servidor Docker que ejecuta un contenedor de intermediario Mosquitto y un contenedor Node-RED, así como otros dos contenedores que utilizan los datos convertidos Node-RED. Funciona como un campeón.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.