Firtec

Cuando los enfoques informáticos clásicos (servidores web, socket de red, etc) resultan ser demasiado “pesados” por la cantidad de recursos necesarios para sostenerlos o resultan ser soluciones exageradas para resolver una simple comunicación de algunos Bytes, entran en juego protocolos como MQTT (Message Queue Telemetry Transport), ideado por IBM es un protocolo usado para la comunicación máquina a máquina (M2M).
Específico para Internet de las cosas, orientado a la comunicación de sensores y dispositivos con una tasa de transferencia de datos baja, necesita muy poco ancho de banda y puede ser utilizado en la mayoría de los dispositivos con escasos recursos (CPU, RAM, etc).

La arquitectura de MQTT sigue una topología de estrella, con un nodo central que hace de servidor o "broker" normalmente con una capacidad teórica de hasta 10000 clientes. El broker es el encargado de gestionar la red y de transmitir los mensajes, para mantener activo el canal, los clientes mandan periódicamente un paquete de datos y según el caso pueden esperar una confirmación del broker.
La comunicación se basa en "topics" o temas, y para que un cliente tenga acceso a la información debe estar subscrito al tema sin importar cuantos clientes estén siguiendo el tema.
Un cliente (cualquiera) puede publicar mensajes y los nodos, que deseen recibirlo deben estar subscrito a él. La comunicación puede ser de uno a uno, o de uno a muchos. Un "topic" se representa mediante una cadena y tiene una estructura jerárquica separada con '/'.

Por ejemplo, "firtec/sensor_1/temperatura" o "firtec/sensor_2/ruido". De esta forma se pueden crear jerarquías de clientes que publican y reciben datos.

Como funciona MQTT?

El funcionamiento es sencillo y sumamente ágil. El servidor o broker, recopila los datos que los publishers, los clientes o nodos que publican los tópicos. Determinados datos recopilados por el broker se enviarán a determinados nodos que previamente así se lo hayan solicitado al broker.

El principio de intercambio se parece mucho al de Twitter donde los publishers envían los mensajes a un canal llamado topic. Los suscriptores pueden leer esos mensajes. Los topics (o canales de información) pueden estar distribuidos jerárquicamente de forma que se puedan seleccionar exactamente las informaciones que se desean. Los mensajes enviados por los nodos pueden ser de todo tipo pero no pueden superar los 256 Mbit.

Por ejemplo el tópico firtec/oficina_1/temperatura comunicará la temperatura de oficina_1 si se suscribe un nodo a ese tópico el sensor de temperatura presente en la oficina_1 publicará periódicamente en ese tópico la temperatura registrada.

Si un nodo se suscribe al topic firtec/oficina_1/#, recibirá todos los datos de la oficina (por ejemplo, luminosidad, humedad, temperatura, etc). Si se suscribe al topic firtec/#, recibirá todos los datos de los sensores de firtec.


En este ejemplo se ha conectado un sensor para medir la cantidad de luz visible al ojo humano, los datos son "publicados" en la red MQTT interna de tal forma que todos los subscritos al tema (tópico) pueden acceder a los datos del sensor.
Con esta tecnología podemos publicar datos en la red con cualquier microcontrolador (PIC, Atmel, ARM, etc) solo se necesita un broker MQTT y que los dispositivos accedan a la red por ejemplo a través de un puente ESP32 y su conexión Wi-Fi.


(Ejemplo sacado del material de estudio del curso "Internet de las Cosas").