Semana 13
Semana 13
Semana 13
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 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.
Cliente-2MQTT-Publisher
Servidor
io.adafruit.com
LTE/GPRS
Cliente-3 MQTT-Publisher
Led
Client-1 MQTT-Subscriber
Laboratorios MQTT
• 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
• 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
P u b lic a
Bro ke r
Io.a d a fru it.c o m
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
Sistemas Embebidos
Mag. Ing. Rubén Acosta
[email protected]