Mosquitto MQTT: Broker para IoT en Raspberry Pi

Mosquitto MQTT broker conectando dispositivos IoT
3 min. Lectura
0 Vistas
0 Valoración

Mosquitto es un agente o broker de mensajes de código abierto, muy liviano y por lo tanto muy adecuado para nuestra Raspberry. También lo es para el Internet de las Cosas, como por ejemplo sensores e interruptores que tengo previsto instalar.

Mosquitto utiliza el protocolo de mensajería de máquina a máquina MQTT, utilizado comúnmente para el seguimiento de flotas, automatización del hogar, redes de sensores y recopilación de datos.

¿Cómo funciona MQTT?

La comunicación de este protocolo se basa en topics. Cada dispositivo publica mensajes sobre un topic, y todos los suscriptores de este topic recibirán este mensaje. Por ejemplo, los sensores de temperatura enviarán un mensaje con la información registrada, mientras que un interruptor estará esperando la orden de encendido o apagado.

Instalación de Mosquitto

Empezaremos instalando Mosquitto:

sudo pacman -Sy mosquitto

Configuración

Opción 1: Permitir acceso anónimo (más simple)

Actualización agosto 2022: En instalaciones posteriores, he permitido que cualquier dispositivo en mi red se pueda comunicar con Mosquitto. Sólo he añadido al final del archivo de configuración las siguientes líneas:

sudo nano /etc/mosquitto/mosquitto.conf
listener 1883
allow_anonymous true

Si también eliges esta opción, salta hasta la configuración de UFW más abajo.

Opción 2: Configurar usuarios y contraseñas (más seguro)

Si prefieres añadir usuarios y contraseñas, sigue leyendo.

Utilizaremos el siguiente comando para añadir nuestro usuario al fichero de contraseñas:

sudo mosquitto_passwd -c /etc/mosquitto/passwd usuario

Introduciremos el password cuando nos lo pida, y lo confirmamos a continuación.

Importante: La opción -c crea un nuevo fichero de contraseñas. Si el fichero ya existe, lo sobrescribe.

Configurar autenticación

Modificaremos el fichero de configuración para indicarle dónde encontrar el fichero de contraseñas:

sudo nano /etc/mosquitto/mosquitto.conf

Añadiremos las dos líneas siguientes, una es para indicarle dónde buscar el fichero de contraseñas, y la otra línea es para evitar que se conecten clientes al broker sin autenticarse:

password_file /etc/mosquitto/passwd
allow_anonymous false

El fichero de contraseñas, como es de esperar, se guarda encriptado:

cat /etc/mosquitto/passwd
usuario1:$6$AIWA34jlkfGxMlKLmillBjL$u3qrtyufi5QL6J+IVZz4bysqKiiotRQI5/belyJ3WBPYKyxrmneeXdQVuqQ5Z+gUrQOPBpbsMBK+7jRe462reQyzgQ3giLSw==

Configurar firewall

Aprovecharemos para añadir a nuestro cortafuegos el puerto 1883, que permitirá que los diferentes dispositivos se comuniquen con el broker:

sudo ufw allow 1883

Iniciar el servicio

Arrancaremos manualmente:

sudo systemctl start mosquitto

Probando Mosquitto

Necesitaremos dos terminales.

Terminal 1: Suscriptor

En la primera terminal nos suscribiremos a un topic, al que llamaremos miTema:

mosquitto_sub -u usuario --pw contraseña -h localhost -t miTema

Terminal 2: Publicador

Y en la segunda terminal, enviaremos un mensaje al mismo topic:

mosquitto_pub -u usuario --pw contraseña -h localhost -t miTema -m "Hola Mundo"

Importante sobre autenticación

Importante: Añadir los parámetros -u y --pw que serán el usuario y la contraseña que escogimos anteriormente. Si introducimos los comandos sin estos parámetros, el resultado no será el esperado:

Connection Refused: not authorised.
Error: The connection was refused.

Resultado esperado

En cambio, si todo se ha introducido correctamente, deberíamos tener, casi de manera instantánea, el mensaje "Hola Mundo" en la primera terminal, lo que significa que tenemos todo bien configurado y que hemos enviado y recibido nuestro primer mensaje MQTT.

Saldremos de la primera terminal con CTRL+C.

Habilitar en el arranque

Si todo es correcto, no hay que olvidarse de añadir el servicio en el arranque:

sudo systemctl enable mosquitto

Próximos pasos

Con Mosquitto configurado ya puedes:

  • Conectar sensores y dispositivos IoT
  • Integrar con OpenHAB o Home Assistant
  • Crear automatizaciones basadas en eventos MQTT
  • Monitorear dispositivos en tiempo real

Tu Raspberry Pi está lista para convertirse en el cerebro de tu sistema domótico con comunicación MQTT. 🏠📡

¿Te ha sido útil?

Ayúdame a mejorar con tu puntuación y comentarios.

0.0 (0 votos)
Jaume Ferré

Jaume Ferré

Soy un entusiasta de las nuevas tecnologías, apasionado por explorar su potencial innovador. Colecciono CDs en formato físico y disfruto creando mezclas musicales. Además, la fotografía es otra de mis pasiones, capturando momentos y expresiones con cada disparo. ¡Gracias por leerme!

💬 Comentarios

Los comentarios están gestionados por GitHub Discussions. Necesitas una cuenta de GitHub para participar. ¡Es gratis y rápido!