Ejemplo MQTT

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

Ejemplo de uso del Protocolo MQTT con Mosquitto

Se tiene el siguiente diagrama bajo una arquitectura estrella que representa una casa
donde se desea implementar una aplicación IoT (domótica).

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.

Una vez que tenemos instalado Mosquito, podemos proceder a crear nuestro primer emisor
y subscriptor siguiendo para ello una jerarquía que podría asemejarse a la empleada en
una aplicación real (en este caso, una vivienda).

Antes de nada, voy precisamente a definir esta estructura:


Dentro de esta estructura, nuestros únicos "emisores" son los sensores de luz y presencia
que hemos colocado en la Hab1, Hab2 y Cocina. Cada uno de ellos, lo vamos a asignar a
un topic propio quedando el listado de topics de la siguiente forma:

 Hab1
 Luz: casa/habitaciones/hab1/luz
 Presencia: casa/habitaciones/hab1/presencia
 Hab2
 Luz: casa/habitaciones/hab2/luz
 Presencia: casa/habitaciones/hab2/presencia
 Cocina
 Luz: casa/cocina/luz
 Presencia: casa/cocina/presencia

Para ver como funciona el protocolo, vamos a subscribirnos a tres topics:

 casa/habitaciones/hab1/luz
 casa/habitaciones/#
 casa/#

El '#' del final es semejante al asterisco y hace las veces de comodín por lo que todos sus
hijos deberían ser escuchados bajo esa cola.

Cada uno de los comandos que escriba ahora, debería ir en una terminal / consola
diferente. Por otra parte, dependiendo de tu sistema operativo puede que tengas que
arrancar el servidor de Mosquitto de forma manual, en mi caso (OSX) esta operación la
realicé mediante el siguiente comando:

/usr/local/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
Empezamos por los subscriptores:

mosquitto_sub -t "casa/habitaciones/hab1/luz" -v
mosquitto_sub -t "casa/habitaciones/#" -v
mosquitto_sub -t "casa/#" -v

Y ahora empezamos a publicar mensajes desde alguno de los nodos que definimos antes.
Concretamente, voy a lanzar comandos que simulen los siguientes casos:

 encendido luz Hab1


 encendido luz Hab2
 encendido presencia cocina

mosquitto_pub -t "casa/habitaciones/hab1/luz" -m "ON"


mosquitto_pub -t "casa/habitaciones/hab2/luz" -m "ON"
mosquitto_pub -t "casa/cocina/presencia" -m "ON"

Como observarás, el "encendido luz Hab1" es detectado por todos nuestros subscriptores,
el "encendido luz Hab2" es detectado por el subscritor general y el subscritor a las
habitaciones y, por último, el "encendido presencia cocina" sólo es detectado por el
subscriptor general ya que el sensor no forma parte del árbol gerárquico de habitaciones
(ni lógicamente hab1).

También podría gustarte