Broker MQTT com Raspberry PI Zero W 7

A Raspberry PI Zero W é uma placa e tanto! Já vimos aqui no blog uma série de projetos com ela, como robô que utiliza visão computacional, campainha IoT, streaming de vídeo e por aí vai. Mas esta placa pode ir além, podendo ser aplicada tranquilamente como servidores caseiros de pequeno porte. Isto leva a vantagens muito interessantes, como ter uma solução simples (de uma só placa), compacta (devido ao pequeno tamanho físico da placa) e móvel na sua casa (já que possui conectividade WI-FI à rede). É justamente nesse ponto que este artigo irá tocar: como transformar uma Raspberry PI Zero W em um pequeno servidor caseiro, no caso um broker MQTT (Mosquitto). Além disso, conectaremos nesse broker MQTT com Raspberry Pi o projeto da Planta IoT, outro projeto aqui do blog.

Material necessário

Para seguir este artigo, você precisará de:

IMPORTANTE: antes de partir para as instruções deste post, tenha certeza que a sua Raspberry PI Zero W está totalmente operacional (com cartão SD, com Raspbian instalado e conectividade à Internet operante). Se tem dúvidas de como fazer isso, sugiro fortemente a ler o nosso post sobre os primeiros passos com a Raspberruy PI e Linux.

Lembramos também que apesar deste projeto usar a Raspberry Pi Zero W, para montar o seu projeto de Broker MQTT com Raspberry Pi você pode usar qualquer uma das outras placas da linha Raspberry, ok?

Broker MQTT – o que é?

Conforme dito neste artigo do blog, o broker funciona como servidor em uma comunicação MQTT. Ou seja, ele é o responsável por enviar e receber mensagens dos clientes MQTT e gerenciar suas conexões. Em outras palavras, ele compõe a “central de comunicação” MQTT. Observe a figura 1.

Broker MQTT com Raspberry Pi Zero W
Figura 1 – diagrama de uma comunicação MQTT

Pelo fato do protocolo MQTT ter baixo uso de banda e um Broker não exigir muito processamento e memória do sistema que o roda, a Raspberry PI Zero W é uma ótima opção para isso.
Neste post, será utilizado um broker MQTT chamado Mosquitto, um broker MQTT open-source da comunidade open-source Eclipse.

Instalação do Broker MQTT Mosquitto na Raspberry PI Zero W

Antes de tudo, é uma boa ideia fazer update dos repositórios do seu gerenciador de pacotes e upgrade dos seus pacotes já instalados. Para isso, execute os comandos abaixo:

sudo apt-get update
sudo apt-get upgrade

Feito isso, o broker MQTT Mosquitto pode ser instalado na sua Raspberry PI Zero W com o comando abaixo:

sudo apt-get install mosquitto

Ao término da instalação, o broker MQTT Mosquitto já está instalado e rodando como um serviço Linux!

Configuração de um hostname para a Raspberry PI Zero W

Agora será feito algo muito útil para o uso e testes com o broker MQTT que roda na Raspberry: a configuração de um hostname para a Raspberry PI Zero W.
Grosso modo, o hostname serve para podermos nos conectar de forma mais intuitiva à Raspberry PI Zero W, utilizando na conexão o hostname ao invés do IP. Como o IP pode ser dinâmico (DHCP), configurar um hostname não é só cômodo como também é produtivo. Para isso, siga o passo-a-passo abaixo:

  1. No terminal Linux / console, acesse o programa de configuração da Raspberry PI Zero W com o seguinte comando:
    sudo raspi-config
  2. No programa de configuração, busque pela configuração hostname e acesse-a.
  3. Nela, configure um nome amigável como hostname. Não pode haver espaços nem caracteres especiais (ou seja, somente letras e números são permitidos).
    Como sugestão, coloque o nome rasppizerow.
  4. Vá até a opção “Ok” e depois em “Finish”.
  5. Será solicitado que a Raspberry PI Zero W seja reiniciada. Clique em Ok e aguarde que a Raspberry PI Zero W complete o processo de reboot.

Após o reboot da Raspberry PI Zero W, do seu computador (que deve estar na mesma rede que a Raspberry PI Zero W) faça um ping em NOME_QUE_VOCE_CONFIGUROU_NO_HOSTNAME.local (onde NOME_QUE_VOCE_CONFIGUROU_NO_HOSTNAME será , se você seguiu minha sugestão de nome, rasppizerow). Você notará que o ping terá resposta, significando que o hostname foi configurado com sucesso.

Teste do broker MQTT com Raspberry Pi

Uma vez configurado um hostname para a Raspberry PI Zero W, podemos prosseguir para o teste do broker MQTT com Raspberry PI Zero W. Para testa-lo, utilize um computador ou smartphone que esteja na mesma rede que sua Raspberry PI e instale um client MQTT (para computadores, sugiro o MQTTLens e, para smartphones Android, sugiro o aplicativo MyMQTT).

No cliente MQTT de sua escolha, coloque como endereço do broker rasppizerow.local e como porta o valor 1883. Feito isso, você notará que o client MQTT se conectou ao broker que está rodando na sua Raspberry PI Zero W, comprovando portanto seu funcionamento. Como teste adicional, ainda usando o cliente MQTT, publique e faça subscribe em um mesmo tópico e verifique que o publish e subscribe ocorrem sem problemas. Observe a figura 2.

