MQTT (transporte de telemetría de cola de mensajes) es un protocolo de mensajería liviano comúnmente utilizado en aplicaciones IoT (Internet de las cosas) para una comunicación confiable y eficiente entre dispositivos. Alojar un servidor MQTT en un Raspberry Pi le permite crear un centro de mensajería local para sus proyectos IoT. Esta guía lo guía a través de la configuración y la ejecución de un servidor MQTT en una Raspberry Pi.
Lo que necesitarás
- Frambuesa pi (Cualquier modelo con soporte de GPIO, por ejemplo, PI 3, PI 4)
- Tarjeta microSD (al menos 8GB, clase 10 o mejor)
- Fuente de alimentación (5V, 2.5A mínimo para PI 3; 5V, 3a para PI 4)
- Raspberry Pi OS (Versión de escritorio o lite)
- Conexión a Internet
- Clientes MQTT (por ejemplo, ESP8266, ESP32 o herramientas de software MQTT)
Paso 1: Actualice la Raspberry Pi
- Asegúrese de que su Raspberry PI esté actualizado:
sudo apt update && sudo apt upgrade -y
Paso 2: Instale Mosquitto MQTT Broker
Mosquitto es un corredor MQTT ligero y ampliamente utilizado.
- 
Instale Mosquitto y sus herramientas del cliente: sudo apt install -y mosquitto mosquitto-clients
- 
Habilitar Mosquitto para comenzar en el arranque: sudo systemctl enable mosquitto
- 
Inicie el servicio Mosquitto: sudo systemctl start mosquitto
Paso 3: Pruebe el corredor de MQTT
- 
Abra dos ventanas de terminales o sesiones SSH a su Raspberry Pi. 
- 
En el primer terminal, suscríbase a un tema de prueba: mosquitto_sub -h localhost -t test/topic
- 
En el segundo terminal, publique un mensaje de prueba: mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
- 
Deberías ver el mensaje "¡Hola, mqtt!" en el primer terminal. 
Paso 4: Configurar mosquitto para conexiones externas
- 
Abra el archivo de configuración de mosquitto: sudo nano /etc/mosquitto/mosquitto.conf
- 
Agregue las siguientes líneas para permitir conexiones externas: listener 1883 allow_anonymous trueNota: Para entornos de producción, configure la autenticación del usuario en lugar de permitir el acceso anónimo. 
- 
Reinicie el servicio Mosquitto para aplicar cambios: sudo systemctl restart mosquitto
- 
Pruebe la conexión desde otro dispositivo en la misma red utilizando una herramienta de cliente MQTT (por ejemplo, MQTT.FX o MQTT Explorer). 
Paso 5: Asegure el corredor MQTT (opcional)
- 
Habilitar la autenticación de contraseña: sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>- Ingrese y confirme una contraseña para el usuario.
 
- 
Actualice el archivo de configuración de Mosquitto para usar el archivo de contraseña: allow_anonymous false password_file /etc/mosquitto/passwd
- 
Reinicie el servicio de mosquitto: sudo systemctl restart mosquitto
- 
Pruebe la conexión utilizando el nombre de usuario y la contraseña. 
Paso 6: Conecte los dispositivos IoT al corredor MQTT
- 
Para ESP8266/ESP32: Use el IDE Arduino para programar sus dispositivos IoT para publicar/suscribirse a temas en su corredor 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 o python con el 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()
Solución de problemas
- 
No se puede conectar al corredor MQTT: - Asegúrese de que Mosquitto esté funcionando: sudo systemctl status mosquitto
- Verifique la configuración del firewall en su Raspberry Pi.
 
- Asegúrese de que Mosquitto esté funcionando: 
- 
Errores de autenticación: - Verifique el nombre de usuario y la contraseña en la configuración de mosquitto y la configuración del cliente.
 
- 
Conexión rechazada: - Asegúrese de que el dispositivo esté en la misma red que la Raspberry Pi.
- Verifique que el puerto 1883 esté abierto.
 
Aplicaciones de MQTT
- Comunicación del dispositivo IoT
- Sistemas de automatización del hogar
- Transmisión de datos en tiempo real
- Monitoreo y control remoto
Conclusión
Alojar un servidor MQTT en un Raspberry Pi es una excelente manera de habilitar una comunicación ligera y confiable para sus proyectos IoT. Siguiendo esta guía, puede configurar y asegurar un corredor de Mosquitto MQTT, conectar dispositivos IoT e comenzar a construir aplicaciones potentes. ¡Experimente con diferentes configuraciones para explorar todo el potencial de MQTT!
 
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  