Introducción a MQTT en IOTeca

Introducción a MQTT

MQTT ( Message Queue Telemetry Transport) es un protocolo ideado por IBM que fue liberado para que cualquiera pueda utilizarlo. El mismo está enfocado a la conectividad Machine-to-Machine (M2M).

Sus características le permiten un consumo realmente bajo de recursos para su funcionamiento, tanto de conectividad como energía.

Estas características han hecho que rápidamente se convierta en un protocolo muy empleado en la comunicación de sensores y, consecuentemente, dentro del Internet de las Cosas.

Arquitectura MQTT

Utiliza una topología en estrella, donde existe un nodo central llamado broker con capacidad para trabajar con un gran número de clientes.

El broker el elemento encargado de gestionar la red y transmitir los mensajes, que pueden estar cifrados, lo que aporta seguridad dentro de la red.

La arquitectura MQTT define topics (tópicos o temas) en los cuales los emisores pueden publicar y los receptores pueden subscribirse. La comunicación, entonces, puede ser de uno a uno o de uno a muchos.

Los topics tienen una estructura jerárquica gracias a la cual podemos establecer relaciones padre-hijo y, los subscritores a un topic padre, recibirán también la información de sus hijos.

Funcionamiento

Para poder entender el funcionamiento utilizaremos el siguiente despliegue de ejemplo y gestionaremos uno de los brokers más conocidos que existen para MQTT: Mosquitto.

Mosquitto es un broker OpenSource ampliamente utilizado debido a su ligereza, lo que nos permite, fácilmente, emplearlo en gran número de ambientes, incluso si éstos son de pocos recursos.

Dentro del despliegue, las entradas son los sensores de PRESENCIA que hemos supuestamente colocado en la Habitación1, Habitación2 y Comedor. De la misma forma existe una salida LUZ para cada habitación y comedor. A cada uno de ellos, le vamos a asignar a un topic propio, quedando el listado de topics de la siguiente forma:

HABITACION1

  • Presencia: CASA/HABITACIONES/HABITACION1/PRESENCIA1
  • Luz: CASA/HABITACIONES/HABITACION1/LUZ1

HABITACION2
  • Presencia: CASA/HABITACIONES/HABITACION2/PRESENCIA2
  • Luz: CASA/HABITACIONES/HABITACION2/LUZ2

COMEDOR
  • Presencia: CASA/COMEDOR/PRESENCIA3
  • Luz: CASA/COMEDOR/LUZ3

A continuación no generaremos tres subscriptores a los siguientes topics:

  • Subscriptor 1: CASA/HABITACIONES/HABITACION1/PRESENCIA1
  • Subscriptor 2: CASA/HABITACIONES/#
  • Subscriptor 3: CASA/#

El '#' funciona como comodín por lo que todos sus hijos deberían ser escuchados bajo esta jerarquía.

Más adelante explicaremos en detalle los comandos de Mosquitto, por ahora nos centraremos en el funcionamiento. Los comandos por consula para las subscripciones serán los siguientes:

mosquitto_sub -t "CASA/HABITACIONES/HABITACION1/PRESENCIA1"
mosquitto_sub -t "CASA/HABITACIONES/#"
mosquitto_sub -t "CASA/#"

Publicaremos entonces mensajes desde alguno de los nodos que definimos antes para que simulen los siguientes casos:

  • detección de presencia en Habitación 1
  • detección de presencia en Habitación 2
  • encendido de luz en Comedor
mosquitto_pub -t "CASA/HABITACIONES/HABITACION1/PRESENCIA1" -m "ON"
mosquitto_pub -t "CASA/HABITACIONES/HABITACION2/PRESENCIA2" -m "ON"
mosquitto_pub -t "CASA/COMEDOR/LUZ3" -m "1"

La "detección de presencia en la habitación 1" es recibida por los tres subscriptores, La "detección de presencia en la habitación 2" es recibida pos los subscritores 2 y 3, y el mensaje de "encendido de la luz del comedor" sólo es recibido por el subscriptor 3.

Para que se encendiera la luz en el comedor la salida debería subscribirse de la siguiente manera:

mosquitto_sub -t "CASA/HABITACIONES/COMEDOR/LUZ3"

Una implementación real puede verse utiilizando MQTT con Mosquitto entre computadora con Windows y Raspberry Pi

Creado: 28/12/2019  

Publicidad

| Volver a IoT |

Comentarios

Para poder comentar debés registrarte e ingresar al sitio.