# MQTT

MQTT es un protocolo dentro de los protocolos entre máquina a máquina M2M. MQ significa Message Queue, son mensajes que se publican y otros se suscriben. Llegan a un servidor que también se llama **Broker** o Router, los va almacenando en una cola y se eliminan cuando son entregados. Un ejemplo fácil de entender son los mensajes SMS, que mientras no estas conectado, tus mensajes están en un servidor, y cuando te conectas, se descargan tus mensajes en tu móvil. Las últimas siglas TT significa Telemetry Transport

[![protocolos-rRPC.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/protocolos-rrpc.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/protocolos-rrpc.png)

Fuente Luis Llamas CC-NC-BY-SA [https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/](https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/)

> *Los clientes inician una conexión TCP/IP con el broker, el cual mantiene un registro de los clientes conectados. Esta conexión se mantiene abierta hasta que el cliente la finaliza. Por defecto, MQTT emplea el puerto 1883 y el 8883 cuando funciona sobre TLS.*

*Fuente Luis Llamas CC-NC-BY-SA [https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/](https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/)*

TCP/IP son los protocolos de comunicación en Internet. TLS Transport Layer Security es un protocolo que se añade para asegurar la privacidad y seguridad de los datos. Por eso hay que enviar un usuario y una contraseña para conseguir esta seguridad.

En los mensajes, se añade un texto que haga de filtro, que se llama **topic**, este topic permite al broker filtrar de todos los mensajes que se reciben a qué clientes hay que entregar estos mensajes. Estos topic suelen estar jerarquizados, por ejemplo <span style="text-decoration: underline;">Casa/Cocina/Temperatura </span>y un cliente puede estar suscrito a <span style="text-decoration: underline;">Casa/+/Temperatura</span> por lo que recibiría los datos de <span style="text-decoration: underline;">Casa/Cocina/Temperatura</span> pero también los de <span style="text-decoration: underline;">Casa/Salon/Temperatura</span>, etc... Si quieres saber más de los tópic te recomendamos la página [https://www.luisllamas.es/que-son-y-como-usar-los-topics-en-mqtt-correctamente/](https://www.luisllamas.es/que-son-y-como-usar-los-topics-en-mqtt-correctamente/)

El MQTT se ha hecho muy popular en los dispositivos electrónicos, porque:

- Es **libre**, al principio en 1999 era un protocolo propietario y se usaba para la industria petrolera, pero desde el 2010 se liberó y su consecuente popularidad que se ha convertido en un estándar de comunicación electrónica.
- Es **sencillo**, esto es importante para no pedir mucho ancho de banda
- Consume **poca potencia**, esto es importante pues la mayoría están conectados todo el tiempo.
- Un protocolo con una capa de **seguridad**, robusta y largamente testada.

Para saber más te recomendamos la página de Luis Llamas [https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/](https://www.luisllamas.es/protocolos-de-comunicacion-para-iot/)

##### <span style="color: rgb(22, 145, 121);">**Y el broker ¿de donde?**</span>

Puedes montarte tu propio broker en un ordenador, pues es código abierto, por ejemplo instalar Mosquitto [https://mosquitto.org/](https://mosquitto.org/) en una raspberry.

O bien usar brokers MQTT gratuitos y públicos en Internet, con sus limitaciones de anchos de banda o número de conexiones... como HIVEMQ Info: [http://www.mqtt-dashboard.com/](http://www.mqtt-dashboard.com/) con la dirección Broker.hivemq.com o también el propio Mosquito [https://mosquitto.org/](https://mosquitto.org/) con la dirección test.mosquitto.org

<p class="callout warning">Tenemos que tener en cuenta que los servidores MQTT públicos gratuitos no son seguros, cualquiera puede suscribirse a nuestros mensajes y publicar en ellos por lo tanto enviar órdenes. Evitar usar estos brokers en sistemas que no sean educativos y de pruebas.</p>

El protocolo MQTT también se usa en Domótica, por ejemplo[ aquí en el curso de Raspberry apartado domótica](https://libros.catedu.es/books/raspberry-pi/page/43-domotica)

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/YPS5xI6Bx3I" width="560"></iframe>

{{@5685}}