Comunicação local e distante do MQTT


7

No meu projeto, tenho um conjunto de sensores em uma rede local que deve se comunicar com um Raspberry Pi 3 e depois com um corretor MQTT distante.

Como estou usando o ESP8266 para os nós dos sensores, pensei em tornar os clientes MQTT dos nós esp que se comunicam com o broker diretamente através da conexão à Internet do pi. Mas preciso que o pi tenha acesso aos dados dos sensores dos nós locais, bem como aos dados dos sensores vinculados a ele.

Então, eu gostaria da melhor solução para implementar essa comunicação. Pensei em adicionar um broker ao Pi que seria ponte para o broker distante, bem como publicar mensagens MQTT em um programa python em execução no Raspberry.

  1. Existe uma maneira de evitar colocar outro corretor no Pi?

  2. Existe uma solução melhor para fazer isso?

  3. O broker consumirá muita memória?

Sabendo que talvez seja necessário transmitir dados de quadros da câmera também.

Respostas:


7

Um corretor como o mosquito funcionará alegremente no Pi e fará a ponte para um corretor remoto.

A quantidade de recursos consumidos depende inteiramente da quantidade de tráfego que você envia através dele e se você terminar na fila de grandes quantidades de mensagens retidas. Na maioria das circunstâncias, é bastante baixo (a menos que você esteja planejando transmitir vídeo via MQTT).

Mas essa solução tem o benefício de que, se o link para o broker remoto diminuir, tudo continuará funcionando localmente.

Brokers em camadas como este são um dos casos de uso específicos que o MQTT foi projetado para lidar.


2

Você pode configurar algo como o Node-RED que coletaria as cargas úteis dos sensores do ESP8266, girar e enviar as mesmas cargas úteis usando um tópico diferente. Eu mesmo faço isso na minha configuração de automação residencial. Tenho algumas leituras temporárias que vêm a cada três segundos em um tópico, mas eu precisava reduzi-las para uma vez por minuto e enviá-las novamente usando um tópico diferente. Ambos os conjuntos de mensagens usam o mesmo Broker.

Portanto, no seu caso, use o Raspberry Pi como o broker local do MQTT com seu próprio conjunto de tópicos, faça com que o Node-RED capture os pacotes que precisam ser enviados e use um conjunto diferente de tópicos para enviá-los. Eu tenho um servidor Docker que executa um contêiner do broker Mosquitto e um contêiner Node-RED, além de outros dois contêineres que usam os dados convertidos em Node-RED. Funciona como um campeão.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.