MQTT (Message Queue Telemetry Transport) es un sencillo protocolo de mensajería basado en TCP/IP que permite la transmisión de mensajes desde dispositivos al servidor. Se hace una distinción entre el servidor MQTT (“Broker”) y los clientes MQTT. MQTT es particularmente adecuado para soluciones de automatización.
Ejemplo esquemático simple:
Cliente MQTT
El cliente se conecta a un servidor MQTT a través de TCP/IP, lo que normalmente requiere un nombre de usuario y una contraseña. El cliente puede enviar fácilmente mensajes con un topic al servidor MQTT. El contenido de los mensajes no se especifica, por ejemplo, puede ser un simple mensaje de texto o un mensaje estructurado que consta de varios campos.
El cliente también puede recibir mensajes registrándose para los topic especiales. El broker entonces reenvía los mensajes para los topic registrados a los clientes MQTT existentes, siempre y cuando estén conectados en el momento del mensaje. Básicamente, el cliente puede ser un dispositivo muy simple o incluso un servidor que quiere recibir y enviar mensajes.
Broker MQTT
El broker MQTT es un servidor que puede ser visto como un centro de mensajería para todos los participantes de MQTT. El broker MQTT también administra usuarios y derechos de acceso. El broker no establece activamente conexiones con otros dispositivos MQTT, pero los clientes MQTT deben conectarse con el broker. Siempre y cuando se establezca la conexión, el broker puede enviar y recibir mensajes al cliente. Se utiliza una conexión TCP/IP para transportar los datos. Dependiendo de lo que los broker y clientes soportan, la conexión puede ser encriptada por SSL.
MQTT funciona incluso si los clientes instalados detrás de un router DSL en redes privadas inician sesión en el broker.
Los topic MQTT, Subscribe y Publish
Los topic
Los topic pueden ser vistos como un tipo de subdivisión temática de los mensajes. Normalmente se trata de una línea de texto que suele estar separada por un “/”. Sólo si un cliente se ha registrado para uno o más topic, los mensajes para estos topic son enviados por el broker a los clientes registrados.
Ejemplo de varios topic:
- /Edificio-1/Sótano/Temperatura
- /Edificio-1/Jardín/Movimiento
- /Edificio-1/Dormitorio/Detector_de_humo
Subscribe
Los clientes de MQTT pueden registrarse para uno o más topic. Este proceso se llama Subscribe.
Publish
Los clientes de MQTT pueden enviar un mensaje con un topic al broker. Este proceso se llama Publish. Sólo se puede garantizar que el broker esté conectado y reciba el mensaje. Sin embargo, al principio no se sabe si el broker envía este mensaje a otros clientes.