Mosquitto es uno de los brokers MQTT más usados. Es Open Source (forma parte del Proyecto Eclipse IoT), liviano (puede ejecutarse sin problemas en una Raspberry Pi) y muy flexible.

Este post lista los pasos a seguir para instalar Mosquitto en una Raspberry Pi, y los comandos que habitualmente necesitaremos para probarlo y hacer pruebas con dispositivos IoT.

Instalación de Mosquitto

Lo primero es descargar la clave de firma del repositorio donde descargaremos Mosquitto.

sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

Agregamos la clave para autenticar el paquete que vamos a descargar luego.

sudo apt-key add mosquitto-repo.gpg.key

Luego hacemos al cambio al siguiente directorio.

cd /etc/apt/sources.list.d/

Aquí descargamos la lista de repositorios de Mosquitto con wget. Como en mi Raspberry tengo instalada la versión de Raspbian Buster, utilizo el siguiente comando:

sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list

Finalmente, actualizamos la información de los repositorios e instalamos mosquitto y mosquitto-clients con los siguientes comandos:

sudo apt-get update
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients

Arrancando y configurando Mosquitto

Una vez instalado, Mosquitto corre como servicio y estará escuchando en el puerto 1883. Los comandos para detener, iniciar y reiniciar Mosquitto son los siguientes:

sudo systemctl stop mosquitto.service
sudo systemctl start mosquitto.service
sudo systemctl restart mosquitto.service

La configuración global de mosquitto se almacena en el archivo mosquitto.conf que se encuentra en el directorio /etc/mosquitto.
Adicionalmente, podemos agregar nuestra configuración personalizada, creando un archivo “default.conf(o como queramos llamarlo) y almacenándolo en el directorio /etc/mosquitto/conf.d/

Ejecutando Mosquitto manualmente

En algunas oportunidades puede ser muy conveniente ejeccutar Mosquitto de manera manual, especificándole por ejemplo niveles de verbosidad y archivos de configuración de prueba. Para eso, lo primero que debemos hacer es detener el servicio mosquitto.

sudo systemctl stop mosquitto.service

Luego, lo podemos arrancar manualmente con el siguiente comando:

mosquitto -v #start in verbose mode

La opción -v levanta Mosquitto en modo verbosidad, de manera que podemos ver en la consola lo que está sucediendo con el broker. Otros comandos útiles son los siguientes:

-p port_number
-c configuration file

Ejemplos: Para comenzar mosquito de manera que utilice nuestro archivo de configuración demo.mosquitto.conf:

mosquitto -c /etc/mosquitto/demo.mosquitto.conf

Para levantar mosquitto en el puerto 1884 utilizando la configuración standard, podemos utilizar el siguiente comando:

mosquitto -p 1884

Probando la instalación de Mosquitto

Ahora podemos probar la instalación de Mosquitto conectándonos desde los clientes mosquitto_pub y mosquitto_sub.

Para eso, abrimos dos consolas. En una nos suscribimos al tópico que queremos leer, y en la otra escribimos en ese tópico. Como ejemplo, tomemos un dispositivo IoT que escribe en el tópico “temperatura” el valor de la lectura de su sensor.

En la primer consola escribimos:

mosquitto_sub -h localhost -t temperatura -d

Y en la segunda consola escribimos

mosquitto_pub -h localhost -t temperatura -m 32

Los resultados serán los que se muestran a continuación:

Consola con el cliente suscripto al tópico
Consola con el cliente que publica en el tópico

Referencias: