Semana 13

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 49

Fundamentos del modelo Suscriptor/Publicador

Protocolo MQTT

Sistemas Embebidos
Mag. Ing. Rubén Acosta
Temario

1. MQTT
2. Arquitectura MQTT
3. Elementos de la arquitectura MQTT
4. Topic (tema) en MQTT
5. Protocolo en MQTT
6. Estructura del mensaje MQTT
7. Calidad de servicio (Quality of Service - QoS) en MQTT
8. Laboratorios MQTT
MQTT
(Message Queue Telemetry Transport)

o Es un protocolo de transporte (TCP) para telemetría de cola de mensajes cortos del tipo publicación/suscripción basado
en el modelo Cliente/Servidor, donde Publisher o Subscriber es el
cliente y el Broker el servidor.
o Diseñado para soluciones que pueden ser cifradas y que necesitan un ancho de banda limitado
como pueden ser IoT o M2M
Arquitectura MQTT

o La arquitectura MQTT sigue una topología estrella, donde la transferencia de los datos se realiza a través de temas o
tópicos entre un broker (servidor central) y varios clientes (publicador/subscriptor).
Elementos de la arquitectura MQTT

o Broker: Es el servidor que distribuye, filtra y enruta los mensajes sobre tópicos (temas) a los clientes.
o Publisher: Es el cliente que publica el mensaje hacia el broker a través de un tópico.
o Subscriber: Es el cliente que se inscribe sobre un tópico (tema) en el broker para poder recibir mensajes.
o Topic: Es el mecanismo (cadenas de texto) mediante el cual los clientes intercambian los mensajes.
Topic (tema) en MQTT

o Un “topic” se representa mediante una cadena y tiene una estructura jerárquica.


o Cada jerarquía se separa con ‘/’.
o Ejemplos de topic, “/edificio1/planta3/sala1/raspberry0/temperatura”
Protocolo en MQTT
o Para realizar la conexión con el Broker primero es necesario validarse con un usuario y contraseña y
conectarse al puerto 1883 (Puerto por defecto) o el 8883 cuando hay seguridad TLS.
Diferencias entre HTTP y MQTT
Diferencias entre HTTP y MQTT
Estructura del mensaje MQTT

Cada mensaje consta de 3 partes:

o Cabecera fija: Ocupa 2 a 5 bytes, obligatorio. Consta de un código de control, que identifica el tipo de
mensaje enviado, longitud del Mensaje, calidad de servicio (QoS). La longitud es de 1 a 4 bytes.
o Cabecera variable: Opcional, contiene información adicional que es necesaria en ciertos mensajes
o Contenido (Payload): Opcional, es el contenido del mensaje. Puede tener una longitud de 0 hasta 256Mb.
Calidad de servicio (Quality of Service - QoS) en MQTT
o Este servicio determina cómo se entrega el mensaje a los receptores. El QoS se especifica en
cada mensaje que se envía y puede haber 3 grados de calidad.

 QoS 0: como máximo una vez. Eso significa que el mensaje se envía sin garantías de recepción
(el broker no informa al remitente de que ha recibido el mensaje).

 QoS 1: al menos una vez. El cliente lo transmitirá varias veces si es necesario, hasta que el
broker le confirme que lo ha enviado a la red.

 QoS 2: exactamente una vez. Se garantiza que llegará una vez el mensaje.

o La seguridad de MQTT soporta cifrado mediante SSL y el Payload puede ir encriptado


Laboratorios MQTT
Esquema de conexión con el broker MQTT “ADAFRUIT”

Cliente-2MQTT-Publisher

Servidor
io.adafruit.com

Librería Adafruit MQTT

LTE/GPRS

Cliente-3 MQTT-Publisher

Led
Client-1 MQTT-Subscriber
Laboratorios MQTT

1.- Instalando librería “Adafruit MQTT library” en el NODEMCU (cliente)

o Escribir AdafruitMQTT en el gestor de librerías


Laboratorio MQTT
Instalando librería “adafruit MQTT library” en el NODEMCU
o Buscar en Ejemplos AdafruitMQTT Library
Laboratorio MQTT

2.- Funciones de la librería AdafruitMQTT


• Adafruit_MQTT_Publish: Es la clase que permite crear el objeto para realizar la publicación de tópicos.

• Adafruit_MQTT_subscribe: Es similar a la publicación ingresando los mismos parámetros pero tiene procedimientos para recibir datos y crear el objeto suscripción.

• Adafruit_MQTT_Client.subscribe. Es la función que permite suscribirnos a un tópico. Se le debe pasar como parámetro el objeto de suscripción. El número máximo de
suscripciones en la librería es de 5

• MQTT_connect. Esta función permite conectarnos al servidor MQTT.

• Adafruit_MQTT_Subscribe.lastread. Nos permite leer el último mensaje al tópico al que nos hemos suscrito. La suscripción sólo almacena un mensaje. El tamaño del mensaje
tiene un límite de 20 bytes, debido a que la librería está orientada a usarse por sistemas embebidos o microcontraladores.

• Adafruit_MQTT_Publish.publish. Este procedimiento publica datos los cuales pueden ser de cualquier tipo.

