Configurando um Broker MQTT para Comunicação com o ESP32
Marcelo V. Souza
854ms 283us
A comunicação eficiente entre dispositivos é fundamental no mundo da Internet das Coisas (IoT). O protocolo MQTT (Message Queuing Telemetry Transport) é uma escolha popular por sua leveza e eficiência. Neste artigo, vamos explorar em profundidade como configurar um broker MQTT para estabelecer comunicação com o ESP32, permitindo que você crie aplicações IoT robustas e escaláveis.
O que é um Broker MQTT?🔗
Antes de mergulharmos na configuração, é importante entender o papel do broker MQTT. O broker é o intermediário central em uma rede MQTT. Ele recebe mensagens de dispositivos publicadores e as encaminha para dispositivos assinantes interessados naquele tópico específico. Isso permite uma comunicação desacoplada e eficiente entre diversos dispositivos.
O ESP32 é um microcontrolador potente e versátil, capaz de conectar-se a redes Wi-Fi e Bluetooth. Ao combinar o ESP32 com o protocolo MQTT, você habilita a comunicação em tempo real entre dispositivos, sensores e aplicativos. Usar um broker MQTT facilita a escalabilidade do seu sistema, permitindo que novos dispositivos sejam adicionados sem alterações significativas na infraestrutura.
Escolhendo um Broker MQTT🔗
Existem várias opções de brokers MQTT disponíveis, tanto para uso local quanto em nuvem. Alguns dos brokers mais populares incluem:
- Mosquitto: Um broker MQTT de código aberto, leve e adequado para dispositivos embarcados.
- EMQX: Oferece alta performance e suporte a clusterização.
- HiveMQ: Focado em soluções empresariais com alta disponibilidade.
- CloudMQTT: Uma opção baseada em nuvem, ideal para quem não deseja hospedar o broker localmente.
Para fins deste guia, utilizaremos o Mosquitto devido à sua simplicidade e facilidade de configuração.
Pré-requisitos🔗
Antes de iniciar, certifique-se de ter:
- Um computador com acesso à internet.
- Conhecimento básico de linha de comando.
- O ESP32 devidamente configurado com o ambiente de desenvolvimento Arduino IDE.
Instalando o Mosquitto Broker MQTT🔗
No Windows
1. Baixando o Instalador
Acesse o site oficial do Mosquitto em mosquitto.org/download e baixe o instalador adequado para sua versão do Windows.
2. Executando o Instalador
Execute o arquivo .exe
baixado e siga as instruções do assistente de instalação. Certifique-se de marcar a opção para instalar o Service se desejar que o Mosquitto inicie automaticamente com o Windows.
3. Configurando o Path (Opcional)
Para facilitar o uso dos comandos do Mosquitto via linha de comando, adicione o diretório de instalação ao Path do sistema:
- Clique com o botão direito em "Este Computador" e selecione "Propriedades".
- Vá em "Configurações Avançadas do Sistema" e clique em "Variáveis de Ambiente".
- Em "Variáveis do Sistema", localize a variável
Path
e edite-a.
- Adicione o caminho para a pasta onde o Mosquitto foi instalado (geralmente
C:\Program Files\mosquitto
).
No Linux (Ubuntu/Debian)
1. Atualizando os Repositórios
sudo apt update
2. Instalando o Mosquitto e o Cliente Mosquitto
sudo apt install mosquitto mosquitto-clients
3. Habilitando e Iniciando o Serviço
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
No macOS
1. Usando o Homebrew
Se você não tiver o Homebrew instalado, instale-o com o seguinte comando:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. Instalando o Mosquitto
brew install mosquitto
3. Iniciando o Servidor Mosquitto
brew services start mosquitto
Testando o Broker MQTT🔗
Para garantir que o broker esteja funcionando corretamente, faremos um teste simples utilizando o cliente Mosquitto.
Passo 1: Abrir Dois Terminais
Abra dois terminais ou linhas de comando em seu computador.
Passo 2: Inscrever-se em um Tópico
No primeiro terminal, inscreva-se em um tópico chamado teste/mqtt
:
mosquitto_sub -h localhost -t teste/mqtt
Este comando está dizendo ao cliente para se conectar ao host localhost
e se inscrever no tópico teste/mqtt
.
Passo 3: Publicar uma Mensagem
No segundo terminal, publique uma mensagem para o tópico teste/mqtt
:
mosquitto_pub -h localhost -t teste/mqtt -m "Olá, MQTT!"
Assim que você executar este comando, a mensagem "Olá, MQTT!" deverá aparecer no primeiro terminal, confirmando que o broker está funcionando corretamente.
Configurando o Broker para Acesso Externo🔗
Por padrão, o Mosquitto está configurado para aceitar conexões locais. Se você deseja que dispositivos externos, como seu ESP32, se conectem ao broker, será necessário ajustar a configuração.
Passo 1: Editar o Arquivo de Configuração
Localize o arquivo de configuração do Mosquitto. Em sistemas Linux, geralmente está em /etc/mosquitto/mosquitto.conf
. No Windows, pode estar na pasta de instalação.
Abra o arquivo em um editor de texto:
sudo nano /etc/mosquitto/mosquitto.conf
Passo 2: Habilitar a Escuta em Todas as Interfaces
Adicione ou descomente a seguinte linha:
listener 1883
Isso fará com que o Mosquitto escute na porta padrão MQTT (1883) em todas as interfaces de rede.
Passo 3: Desabilitar o 'allow_anonymous' (Opcional, mas Recomendado)
Para evitar acessos não autorizados, é recomendável configurar autenticação. No entanto, para simplificar, inicialmente vamos permitir conexões anônimas. Certifique-se de que a seguinte linha está configurada:
allow_anonymous true
Nota: Em um ambiente de produção, nunca permita conexões anônimas sem considerar os riscos de segurança. Implementar autenticação e criptografia é essencial.
Passo 4: Reiniciar o Serviço Mosquitto
Após as alterações, reinicie o serviço:
sudo systemctl restart mosquitto
Obtendo o Endereço IP do Broker🔗
Para que o ESP32 se comunique com o broker, você precisa conhecer o endereço IP do computador onde o Mosquitto está rodando.
No Windows
Abra o Prompt de Comando e digite:
ipconfig
Procure o "Endereço IPv4" da interface de rede que está em uso.
No Linux/macOS
Digite no terminal:
ifconfig
Ou
ip addr show
Anote o endereço IP da interface de rede.
Configurando o ESP32 para se Conectar ao Broker MQTT🔗
Agora que o broker está configurado e conhecemos o endereço IP, vamos preparar o ESP32 para se conectar ao broker.
Passo 1: Instalar a Biblioteca PubSubClient
Abra a Arduino IDE e vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas. Procure por "PubSubClient" e instale a biblioteca de Nick O'Leary.
Passo 2: Código do ESP32
Utilize o código abaixo como base. Lembre-se de substituir SSID
e PASSWORD
pelos dados da sua rede Wi-Fi, e BROKER_IP
pelo endereço IP do broker.
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
const char* mqttServer = "BROKER_IP";
const int mqttPort = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.println("Conectando ao WiFi...");
}
Serial.println("Conectado ao WiFi");
client.setServer(mqttServer, mqttPort);
while (!client.connected())
{
Serial.println("Conectando ao broker MQTT...");
if (client.connect("ESP32Client"))
{
Serial.println("Conectado ao broker MQTT");
}
else
{
Serial.print("Falha na conexão. Estado: ");
Serial.print(client.state());
delay(2000);
}
}
client.publish("teste/mqtt", "Olá do ESP32!");
client.subscribe("teste/mqtt");
}
void loop()
{
client.loop();
}
Passo 3: Carregar o Código no ESP32
Conecte o ESP32 ao computador e carregue o código utilizando a Arduino IDE. Abra o monitor serial para observar as mensagens de debug.
Testando a Comunicação entre o ESP32 e o Broker🔗
Com o ESP32 conectado, vamos verificar se ele está enviando e recebendo mensagens pelo broker MQTT.
Recebendo Mensagens Publicadas pelo ESP32
No computador, abra um terminal e inscreva-se no tópico teste/mqtt
:
mosquitto_sub -h localhost -t teste/mqtt
Você deverá ver a mensagem "Olá do ESP32!" enviada pelo microcontrolador.
Enviando Mensagens para o ESP32
Em outro terminal, publique uma mensagem para o ESP32:
mosquitto_pub -h localhost -t teste/mqtt -m "Mensagem para o ESP32"
No monitor serial da Arduino IDE, a mensagem recebida deverá ser exibida.
Troubleshooting: Resolvendo Problemas Comuns🔗
ESP32 Não Conecta ao Wi-Fi
- Verifique se o SSID e a senha estão corretos.
- Certifique-se de que o ESP32 está próximo ao roteador.
- Confira se outros dispositivos conseguem se conectar à rede.
ESP32 Não Conecta ao Broker MQTT
- Verifique se o endereço IP do broker está correto.
- Certifique-se de que o broker MQTT está ativo e escutando na porta 1883.
- Verifique se há firewalls ou antivírus bloqueando a conexão.
Mensagens Não São Recebidas
- Confirme se o ESP32 está inscrito no tópico correto.
- Verifique se está publicando e se inscrevendo no mesmo tópico.
- Certifique-se de que não há erros no código do ESP32 ou nos comandos do Mosquitto.
Melhorando a Segurança do Broker MQTT🔗
Embora tenhamos permitido conexões anônimas para simplificar, é importante pensar na segurança do seu sistema. Aqui estão algumas medidas recomendadas:
Habilitar Autenticação
No arquivo de configuração do Mosquitto, configure usuários e senhas:
1. Criar um Arquivo de Senhas
mosquitto_passwd -c /etc/mosquitto/passwd meu_usuario
Você será solicitado a definir uma senha.
2. Atualizar o Arquivo de Configuração
Adicione as seguintes linhas:
allow_anonymous false
password_file /etc/mosquitto/passwd
3. Reiniciar o Mosquitto
sudo systemctl restart mosquitto
Configurar SSL/TLS
Para criptografar as comunicações, configure certificados SSL/TLS no broker e ajuste o ESP32 para utilizá-los. Este é um tópico avançado que requer conhecimento em certificação digital.
Conclusão🔗
Configurar um broker MQTT é um passo crucial para desenvolver aplicações IoT com o ESP32. Com o Mosquitto instalado e o ESP32 devidamente configurado, você tem uma base sólida para construir projetos que exigem comunicação eficiente e em tempo real entre dispositivos.
A partir daqui, você pode explorar diversas possibilidades, como:
- Integrar sensores e atuar nos dados coletados.
- Criar painéis de monitoramento em tempo real.
- Implementar controles remotos para dispositivos.
Lembre-se sempre de considerar aspectos de segurança ao desenvolver suas aplicações, protegendo os dados e dispositivos conectados.
Boa sorte em seus projetos com o ESP32 e MQTT!
Este artigo faz parte do grupo Monitoramento Remoto com ESP32 e MQTT
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Tags