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 true
Nota: 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-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()
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!