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 true
Observaçã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-mqtt
biblioteca.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!