IoT Worlds
MQTT
BlogDispositivo inteligente

El significado de MQTT para conectar dispositivos IoT con aplicaciones web

Con todos los protocolos de mensajería disponibles, puede ser difícil elegir solo uno. Y con tantas opciones disponibles, es muy fácil encontrarse en una situación en la que pruebe una que no funcione para usted o su equipo. Mqtt es un protocolo liviano que solo requiere clientes y corredores, por lo que es perfecto para situaciones en las que no desea problemas. ¡Este artículo explorará de qué es capaz este protocolo y cómo logra estas cosas!

¿Qué es MQTT?

Mqtt es un protocolo de mensajería ligero que solo requiere clientes y corredores. Es perfecto para situaciones en las que no desea problemas ni problemas, ya que requiere muy poco de usted.

¿Qué es un protocolo de mensajería?

Un protocolo de mensajería es un conjunto de reglas que se utilizan para permitir que las aplicaciones en diferentes máquinas se comuniquen. Mqtt fue diseñado específicamente para Internet de las cosas (IoT). Con una gama tan amplia de otros protocolos disponibles, puede parecer extraño crear otro para este propósito. Pero, dado que tantos dispositivos y servicios dependen de este campo, ¡es probable que veamos más y más de ellos con el tiempo!

¿Qué tiene de bueno MQTT?

Mqtt es verdaderamente único, porque te ofrece mucho con casi nada. No necesita un servidor o reenviador dedicado como muchos otros protocolos, lo que significa que tampoco tendrá problemas de infraestructura. Todo lo que necesita es un corredor ya existente y cualquier hardware con conexión a Internet. Gracias a la calidad de su trabajo y lo ligero que es, este protocolo se ha ido haciendo cada vez más popular. Debido a que es de código abierto y de uso gratuito, puede comenzar fácilmente sin tener que pagar ninguna tarifa o costo de suscripción. Y con el soporte de intermediario integrado en la biblioteca MQTT para Arduino, estamos emocionados de ver qué excelentes productos vendrán en nuestro camino.

¿Cuáles son las características de MQTT?

Mqtt es uno de los mejores ejemplos de un protocolo de mensajería simple y liviano que encontrará. Su principal punto de venta es lo fácil que es de usar: cualquier dispositivo con conexión a Internet puede aprovechar lo que este protocolo tiene para ofrecer. Pero hay algo más que la facilidad de uso de este protocolo. ¡Exploremos qué más puedes esperar de él!

Ejemplos de uso de MQTT

una. Dispositivos IoT en una fábrica que controla bombas y válvulas

B. Una estación meteorológica con un sensor que informa a una base de datos en la nube

C. Un sistema de alarma que informa cuando las puertas se abren o cierran

D. Algunas luces en una oficina se encienden cuando se detecta movimiento

1. ¿Qué es MQTT y cuáles son sus características?

MQTT son las siglas de Message Queuing Telemetry Transport, que puede sonar complicado pero simplemente significa que es una forma en que los dispositivos IoT se comunican entre sí a través de Internet. Se ejecuta sobre TCP/IP como HTTP, SMTP, etc., pero a diferencia de HTTP, que es para comunicarse a través de Internet, MQTT se usa con dispositivos que están conectados entre sí con una red, generalmente una red IP. Se usa más comúnmente en IoT con dispositivos integrados de baja potencia que se conectan a cosas como placas Raspberry Pi o Arduino.

2. ¿Cómo funciona?

Funciona como un correo electrónico. Un dispositivo IoT publica un mensaje en un tema. Es como enviar un correo electrónico a alguien, pero en lugar de una persona, es un nombre de tema. El mensaje puede tener hasta 2 kb de datos y se envía como un paquete.

Un segundo suscriptor de MQTT escucha paquetes con su propia ID única o ID de cliente. Entonces hace algo con el mensaje. Es como cuando alguien recibe un correo electrónico, hace algo con él; leerlo, enviarlo a otro lugar, etc.

MQTT tiene un nivel de calidad de servicio (QoS), lo que significa que puede haber diferentes niveles de prioridad para los mensajes. El cliente establece el nivel de QoS y cada paquete enviado tiene ese nivel de prioridad.

