Instalación de mosquitto para MQTT

Os presentamos la instalación de mosquitto para MQTT. Mosquitto es un broker ligero y sencillo de utilizar, que nos permitirá llevar a cabo proyectos basados en el esquema plublicación/subscripción para la internet de las cosas.

¿Qué es mosquitto?

Eclipse Mosquitto es un proyecto open source de la Eclipse Foundation (licencia EPL/EDL), que implementa un broker de mensajería usando el protocolo MQTT (actualmente versiones 3.1 y 3.1.1, pero que ya tiene en fase beta la versión 5). Mosquitto es muy ligero y se puede usar en tanto en pequeños dispositivos, como la raspberry pi, como en servidores de gran potencia, dependiendo del uso que se le vaya a dar.

El protocolo MQTT, del cual hemos hablado ya en otros artículos, utiliza un modelo de publicación/subscripción a distintos tópicos/canales, lo cual lo hace muy útil para proyectos de internet de las cosas (IOT). Además, al ser un protocolo con poco «overhead» se utiliza profusamente en proyectos con sensores de poca potencia y dispositivos móviles, así como microcontroladores.

Instalación de mosquitto

Instalar mosquitto es muy sencillo. En la página de mosquitto tienes las formas de instalarlo en distintas distribuciones, y nosotros como siempre vamos a centrarnos en nuestra distribución preferida, Ubuntu, usando la última LTS. Abre una terminal y teclea lo siguiente:

$sudo apt update
$sudo apt upgrade
$sudo apt install mosquitto

Comandos básicos de administración de mosquitto

Mosquitto se instala por defecto como un servicio de linux que arrancará al iniciar tu sistema (se encuentra en ejecución justo después de la instalación). En Ubuntu, puedes gestionar los servicios con Systemctl. Mira los comandos básicos para este servicio:

Comprobación del estado

$sudo systemctl status mosquitto

Parar el servidor

$sudo systemctl stop mosquitto

Arrancar el servidor

$sudo systemctl start mosquitto

Hacer que mosquitto no arranque al iniciar el sistema

Puede que sólo estés haciendo unas pruebas y no quieras tener un servidor corriendo cada vez que inicies tu sistema. Para arrancarlo y pararlo manualmente, no tienes más que deshabilitarlo, y así no se iniciará cuando reiniciemos nuestro sistema:

$sudo systemctl disable mosquitto

Hacer que mosquitto arranque al iniciar el sistema

Una vez terminas con el código y otras pruebas, quizás quieras que mosquitto arranque junto con tu sistema. Si no has cambiado la configuración, no tienes que hacer nada, pues es la opción que se configura al instalarlo. Sin embargo, si lo has deshabilitado en algún momento, puedes volver a habilitarlo como sigue:

$sudo systemctl enable mosquitto

Herramientas adicionales

Mosquitto viene con algunas herramientas adicionales que nos permitirán comprobar el funcionamiento del broker. También nos servirán para depurar nuestro código, pues nos permiten suscribirnos, enviar y recibir información de distintos tópicos. Veámoslas a continuación:

mosquitto_sub y mosquitto_pub

Estas dos herramientas nos servirán para publicar y recibir datos en un tópico/canal. Serán muy útiles cuando estemos haciendo pruebas con dispositivos que se conecten a nuestro broker y empleen MQTT.

Primero tenemos que instalarlos:

nociones@nociones:~$ sudo apt install mosquitto-clients 

A partir de ahí, abre un par de terminales (recuerda que en Ubuntu puedes pulsar la combinación de teclas <ctrl>+<shift>+t para abrir una nueva terminal en otra pestaña) y en una de ellas escribe lo siguiente:

nociones@nociones:~$mosquitto_sub -t 'nocionestest' -h localhost

Verás que el comando se queda esperando. Esto significa que está escuchando en el tópico que le has indicado (nocionestest, la opción -t), en el host localhost (-h sustituye esto por la IP del equipo donde esté ejecutándose el servidor si no estás en local) y te mostrará los mensajes que se envíen en ese tópico.

Ahora vamos a otro terminal y publicamos un texto en el tópico nocionestest:

mosquitto_pub -t 'nocionestest' -m '¡Nuestro broker funciona perfectamente!' -h localhost

Vuelve a la terminal anterior, y verás que has recibido el texto. Si tienes varios equipos puedes probar a suscribirte desde distintos puntos y enviar mensajes con estos comandos, ¡es muy entretenido! Además, si empiezas a programar con la librería paho podrás comprobar si los mensajes se están enviando correctamente.

Principales ficheros

Fichero de configuración

El fichero de configuración nos permitirá modificar las características de nuestro broker. Se encuentra en /etc/mosquitto/mosquitto.conf, y su contenido por defecto es el 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

En /usr/share/doc/mosquitto/examples encontrarás ejemplos de cómo controlar listas de acceso y limitar usuarios a ciertos tópicos, junto a un fichero de configuración más completo que el que viene asignado por defecto.

Si quieres añadir tus propios ficheros de configuración, deberás hacerlo en el directorio /etc/mosquitto/conf.d

Fichero de log

¿Problemas? ¡Mira en el log! Nuestro broker escribe mensajes de log en /var/log/mosquitto/mosquitto.log. Necesitarás sudo para leer ese fichero.

Otros datos interesantes

Mosquitto trabaja por defecto en el puerto 1883 para comunicaciones sin encriptar y en el 8883 para comunicaciones encriptadas

Para profundizar

¿Ya tienes código funcionando que trabaja con este broker MQTT? Puedes profundizar en los siguientes temas:

  • Autentificación: en nuestros ejemplos habrás visto que no hemos utilizado ningún usuario ni contraseña. Por defecto, mosquitto viene con autentificación anónima. Esto está bien para un entorno de laboratorio o en tu red local, pero no si quieres llevar tu proyecto un paso más adelante, prueba a ampliar tu proyecto con usuarios y contraseñas.
  • TLS: la encriptación de las comunicaciones es un elemento básico para un sistema seguro. Cualquiera puede escuchar lo que transmites en tu broker si no lo encriptas, así que te animamos a que aprendas un poco de seguridad para configurar tus transmisiones de forma segura.
  • Limitación de tópicos: puede interesarte que no todos los usuarios puedan acceder a todos los tópicos. Mosquitto te permite hacerlo.
  • Bridging: un concepto interesante que permite que varios brokers trabajen coordinados unos con otros, mediante comandos de configuración que hacen que los mensajes se clonen/puenteen de un broker a otro.

¿Te animas a trabajar con MQTT? ¿En qué proyectos estás trabajando? ¿Quieres que preparemos ejemplos de alguno de estos temas? ¡Te esperamos en los comentarios!

(Visto 1.080 vecess, 9 visitas hoy)
¡Comparte este articulo!

Un pensamiento en “Instalación de mosquitto para MQTT

  1. Hola, de ser posible me gustaría contar con un ejemplo de MQTT-SN en la plataforma OpenIoT para comprobar la conexión entre sensores. Gracias por la información y colaboración que nos brindan

Deja un comentario

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

Publicaciones relacionadas

Comienza escribiendo tu búsqueda y pulsa enter para buscar. Presiona ESC para cancelar.

Volver arriba