MQTT
MQTT es un protocolo ligero de tipo Maquina-Maquina(Machine-to-Machine
), lo que significa que es para comunicación entre computadoras. El modelo de este protocolo es publicador-subscriptor (publish-subscribe
). Usualmente corre sobre el protocolo TCP/IP, sin embargo, esta hecho para operar en conexiones de ancho de banda limitados. Referencia wikipedia
Podemos ver en la siguiente arquitectura de manera general como funciona una arquitectura MQTT básica, con un broker
el cual gestiona todas las conexiones y envían los paquetes a su destino, y los elementos que son clientes que envían (publican) y clientes que reciben (subscriptores) los tópicos (topics
) que desean monitorizar.
Conceptos claves
Estos conceptos son vitales para comprende los nombres de cada elemento y cual es su función.
Broker (Servidor
)
El broker es equivalente al servidor, el cual gestiona todas las conexiones de los clientes, subscriptores
y publicadores
, es decir, se conectan a él; el broker
conoce a todos los clientes y sabra que publicador
manda qué dato para redireccionarlo al subscriptor
o subscriptores
correspondientes.
Cliente - Subscriptor (subscriber
)
Es el cliente que quiera recibir el mensaje
del algún publicador
por medio de un topic
.
Cliente - Publicador (publisher
)
Es el cliente que manda un mensaje
a traves de algún topic
.
Tópico (topic
)
El tópico es el nombre que se le da a la ruta por la cual se enviá o recibe un dato. Es decir, el publicador enviá su dato a traves de esa ruta (topic) y los subscriptores
que estén registrados en ese topic
recibirán la información.
Nota: Un mismo dispositivo puede ser
publisher
ysubscriber
y pueden estar recibiendo y enviando en diferentestopics
.
Brokers públicos
A traves de internet hay varios brokers
gratuitos con fines educativos y de prueba, no se recomiendan para uso en producción, o para transferencia de información sensible.
Lista de brokers
Documentación de MQTT en mosquitto
Por default se sabe que los puertos 1883 son sin encriptación
, puertos 8883 encriptado
(SSL).
Project Eclipse
mqtt.eclipseprojects.io
This is a public test MQTT broker service. It currently listens on the following ports:
1883 : MQTT over unencrypted TCP 8883 : MQTT over encrypted TCP 80 : MQTT over unencrypted WebSockets (note: URL must be /mqtt ) 443 : MQTT over encrypted WebSockets (note: URL must be /mqtt )
- mqtt.eclipseprojects.io:1883
- mqtt.eclipseprojects.io:8883
Información de eclipseprojects
HiveMQ
- Broker http://www.mqtt-dashboard.com/
- Client dashboard http://www.hivemq.com/demos/websocket-client/
- broker.hivemq.com
- mqtt: 1883
- ws: 8000
Shiftr.io
- broker.shiftr.io:1883 (mqtt)
- broker.shiftr.io:8883 (mqtts)
- broker.shiftr.io:80 (websocket)
- broker.shiftr.io:443 (websocket secure)
Mosquitto
This is test.mosquitto.org. It hosts a publicly available Eclipse Mosquitto MQTT server/broker. MQTT is a very lightweight protocol that uses a publish/subscribe model. This makes it suitable for "machine to machine" messaging such as with low power sensors or mobile devices.
For more information on MQTT, see http://mqtt.org/ or the Mosquitto MQTT man page.
The server The server listens on the following ports:
1883
: MQTT, unencrypted, unauthenticated1884
: MQTT, unencrypted, authenticated8883
: MQTT, encrypted, unauthenticated8884
: MQTT, encrypted, client certificate required8885
: MQTT, encrypted, authenticated8886
: MQTT, encrypted, unauthenticated8887
: MQTT, encrypted, server certificate deliberately expired8080
: MQTT over WebSockets, unencrypted, unauthenticated8081
: MQTT over WebSockets, encrypted, unauthenticated8090
: MQTT over WebSockets, unencrypted, authenticated8091
: MQTT over WebSockets, encrypted, authenticated
Mejores prácticas para topics https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/
Others Brokers
Más información en mqtt.org
Clientes
Existen diversas aplicaciones para poder realizar el monitoreo de los dispositivos IoT a traves del protocolo MQTT, se pueden ocupar cualquiera, pero aquí vamos a utilizar cualquiera de las siguientes
Extension de Chrome
Cliente Dashboard IoT
Hecho por Alejando Leyva