3. Beneficios de MQTT

Es liviano, se ejecuta en TCP/IP, menos sobrecarga que HTTP

Los mensajes se almacenan en una cola hasta que puedan enviarse a su dispositivo de destino

Tiene soporte de reconexión incorporado.

Cada cliente puede tener su propia configuración de seguridad para autenticación y encriptación

QoS permite que los diferentes tipos de mensajes tengan diferentes niveles de prioridad

4. Aplicaciones de MQTT

Algunos ejemplos de cómo se está utilizando en el mundo real es con M2M Alliance, un proyecto que tiene como objetivo conectar «cosas» con una plataforma segura para transferir datos entre dispositivos. Otro caso de uso es con el proyecto CEPH. Este es un sistema de almacenamiento en la nube que puede almacenar y compartir archivos simultáneamente con múltiples usuarios. Utiliza MQTT para asegurar el acceso distribuido mediante el cifrado de datos, lo que permite transferirlos entre dispositivos IoT utilizando varias puertas de enlace sin tener que preocuparse por la seguridad de los datos.

5. Primeros pasos con MQTT

Lo primero que se necesita es un cliente MQTT; esta es la aplicación que envía y recibe mensajes. La fundación Raspberry Pi tiene una guía para comenzar con MQTT en su dispositivo Pi. También hay otras guías disponibles, como esta de Hackster, que le brinda el código para ejecutar en el lenguaje de programación Python.

Los mejores cursos en línea de MQTT

  1. Dominar MQTT
  2. Protocolo maestro MQTT
  3. Desarrollar la aplicación de Android del cliente MQTT
  4. Clase magistral de MQTT
  5. Dominar el protocolo MQTT: una guía de nivel principiante a avanzado
  6. IoT: MQTT con Adafruit, App Inventor y ESP8266
  7. MQTT Nodemcu (ESP8266) con Nodered, Wifi y Bluetooth

TLS frente a SSL para crear un bróker MQTT

Ventajas de usar TLS:

-Seguridad: TLS proporciona una conexión segura entre el cliente y el corredor. Esto ayuda a proteger contra los ataques de intermediarios y las escuchas.

-Autenticación: TLS proporciona autenticación del corredor y del cliente, lo que ayuda a garantizar que solo los clientes autorizados puedan conectarse al corredor.

-Cifrado: TLS proporciona cifrado de datos entre el cliente y el corredor, lo que ayuda a proteger la información para que no sea vista por personas no autorizadas.

Contras de usar TLS:

-Rendimiento: TLS puede agregar sobrecarga a las comunicaciones, lo que puede reducir el rendimiento.

-Certificados: Para usar TLS, necesita certificados tanto para el cliente como para el corredor. Estos certificados pueden ser difíciles de obtener y su uso puede ser costoso, lo que puede aumentar el costo del uso de TLS.

Ventajas de usar SSL:

-Seguridad: SSL proporciona una conexión segura entre el cliente y el corredor, al igual que TLS. También ayuda a proteger contra los ataques de intermediarios y las escuchas.

-Certificados: dado que SSL se basa en TLS, puede usar los mismos certificados para cifrar el tráfico.

Contras de usar SSL:

-Rendimiento: el cifrado entre el cliente y el intermediario agregará una sobrecarga a las comunicaciones, lo que reduce el rendimiento.

-Uso de memoria: el protocolo SSL utilizará más memoria que otros protocolos porque mantiene una sesión de cifrado/descifrado con el intermediario.

-Problemas de versión: SSL es un protocolo más antiguo y no es compatible con algunas de las características que proporciona TLS (por ejemplo, cifrados más nuevos).

Como puede ver, TLS y SSL brindan seguridad, autenticación y encriptación para la comunicación entre clientes y corredores; sin embargo, lo hacen de maneras ligeramente diferentes. No hay un claro ganador cuando se trata de decidir si debe usar TLS o SSL para su MQTT Broker, ya que la decisión dependerá de lo que necesite de su infraestructura y cuánto tiempo/dinero tenga disponible para gastar.

En conclusión, diría que hay una respuesta correcta dependiendo de las necesidades del proyecto. En este caso es mejor utilizar TLS, ya que aporta más ventajas que SSL.

Las 5 razones principales para usar el protocolo MQTT en sus proyectos de IoT

MQTT es un protocolo de mensajería de máquina a máquina (M2M), diseñado para dispositivos con recursos limitados, que conecta los dispositivos a la nube.

1. Es liviano y fácil de usar: MQTT es un protocolo de mensajería de publicación/suscripción que está diseñado para ser liviano y fácil de usar.

2. Ocupa poco espacio: MQTT utiliza aproximadamente 1/10 del ancho de banda de HTTP, lo que lo hace ideal para aplicaciones IoT con recursos de red limitados.

3. Admite QoS: MQTT admite Quality of Service (QoS), lo que garantiza la entrega de mensajes con la latencia o calidad deseada.

4. Puede ejecutarse en cualquier red: MQTT es un protocolo multiplataforma que puede ejecutarse en WiFi, Bluetooth Low Energy (BLE) o redes celulares 2G/3G.

5. Tiene varias bibliotecas cliente disponibles en muchos lenguajes de programación: Hay bibliotecas cliente para C, C++, JavaScript, Arduino IDE, Python y Java.

¿Cómo configurar un Broker MQTT usando un Contenedor Docker en su PC o un servidor VPS?

MQTT es un protocolo de mensajería de máquina a máquina (M2M)/»IoT», diseñado como un transporte de mensajería de publicación/suscripción extremadamente ligero. Es útil para conexiones con ubicaciones remotas donde se requiere una huella de código pequeña y/o el ancho de banda de la red es escaso.

En este artículo, le mostraremos cómo configurar un agente MQTT utilizando un contenedor Docker en su PC o un servidor VPS.

Docker es un motor de creación de contenedores que lo ayuda a implementar fácilmente sus aplicaciones con todas sus dependencias. Proporciona un entorno coherente en cada host de Docker, le permite ahorrar tiempo y mejorar la portabilidad de su código entre varias distribuciones de Linux. Por ejemplo, si alguna aplicación depende de una gran cantidad de bibliotecas del sistema o de algunas versiones de bibliotecas raras y, por lo tanto, no es fácil de transportar, simplemente puede empaquetarlo todo e implementarlo como un contenedor de Docker.

1) Instalación de Docker para Windows/Mac

Docker está disponible para usuarios de Microsoft Windows y Mac OS X. Puede descargar la versión adecuada desde aquí: https://docs.docker.com/docker-for-windows/install/.

2) Instalar Docker-compose en su host

Para implementar fácilmente nuestro agente MQTT casero, utilizaremos la herramienta docker-compose. Le permite definir y ejecutar aplicaciones Docker de múltiples contenedores utilizando un archivo YAML simple. Puede obtener más información sobre docker-compose aquí: https://docs.docker.com/compose/.

Puede descargar la herramienta docker-compose desde aquí: https://github.com/docker/compose/releases/. Una vez hecho esto, debería poder ejecutar el comando ‘docker-compose’ en su terminal y verificar su versión o usar cualquiera de sus subcomandos.

Terminología básica de Docker para este artículo:

1) El «contenedor Docker» es el proceso que se ejecuta en segundo plano cuando ejecuta una imagen con el comando de ejecución docker. Una instancia en ejecución de una imagen se denomina «contenedor», con respecto a su creación en la construcción de la ventana acoplable.

2) «Imagen acoplable» es una plantilla de solo lectura con instrucciones para crear un contenedor acoplable. Está compuesto por una serie de capas del sistema de archivos que representan diferentes estados de la imagen final que queremos crear.

3) El comando copy at docker build construye una imagen leyendo su descripción de un Dockerfile en el directorio de trabajo actual y luego ejecutando el comando apropiado en una nueva capa encima de la imagen actual.

4) Los «volúmenes» son carpetas que le permiten asignar carpetas locales en su máquina host a directorios dentro de sus contenedores docker. Esto es útil si, por ejemplo, desea almacenar algunos datos sobre su contenedor o archivos de configuración. Puede crear un volumen especificando la ruta de la carpeta desde su sistema host mediante la ejecución de la ventana acoplable.

