fbpx

Instalación de Mosquitto

En este artículo veremos cómo instalar un servidor MQTT en Raspberry Pi, paso a paso. En primer lugar debemos instalar el software para correr un broker (servidor) de MQTT. Mosquitto es el más utilizado y el que vamos a usar en este caso.

No dejes de mirar este artículo, donde hablo de las diferencias entre MQTT y HTTP y cuál es la mejor opción en cada caso. Y si deseas agregar encriptación a la comunicación, mira este artículo donde explico cómo hacerlo.

Para instalarlo nos conectamos por consola (ssh) a la raspberry y ejecutamos los siguientes comandos. Todo lo descripto aquí supone que estamos utilizando raspbian o algún otro sistema operativo basado en debian.

Antes de instalar Mosquitto en nuestra Raspberry, actualizamos los paquetes

sudo apt-get update

sudo apt-get upgrade

Luego instalamos mosquitto y su software cliente

sudo apt-get install mosquitto mosquitto-clients

Configurando Mosquitto

Una vez hecho esto ya tenemos todo instalado y una configuración básica, pero antes de correr el broker realizaremos algunas configuraciones.
El archivo de configuración generado por defecto (mosquitto.conf) se encuentra en el directorio /etc/mosquitto.

Si abrimos o leemos este archivos encontraremos lo siguiente


# Place your local configuration in /etc/mosquitto/conf.d/

#

# A full description of the configuration file is at

# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true

persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d


Todas las opciones que no se especifican en el archivo de configuración, toman los valores por defecto. Como se ve en el texto, hay un archivo de ejemplo en el directorio /usr/share/doc/mosquitto/examples/. Sin embargo, el archivo mosquitto.conf.example se encuentra comprimido en el formato gz, por lo que debemos descomprimirlo con el utilitario gunzip, para lo cual ejecutamos lo siguiente:

sudo gunzip mosquitto.conf.gz

El archivo comprimido en realidad contiene cuatro archivos de ejemplo: aclfile.example,  mosquitto.conf, pskfile.example y pwfile.example. Estos archivos son de listas de acceso, configuración, llave de encriptación y contraseñas respectivamente.

Estos archivos se pueden abrir y modificar con cualquier editor de texto, en mi caso uso nano. Veremos ahora algunas configuraciones básicas.

Una de estas configuraciones es el puerto en el que estará escuchando el servidor, que por defecto es el TCP 1883. Dejaremos esto sin modificaciones, pero es importante conocerlo para poder conectarnos con el broker.

Otra configuración es la interfaz en la que estará escuchando el servidor. Si no se configura, escuchará en todas las interfaces, pero se puede fijar a una especificando la dirección IP de esa interfaz. Esto es totalmente opcional y tiene que ver con restringir el acceso al broker desde otras interfaces.

Por ejemplo: listener 1883 192.168.0.101

smart home sonoff

Otras configuraciones

El archivo de configuración tiene muchas más opciones, pero en este tutorial dejaremos todo por defecto. Si se desea modificar algo, debería incluirse en el archivo mosquitto.conf en el directorio /etc/mosquitto o agregar un archivo de configuración adicional en el directorio /etc/mosquitto/conf.d , que está referenciado en el archivo anterior.

Por último definiremos un usuario y contraseña. Se pueden definir tantos usuarios como se necesiten en base a la cantidad de clientes y los permisos que estos tengan.

Para generar el usuario y la contraseña ejecutamos el siguiente comando:

sudo mosquitto_passwd -c /etc/mosquitto/pwfile usuario

Donde “usuario” es el nombre del usuario que vamos a utilizar.

Este comando pedirá ingresar, en un salto de línea, la contraseña correspondiente para ese usuario. Cabe aclarar que también se puede configurar el broker para que sea utilizado de manera anónima (sin autenticación).

¿Te gustaría probar esto de manera gratuita en un servidor en la nube?. Aquí te dejo un videotutorial y un crédito de USD 100 para usar en Digital Ocean.

Además, se puede utilizar encriptación en la autenticación y envío de mensajes, pero esto no lo veremos en este tutorial.

Accede al curso gratuito «Los 4 fundamentos en la gestión de dispositivos IoT»

Probando la comunicación con el broker

Ahora toca probar que todo esté funcionando correctamente, para lo cual ejecutaremos el software cliente de la siguiente manera.

En una ventana nos suscribimos al tópico en el que se van a escribir los mensajes.

mosquitto_sub -h <dirección ip> -i <client-id-1> -u <usuario> -P ‘<contraseña>’ -t topico/valor -q 2

En otra ventana ejecutamos el comando de publicación 

mosquitto_pub -h <dirección ip> -i <client2-id-2> -u <usuario> -P ‘<contraseña>’ -t topico/valor -m «hello world»

Al realizar esta publicación, en la primer ventana deberá aparecer el mensaje publicado.

No dejes de escribir tus dudas o comentarios abajo.


3 comentarios

MQTT vs HTTP - Qué elegir para tu proyecto IoT | IoT Consulting · 11 diciembre, 2019 a las 10:28 AM

[…] propósito, aquí tienes un artículo sobre cómo instalar un servidor MQTT en una Raspberry […]

Cómo agregar encriptación a MQTT - IoT Consulting · 20 marzo, 2020 a las 10:28 AM

[…] Si todavía no has visto cómo instalar un servidor MQTT en una Raspberry Pi, te invito a leer este artículo. […]

Aplicaciones de Raspberry Pi en IoT - Tu fuente experta en IoT · 24 junio, 2020 a las 10:28 AM

[…] te interesa este tema, te invito a ver también esta otra publicación, donde explico cómo instalar un servidor MQTT en una Raspberry […]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: