MQTT

De Viquipèdia
Salta a la navegació Salta a la cerca
Infotaula de programariMQTT
Creador/sAndy Stanford-Clark i Arlen Nipper de Cirrus Link
Versió inicial1999
Versió estable3.1 / 2013
Sistema operatiuMultiplataforma
TipusProtocol
Llicènciaestàndard ISO
Part deInternet de les coses
Més informació
Lloc webWeb oficial
Stack ExchangeEtiqueta
Modifica les dades a Wikidata

MQTT[1] (Message Queuing Telemetry Transport) és un protocol de missatgeria publish-subscribe basat en el protocol TCP/IP. Inicialment desenvolupat per Andy Stanford-Clark (IBM) i Arlen Nipper (EuroTech), i després publicat com a codi obert. MQTT v3.1.1 és ara un estàndard d'OASIS, l'especificació d'aquest protocol és disponible en HTML i PDF.[2][3]

Funcionalitat[modifica]

Propietats de MQTT :

  • Estàndard obert.
  • Estructura senzilla (mínim nombre de bytes per cada missatge).
  • Fiabilitat (existeix la funció QoS Quality of Service), que ens informa de l'estat de la comunicació.
  • Simplicitat (protocol que està definit en 43 pàgines).
Fig.1 Missatge tipus CONNECT

MQTT defineix un petit conjunt de missatges : [4]

Tipus de missatge Valor Descripció
CONNECT 1 Petició del client per a connectar-se al servidor (vegeu Fig1)
CONNACK 2 Reconeixement de la connexió
PUBLISH 3 Edició missatge
PUBACK 4 Reconeixement de l'edició
PUBREC 5 Edició rebuda (part 1)
PUBREL 6 Edició alliberada (part 2)
PUBCOMP 7 Edició completa (part 3)
SUBSCRIBE 8 Petició de subscripció de client
SUBACK 9 Reconeixement de subscripció
UNSUBSCRIBE 10 Petició de desubscripció de client
UNSUBACK 11 Reconeixement de desubscripció
PINGREQ 12 Petició de PING
PINGRESP 13 Resposta de PING
DISCONNECT 14 Client deconnectant

Comparativa de protocols MQTT versus HTTP[modifica]

Bechmarking de mida de trama: [5]

Acció Protocol HTTP Protocol MQTT Relació HTTP/MQTT
Rebre una unitat de dades (la mínima) 320 bytes 69 bytes 4,6
Enviar una unitat de dades (la mínima) 320 bytes 47 bytes 6,8
Rebre 100 unitats de dades (la mínima) 12600 bytes 2445 bytes 5,1
Enviar 100 unitats de dades (la mínima) 14100 bytes 2126 bytes 6,6

Bechmarking de característiques :

Característica Protocol HTTP Protocol MQTT
Model Centrat a les dades Centrat al document
Accions GET, POST, DELETE

especificació complexa

Pub/Sub/Unsub

especificació senzilla

Mida dels missatges Missatges llargs Missatges curts
Quality of service No, cal implementar en

la capa d'aplicació

3 nivells : el millor, almenys 1 cop

i exactament 1 cop

Distribució de dades NO, només 1 a 1 Sí, 1 a n

Brokers MQTT[modifica]

Fig.2 Exemple de Broker

Existeixen molts brokers MQTT disponibles, varien en la seua funcionalitat, alguns d'ells ofereixen funcionalitats addicionals.

Els principals brokers de codi obert són:

[6]

Un estudi comparatiu de les característiques d'aquests diferents brokers (ActiveMQ, Apollo, JoramMQ, Mosquitto i RabbitMQ) es troba disponible aquí.

Biblioteques de clients[modifica]

Nombroses biblioteques estan disponibles per programar clients MQTT, per a la majoria dels llenguatges (C, C++, Java, JavaScript, PHP, Python, etc.) i per a la majoria de les plataformes (Linux, Windows, iOS, Android, Arduino, etc.).[7]

El projecte Eclipse/Paho ofereix implementacions de codi obert dels protocols de missatgeria oberts i estàndards destinats a les aplicacions noves i emergents per a la comunicació M2M (màquina-a-màquina) i de l'Internet de les coses (IoT).

Aplicacions reals[modifica]

En el món real, hi ha nombrosos projectes que utilitza el protocol MQTT :

  • Facebook Messenger : Facebook ha utilitzat aspectes de MQTT en Facebook Messenger.
  • L'última versió del sistema de control de senyalització de l'IECC Scalable DeltaRail utilitza MQTT per les comunicacions entre les diferents parts del sistema i els components del sistema de senyalització.
  • CloudMQTT és un servei de missatgeria que utilitza el protocol MQTT.

[8]

Referències[modifica]

  1. MQTT 3.1.1 specification
  2. http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.pdf
  3. «MQTT Essentials» (en anglès). HiveMQ, 20-09-2015.
  4. «Programming with Reason» (en anglès). http://programmingwithreason.com.+[Consulta: 3 juliol 2017].
  5. «Internet of things» (en anglès). https://www.slideshare.net.+[Consulta: 6 juliol 2017].
  6. Podem trobar una llista dels brokers disponibles aquí.
  7. La llista de les biblioteques de clients disponibles és accessible des d'aquí.
  8. En un llibre titulat "Building Smarter Planet Solucions with MQTT and IBM WebSphere MQ Telemetry" IBM descriu diversos exemples d'aplicacions en el domini de la salut i de l'energia.