El archivo YAML es un archivo de configuración que contiene información para conectarse a una base de datos externa, un servidor MQTT, etc., así como información sobre cómo y qué contenedores se deben crear. Crearemos un archivo YAML para configurar nuestro corredor en la siguiente sección.

3) Creando el archivo YAML para configurar su MQTT Broker

Los archivos YAML suelen estar compuestos por varios pares clave-valor, que están conectados por dos puntos («:»). Puede obtener más información sobre YAML desde aquí: https://en.wikipedia.org/wiki/YAML#Syntax.

En nuestro caso, crearemos un archivo YAML para configurar el broker MQTT de la siguiente manera:

versión: «3»

En esta sección de YAML, definimos el nombre del contenedor como «homer-mqtt» y especificamos la imagen que debe usarse para crearlo. En este caso elegiremos la imagen “davidtgoldblatt/homer-mqtt” de Docker Hub desde aquí: https://hub.docker.com/_/homer-mqtt/.

En nuestro archivo YAML, también declaramos un par de volúmenes de la siguiente manera:

volúmenes:

– /var/run/docker.sock:/var/run/docker.sock

Estos volúmenes nos permitirán tener almacenamiento persistente para el contenedor docker, lo que permitirá que nuestra configuración persista a través de reinicios y bloqueos del servidor. Puede obtener más información sobre los volúmenes aquí: https://docs.docker.com/engine/userguide/dockervolumes/.

Para especificar los detalles de nuestra base de datos, agregamos una sección «db_addresses» con las siguientes entradas:

direcciones_db:

– «host=172.17.0.2 puerto=3306 usuario=homer dbname=homer»

En el ejemplo anterior, especificamos un host y un puerto para nuestra instancia de base de datos. Tenga en cuenta que al especificar un usuario, debe agregar un símbolo «@» antes del nombre de usuario. Esto se debe a que el nombre de usuario consta de letras y números en los sistemas Unix. Si omite eso, Docker se queja con errores como este:

tienes que escapar de caracteres especiales como @ o *

Para especificar las credenciales de nuestra base de datos, agregamos una sección «database_password» de la siguiente manera:

base de datos_contraseña: «homerun1»

En el ejemplo anterior, debe utilizar la contraseña de su elección. En caso de que desee configurar una contraseña de base de datos por primera vez, puede ver nuestra guía sobre cómo crear un nuevo usuario raíz sin contraseña aquí: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user .html

Para especificar los detalles de nuestro servidor MQTT, agregamos una sección «mqtt_server» con las siguientes entradas:

servidor_mqtt:

– nombre: host mqtt: 172.17.0.1 puerto: 8883 nombre de usuario: «homerun» contraseña: «homerun1»

En el ejemplo anterior, ejecutamos el intermediario en el puerto 8883 y usamos el nombre de usuario de «homerun» y la contraseña de «homerun1», que hemos creado en nuestra base de datos.

4) Ejecute su agente MQTT con Docker

En este paso, crearemos un contenedor docker a partir de nuestro archivo YAML y lo ejecutaremos.

Para hacer esto, cd al directorio donde tiene el archivo YAML y ejecute «docker-compose up» de la siguiente manera:

$ ventana acoplable-componer

Este comando creará un nuevo contenedor docker basado en la descripción de su archivo YAML y lo iniciará.

Si desea iniciar esto en segundo plano, use «docker-compose up -d» en su lugar. Si desea imprimir los registros de su contenedor docker, ejecute «docker-compose logs mqttclient» de la siguiente manera:

$ docker-compose logs mqttclient

También puede ver el contenedor docker en vivo en tiempo real usando «docker-compose ps» de la siguiente manera:

$ ventana acoplable-componer ps

5) Ejecutar su cliente MQTT con Docker

En este paso, crearemos un contenedor docker a partir de nuestro archivo YAML y lo ejecutaremos.

Para hacer esto, cd al directorio donde tiene el archivo YAML y ejecute «docker-compose up» de la siguiente manera:

$ ventana acoplable-componer

