MQTT son las siglas del protocolo "Message Queue Telemetry Transport". Es un protocolo diseñado por IBM para llevar a cabo el intercambio de información entre diferentes máquinas donde se requiera un consumo muy bajo de ancho de banda y pocos recursos para implementarlo. Por este motivo ha tenido muy buena acogida en los sistemas de control que necesitan conectarse con sensores de diferentes tipos y, especialmente, en el mundo del internet de las cosas.
La topología del sistema es del tipo estrella. Es decir, se utilizar un equipo haciendo las veces de nodo central (al que denominamos 'broker') que gobierna los accesos a la red de un número variable de nodos periféricos.
![imagen 1111](/images/proteus/imagen_1111.png)
El protocolo MQTT configura también la posibilidad de utilizar cifrado para las comunicaciones en la red lo que le hace más interesante aún para su utilización en el mundo del internet de la cosas.
El protocolo utiliza el concepto de 'topic' para articular las comunicaciones entre un emisor y sus receptores. Todos los nodos que quieran participar en un intercambio de datos entre ellos deben estar suscritos a un mismo 'topic'. Una vez que los nodos se han suscrito a un determinado 'topic' es posible llevar a cabo una comunicación del tipo nodo a nodo o del tipo nodo a todos (multidifusión).
Los 'topic' se estructuras de forma jerárquica. De esta manera se establecen diversas relaciones padre-hijo entre los distintos 'topic' existentes, de tal manera que si un nodo se suscribe a un determinado 'topic' recibimos la información de todos los 'topic' hijos que cuelgan de él. Por ejemplo, en la estructura mostrada a continuación si un nodo se suscribe al 'topic' Plata1 recibe la información de todos los equipos que se encuentran por debajo: Ardunino0, Arduino1 y los sensores de temperatura y ruido.
![imagen 1112](/images/proteus/imagen_1112.png)
Proteus incluye el modelo para simular la utilizacion de un módulo ESP8266 enlazado con alguna de las placas bases de Arduino. Si lo utilizamos en nuestro proyecto, tendremos disponibles para su uso en nuestros proyectos de un amplio rango de funciones que hacen que usar el protocolo MQTT sea muy sencillo.
![Imagen 7013](/images/proteus/Imagen_7013.jpg)
![Imagen 7012](/images/proteus/Imagen_7012.jpg)
Si utilizamos la herramienta de dominio público 'mosquitto' podemos simular el funcionamiento completo de nuestro equipo Arduino comunicándose con un nodo de la red simulando todo el proceso en nuestro PC sin necesidad de ningún otro tipo de hardware.
![Imagen 7014](/images/proteus/Imagen_7014.jpg)
![Imagen 7016](/images/proteus/Imagen_7016.jpg)
![Imagen 7015](/images/proteus/Imagen_7015.jpg)
![Imagen 7017](/images/proteus/Imagen_7017.jpg)