Figura 2 - broker local na Raspberry PI Zero W em operação
Figura 2 – broker local na Raspberry PI Zero W em operação

Com isso, seu broker MQTT local está pronto para uso!

Utilizando o projeto da Planta IoT neste broker

Visando mostrar uma das várias possibilidades de uso deste broker MQTT local, o projeto da Planta IoT será aqui integrado. Tal projeto é dividido em quatro partes / posts, sendo o terceiro post o qual se faz uso de MQTT (para acessar este post, clique aqui). As mensagens MQTT neste projeto sevem para transmitir, de forma periódica (com tempo definido no código-fonte), a umidade do solo medida.

Portanto, ao invés da informação da umidade de solo ser publicada a nível global (utilizando um broker MQTT publico na nuvem, como é feito no projeto original), tal informação será publicada no seu broker MQTT local. Desse modo, somente quem estiver na mesma rede do broker MQTT e se subescrever ao tópico correto conseguirá tal informação. Embora possa parecer retrógrado utilizar um broker MQTT local, esta é uma estratégia muito interessante que pode ser aplicada em sensoriamento em uma empresa, garantindo assim maior proteção de dados importantes / medições importantes e também aumento na velocidade de comunicação, já que tudo estará em rede local nesta arquitetura proposta.

Para fazer com que o projeto da Planta IoT envie/publique a informação de umidade do solo medida no seu broker MQTT local, basta trocar seguinte linha do código (linha 41):

const char* BROKER_MQTT = "iot.eclipse.org"; //URL do broker MQTT que se deseja utilizar

Pela linha mostrada abaixo:

const char* BROKER_MQTT = "rasppizerow.local"; //URL do broker MQTT que se deseja utilizar

Agora, se seu computador e/ou smartphone estiver na mesma rede que seu broker MQTT local, você poderá utilizar um cliente MQTT qualquer para ver as informações de umidade de solo publicadas localmente. Na figura 3 é mostrado o resultado utilizando o cliente MQTT MyMQTT (em um smartphone Android).

Figura 3 - cliente MQTT MyMQTT mostrando as informações enviadas pelo projeto da Planta IoT
Figura 3 – cliente MQTT MyMQTT mostrando as informações enviadas pelo projeto da Planta IoT

 Usos adicionais de um broker MQTT local

Conforme comentado neste post, o uso de um broker MQTT com Raspberry Pi na sua rede local pode trazer vantagens interessantes, sobretudo a uma empresa, já que assim garante-se assim maior proteção de dados importantes e  aumento na velocidade de comunicação. Logo, o uso deste tipo de broker pode ser justificado, principalmente, por aumento na segurança. Sendo assim, segue abaixo algumas sugestões de uso de um broker MQTT local:

  • Central de comunicação em um sistema de automação residencial
  • Central de comunicação de sensoriamento em uma empresa
  • Central de comunicação em sistemas de automação comercial

Além disso, você não contará com limitações de mensagens publicadas por segundo que podem estar presentes em brokers MQTT públicos / na nuvem. Isso pode ser uma grande vantagem se seu projeto exigir grande quantidade de mensagens trocadas em pouco tempo (como sensoriamento de eventos muito rápidos, por exemplo).

Gostou deste post sobre Broker MQTT com Raspberry Pi Zero W? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

7 Comentários

  1. Estou com problemas para instalar o mosquitto… ele meu rasp não consegue localizar 🙁 oque posso fazer?

    1. Allan, bom dia.

      Você poderia colar o erro aqui por favor? A partir da(s) mensagem /mensagens de erro(s) posso te ajudar melhor.

      Atenciosamente,
      Pedro Bertoleti

      1. Desculpe a demora não tive tempo para mexer no meu rasp depois, estava comum erro de leitura no cartão e o mesmo não conseguia atualizar o pi0w
        ERRO ISO 3166, mas agora com um pouco de calma consegui fazer funcionar e logo mais testarei o MQTT nele. e passo o feedback

  2. Olá, eu recebi minha Raspberry Pi Zero W e já consegui rodar o broker mqtt. Estou refletindo se seria muito complicado fazer a mesma coisa, mas utilizando o Bluetooth. Não tenho experiência com a Raspberry, já consegui usar o Bluetooth dela, mas não tenho certeza se seria possível fazer um Broker MQTT utilizando Bluetooth. Acredito que sim, mas não achei nada na internet ainda nesse sentido. Alguém tem alguma ideia? Seria muito útil para um projeto da faculdade.

    Obrigada!!!

    1. Alessandra, boa noite.

      No seu caso, recomendo que se informe sobre o MQTT-SN, uma variante do protocolo MQTT para redes sensoriais que funciona sob diversas camadas de transporte, incluindo Bluetooth. Recomendo a leitura deste artigo sobre o assunto: https://www.embarcados.com.br/mqtt-sn-mqtt-para-rede-de-sensores/

      Atenciosamente,
      Pedro Bertoleti

  3. Muito Bom.
    Aproveito para agradecer a generosidade do compartilhamento.

    1. Olá Ari!

      Ficamos muito felizes em saber que nosso trabalho realmente ajuda as pessoas. O Pedro realmente tem posts muito legais!

      Você já viu o nosso fórum? É um espaço aberto onde todos podem colaborar. Lá você pode postar seus projetos, tirar suas dúvidas, ajudar outras pessoas e contribuir para a comunidade 🙂

      https://www.filipeflop.com/forum/

      Abraços!

      André – Equipe FilipeFlop