MQTT Mosquitto message broker

por | 4 abril, 2019

MQTT es un protocolo de mensajes máquina-a-máquina y provee una arquitectura de comunicación de tipo publicación/suscripción pensada para dispositivos tipo IoT (Internet of Thing).

Lo tenemos disponible ya compilado en el repositorio epel para instalarlo con yum:

# yum -y install epel-release
# yum -y install mosquitto
# systemctl start mosquitto
# systemctl enable mosquitto

En el argot del paradigma de sistema distribuido publicación/suscripción a los tipos de mensajes se les denomina Topic. Un Topic es una etiqueta que se asigna a un tipo de mensaje. Es realidad los topics definen una jerarquía. Por ejemplo los topics:

sensor/exterior/temperatura
sensor/exterior/humedad

definen dos topics difetentes pero que heredan los parámetros definidos para sensor/exterior.

El servidor mosquitto lo manejamos a nivel de terminal con instrucciones sencillas. Disponemos de dos comandos para publicar y suscribirnos. A continuación vemos un ejemplo.

# mosquitto_sub -h localhost -t prueba

Con esto nuestro servidor se ha subscrito al topic «prueba».

En otra ventana de comandos publicaremos algo en ese topic:

/# mosquitto_pub -h localhost -t prueba -m "hola"

Innediatamente aparece el mensaje de texto en el subscriptor:

# mosquitto_sub -h localhost -t prueba
hola

En este caso hemos usado las opciones:

-h nombre del servidor
-t nombre del topic
-m mensage

Evidentemente este era un ejemplo muy sencillo. Normalmente se definirán mensajes desde ficheros o se procesarán mensajes desde fuentes en tiempo real.

Como ampliación:

  • Proteger Mosquitto con passwords
  • Encriptado de las comunicaciones (MQTT SSL)
  • Configurar sobre websockets

=======================================

En Debian la instalación es algo diferente:

# apt-get install mosquitto mosquitto-clients

Tras esta instalación el servidor quedará activado y configurado en el arranque ya que se configura el servicio que arranca:

usr/sbin/mosquitto  -c /etc/mosquitto/mosquitto.conf

Deja un comentario

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