Este comando creará un nuevo contenedor docker basado en la descripción de su archivo YAML y lo iniciará.

Si desea iniciar esto en segundo plano, use «docker-compose up -d» en su lugar. También puede ver el contenedor docker en vivo en tiempo real usando «docker-compose ps» de la siguiente manera:

$ ventana acoplable-componer ps

6) Usando su cliente MQTT con Docker

Ahora que nuestro archivo YAML está configurado, ahora podemos comenzar a usar nuestro cliente MQTT con Docker.

Para hacer esto, vaya al directorio donde tiene su archivo YAML y ejecute «docker exec» de la siguiente manera:

$ docker exec -it mqttclient /bin/bash

Ahora debería ver un directorio llamado «/home/homerun» (que es el directorio de inicio de nuestro contenedor docker) y debería estar dentro de ese directorio.

Ahora puede ver sus bases de datos escribiendo «mysql -uroot -proot» de la siguiente manera:

$ mysql-uroot-proot

Debería ver todas sus bases de datos en la pantalla. Puede ver cómo crear un nuevo usuario raíz sin contraseña para la instancia de MySQL aquí: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user.html

Para ejecutar el comando del cliente MQTT en Docker, debe escribir «sbin/mqtt» de la siguiente manera:

$ sbin/mqtt -c /home/homerun/config.yaml

En el ejemplo anterior, especificamos un archivo de configuración con el indicador -c, que lee nuestra configuración de MQTT del archivo de configuración que hemos creado en este tutorial.

Para verificar si su cliente MQTT está en funcionamiento, puede usar «docker-compose ps» de la siguiente manera:

$ ventana acoplable-componer ps

En el ejemplo anterior, nuestro cliente MQTT se inició correctamente. Ahora debería ver todas sus bases de datos en la pantalla.

Para ejecutar el comando del cliente MQTT en Docker, debe escribir «sbin/mqtt» de la siguiente manera:

$ sbin/mqtt -c /home/homerun/config.yaml

En el ejemplo anterior, especificamos un archivo de configuración con el indicador -c, que lee nuestra configuración de MQTT del archivo de configuración que hemos creado en este tutorial.

Para verificar si su cliente MQTT está en funcionamiento, puede usar «docker-compose ps» de la siguiente manera:

$ ventana acoplable-componer ps

En el ejemplo anterior, nuestro cliente MQTT se inició correctamente. Ahora debería ver todas sus bases de datos en la pantalla y puede intentar publicar algunos mensajes para comprobar si todo funciona bien:

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt publicar -t ‘prueba’ -h 172.17.0.1 -m ‘¡hola mundo!’

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt suscripción -t ‘prueba’ -h 172.17.0.1 -u mqttuser

7) Limpieza de su cliente MQTT con Docker

Para detener su contenedor docker, debe ejecutar «docker-compose down» de la siguiente manera:

$ ventana acoplable-componer hacia abajo

8) Limpieza de su cliente MQTT con Docker Volumes

Para detener la creación de su base de datos mysql y usuario mqtt, puede usar el indicador -v.

$ ventana acoplable-componer abajo -v

También puede limpiar su entorno eliminando el directorio que contiene su archivo YAML.

¡La base de datos Mysql y el usuario mqtt se crearon con éxito! Se eliminarán automáticamente cuando elimine el contenedor docker. Ahora puede salir de este shell escribiendo «salir».

En este tutorial hemos visto cómo configurar tu cliente MQTT a través de un contenedor Docker.

Conclusión

MQTT es un protocolo de conectividad de máquina a máquina (M2M) o «Internet de las cosas». Fue diseñado como un transporte de mensajería de publicación/suscripción extremadamente liviano. MQTT es útil para conectar sensores de bajo consumo, dispositivos portátiles y otras cosas diminutas conectadas a Internet a la nube. Debido a que MQTT usa un modelo de publicación/suscripción, es perfecto para dispositivos que necesitan enviar datos con poca frecuencia o donde el ancho de banda de la red es escaso.

¿Está interesado en desarrollar su solución MQTT? Contacta con nosotros!

Related Articles

WP Radio
WP Radio
OFFLINE LIVE