• Adafruit_MQTT_Client.ping. Uno de los requerimientos de MQTT es que se debe enviar algún dato al Broker para mantener la conexión activa.
• Por defecto el tiempo es de 300 segundos y está configurado en “Adafruit_MQTT.h” en la línea “#define MQTT_CONN_KEEPALIVE 300”.
Laboratorio MQTT
3.- Crear una cuenta en Adafruit
o Ir a la página: https://io.adafruit.com/
o Clic en la pestaña <Get Started for Free>
Laboratorio MQTT
Crear una cuenta en Adafruit
o Llenar los datos y hacer clic en <create Account>
o Luego ingrese a su cuenta para iniciar una sesión.
Laboratorio MQTT
Crear una cuenta en Adafruit
o Una vez ingresado a la sesión verifique en YOUR AIO KEY su número Active Key
Laboratorios MQTT
4.- Creando una sesión en Adafruit
o Los Feeds son las entradas para los temas de MQTT, a través de los Feeds, se configuran los nombres de
cada tema, así como la ruta correspondiente. Crear un grupo para incluir los Feeds.

o Clic en la pestaña <feeds> luego clic <Actions> seleccionar: Create a New Group.
Laboratorio MQTT
o Luego dirigirse al grupo, dando clic en el nombre del grupo <UPC>.
Laboratorio MQTT
o Crear un nuevo Feed haciendo clic en <Actions> y luego en <Create New Feed>
Laboratorio MQTT
o En la ventana emergente escribir Name: “TEMPERATURA” y dar clic en <create>
o Repetir el proceso para incluir el feed “HUMEDAD”.
Laboratorio MQTT
5.- Dashboard
o El Dashboard es la interfaz a través de la cual se visualiza e interactúa con los Feeds. Para este caso, se creará una interfaz
sencilla para visualizar los datos de los sensores de temperatura y humedad.
o Dar clic en <Actions> para crear un nuevo Dashboard
o Dar clic en <Create a New Dashboard> para crear un nuevo Dashboard
Laboratorio MQTT
o Escribir Dashboard-UPC, dar clic en <Create>
o Observar la inclusión del Dashboard
Laboratorio MQTT
o Dar clic en <Dashboard-UPC> de color azul
o Se observará el panel de configuración al lado derecho

Delete dashboard

Create new Block

Edit dashboard layout


Laboratorio MQTT
o Crear un nuevo bloque, dar clic <signo +>

o Elegir Gauge o Se despliega la Humedad y temperatura, se elige temperatura primero


o Clic en <Next step>

o Elegir y dar clic en el signo (+) UPC


Laboratorio MQTT
o Se despliega una ventana ”Block settings”, escribir los datos mínimos:
o Block Title = Temperatura
o Gauge Min Value = 0
o Gauge Max Value = 60
o Test Value = 45
o Dar click en el botón <Create Block>
Laboratorio MQTT
o Crear un nuevo bloque, dar clic <signo +>

o Elegir Gauge o Se despliega la Humedad y temperatura, se elige humedad


o Clic en <Next step>

o Elegir y dar clic en el signo (+) UPC


Laboratorio MQTT
o Se despliega una ventana ”Block settings”, escribir los datos mínimos:
o Block Title = Humedad
o Gauge Min Value = 0
o Gauge Max Value = 100
o Test Value = 45
o Dar click en el botón <Create Block>
Laboratorio MQTT
o Crear un nuevo bloque, dar clic <signo +>

o Se despliega la Humedad y temperatura, se elige humedad


o Clic en <Next step>

o Elegir y dar clic en el signo (+) UPC


Laboratorio 1 MQTT
Programa publicador en MQTT (NodeMCU)

P u b lic a

Bro ke r
Io.a d a fru it.c o m

Clie nte p ub lic a d o r


Laboratorio 1 MQTT
Programa publicador en MQTT (NodeMCU)
Laboratorio 1 MQTT
Programa publicador en MQTT (NodeMCU)
Laboratorio 1 MQTT
Programa publicador en MQTT (NodeMCU)
Laboratorio 1 MQTT
Programa publicador en MQTT (NodeMCU)
https://io.adafruit.com/Rasensor/dashboards/dashboard-upc
Laboratorio 1 MQTT
Programa publicador en MQTT (ESP32)
Laboratorio 1 MQTT
Programa publicador en MQTT (ESP32)
Laboratorio 1 MQTT
Programa publicador en MQTT (ESP32)
Laboratorio 1 MQTT
Programa publicador en MQTT (ESP32)
Laboratorio 2 MQTT
Programa Suscriptor en MQTT

o Incluir un nuevo feed dando clic en <Action> y luego clic en <Create a New Feed>
Laboratorio 2 MQTT
Programa Suscriptor en MQTT
o Configurar el nuevo feed, ponerle nombre BOTON e incluirlo en el Dashboard-UPC
Laboratorio 2 MQTT
Programa Suscriptor en MQTT
o Nuevo panel Dashboard-UPC
Laboratorio 2 MQTT
Programa Suscriptor en MQTT

S us c rib e

Bro ke r
P u b lic a
Io.a d a fru it.c o m

Clie nte p ub lic a d o r


Laboratorio 2 MQTT
Programa Suscriptor en MQTT
Laboratorio 2 MQTT
Programa Suscriptor en MQTT
Laboratorio 2 MQTT
Programa Suscriptor en MQTT
Laboratorio 2 MQTT
Programa Suscriptor en MQTT
Programa Cliente suscriptor en MQTT
Laboratorios MQTT
Ejercicio propuesto
1.- Realizar el monitoreo de señales de temperatura, humedad de un sensor DHT22 usando un dashboard
del tipo gráfico
Preguntas ?

Sistemas Embebidos
Mag. Ing. Rubén Acosta
[email protected]

También podría gustarte