MQTT (Transporte de telemetria de fila de mensagens) é um protocolo de mensagens leves comumente usado em aplicativos IoT (Internet of Things) para uma comunicação confiável e eficiente entre os dispositivos. A hospedagem de um servidor MQTT em um Raspberry Pi permite criar um hub de mensagens local para seus projetos de IoT. Este guia orienta você a configurar e executar um servidor MQTT em um Raspberry Pi.
O que você precisará
- Raspberry Pi (Qualquer modelo com suporte GPIO, por exemplo, PI 3, PI 4)
- Cartão microSD (pelo menos 8 GB, classe 10 ou melhor)
- Fonte de energia (5V, 2,5A Mínimo para Pi 3; 5V, 3a para PI 4)
- Raspberry Pi OS (Versão Lite ou desktop)
- Conexão com a Internet
- Clientes MQTT (por exemplo, Esp8266, Esp32 ou MQTT Software Tools)
Etapa 1: Atualize o Raspberry Pi
- Verifique se o seu Raspberry Pi está atualizado:
sudo apt update && sudo apt upgrade -y
Etapa 2: Instale o Mosquitto MQTT Broker
O Mosquitto é um corretor MQTT leve e amplamente utilizado.
- 
Instale o Mosquitto e suas ferramentas de clientes: sudo apt install -y mosquitto mosquitto-clients
- 
Ative o Mosquitto para começar na inicialização: sudo systemctl enable mosquitto
- 
Inicie o serviço Mosquitto: sudo systemctl start mosquitto
Etapa 3: teste o corretor MQTT
- 
Abra duas janelas de terminal ou sessões SSH no seu Raspberry Pi. 
- 
No primeiro terminal, assine um tópico de teste: mosquitto_sub -h localhost -t test/topic
- 
No segundo terminal, publique uma mensagem de teste: mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
- 
Você deve ver a mensagem "Olá, MQTT!" No primeiro terminal. 
Etapa 4: Configurar o Mosquitto para conexões externas
- 
Abra o arquivo de configuração do Mosquitto: sudo nano /etc/mosquitto/mosquitto.conf
- 
Adicione as seguintes linhas para permitir conexões externas: listener 1883 allow_anonymous trueObservação: Para ambientes de produção, configure a autenticação do usuário em vez de permitir acesso anônimo. 
- 
Reinicie o serviço Mosquitto para aplicar alterações: sudo systemctl restart mosquitto
- 
Teste a conexão de outro dispositivo na mesma rede usando uma ferramenta de cliente MQTT (por exemplo, MQTT.FX ou MQTT Explorer). 
Etapa 5: proteja o corretor MQTT (opcional)
- 
Ativar autenticação de senha: sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>- Digite e confirme uma senha para o usuário.
 
- 
Atualize o arquivo de configuração do Mosquitto para usar o arquivo de senha: allow_anonymous false password_file /etc/mosquitto/passwd
- 
Reinicie o serviço Mosquitto: sudo systemctl restart mosquitto
- 
Teste a conexão usando o nome de usuário e a senha. 
Etapa 6: conecte os dispositivos IoT ao corretor MQTT
- 
Para ESP8266/ESP32: Use o Arduino IDE para programar seus dispositivos IoT para publicar/assinar tópicos no seu corretor Raspberry Pi MQTT. #include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* mqtt_server = "<raspberry-pi-ip>"; WiFiClient espClient; PubSubClient client(espClient); void setup() { WiFi.begin(ssid, password); client.setServer(mqtt_server, 1883); } void loop() { if (!client.connected()) { client.connect("ESPClient"); } client.loop(); client.publish("test/topic", "Hello from ESP8266!"); delay(1000); }
- 
Para clientes de software: Use Mqtt.fx, MQTT Explorer ou Python com o paho-mqttbiblioteca.import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("test/topic") def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("<raspberry-pi-ip>", 1883, 60) client.loop_forever()
Solução de problemas
- 
Não é possível conectar -se ao MQTT Broker: - Verifique se o Mosquitto está em execução: sudo systemctl status mosquitto
- Verifique as configurações do firewall no seu Raspberry Pi.
 
- Verifique se o Mosquitto está em execução: 
- 
Erros de autenticação: - Verifique o nome de usuário e a senha na configuração do mosquitão e na configuração do cliente.
 
- 
Ligação recusada: - Verifique se o dispositivo está na mesma rede que o Raspberry Pi.
- Verifique se a porta 1883 está aberta.
 
Aplicações do MQTT
- Comunicação do dispositivo IoT
- Sistemas de automação residencial
- Streaming de dados em tempo real
- Monitoramento e controle remotos
Conclusão
Hospedar um servidor MQTT em um Raspberry Pi é uma excelente maneira de permitir uma comunicação leve e confiável para seus projetos de IoT. Seguindo este guia, você pode configurar e proteger um corretor MQTT do Mosquitto, conectar dispositivos IoT e começar a criar aplicativos poderosos. Experimente diferentes configurações para explorar todo o potencial do MQTT!
 
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  