Revision 5404288 of "MQTT" on glwiki

{{Atención|1=tradución deficiente, revisión de título, conceptos, termos|data=xuño de 2019}}
{{Sen referencias|data=xuño de 2019}}
{{Revisión|data=xuño de 2019}}
{{formatoWiki}}
{{ligazóns internas}}
{{ortografía}}
{{Formato de referencias}}
{{autotrad}}
'''MQTT'''<ref>{{Cita web | title = MQTT 3.1.1 especificación | url = http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html | publisher = [[OASIS (organización)|OASIS]] | data = 10/12/2015 |data-acceso= 25/4/2017}}</ref> ('''Message Queuing Telemetry Transport''') é un protocolo de menxasería baseado en [[Padrón de publicación-subscrición|publicación-subscrición]] recollido na [[Organización Internacional para a Estandarización|norma ISO]] (ISO/IEC PRF 20922) <ref name = "ISO">{{Cita web | url = https://www.iso.org/standard/69466.html | título = ISO/IEC 20922: 2016 Tecnoloxía da información - Transporte de telemetría de Message Queue Server (MQTT) v3.1.1 | date = June 15, 2016 | website = iso.org | publisher = [[Organización Internacional para a Estandarización]] }}</ref> . Funciona sobre o protocolo [[TCP/IP]]. Está deseñado para conexións con localizacións remotas onde se require unha "pegada de código pequeno" ou o ancho de banda da rede é limitado. O [[Padrón de publicación-subscrición|padrón de mensaxería publicación-subscrición]] require un [[Bróker de mensaxería|intermediario de mensaxes]].

[[Andy Stanford-Clark]] de [[IBM]] e Arlen Nipper de Cirrus Link crearon a primeira versión do protocolo en 1999.<ref>{{Cita web | url=http://mqtt.org/2009/07/10th-birthday-party | title = 10 th birthday party | work = MQTT. org | date = July 2009 |data-acceso= 25/4/2015}}</ref>

En 2013, IBM presentou MQTT v3.1 ao corpo de especificación de [[OASIS (organización)|OASIS]] cunha carta que aseguraba que só se poderían aceptar cambios menores na especificación.<ref>{{Cita web | title = OASIS Message Comité Técnico de Queue Server Telemetry Transport ( MQTT) | url = https://www.oasis-open.org/committees/mqtt/charter.php | publisher = OASIS |data-acceso= 9/5/2014}}</ref> MQTT-SN <ref>{{Cita web|title=MQTT para redes de sensores ( MQTT- SN) Especificación do protocolo Versión 1.2|url=http://mqtt.org/MQTT-S_spec_v1.2.pdf|author=[[Andy Stanford -Clark|Stanford-Clark, Andy]]; Hong Linh Truong|website=mqtt.org|publisher=MQTT|format=PDF|page=27|date=14/11/2013|data-acceso=9/5/2014|páxina-web=|título=}}</ref> é unha variación do protocolo principal dirixido a dispositivos integrados en redes que non son TCP/IP, como [[Zigbee]].

Historicamente, o "MQ" en "MQTT" proveu da liña de produtos [[IBM MQ]] (entón ' MQSeries') de [[Message queueing|cola de mensaxes]].<ref>{{Cita web | title = IBM MQ | url=https://www.ibm.com/products/mq | publisher = [[IBM]] |data-acceso= 18 de novembro de 2013}}</ref> Con todo, non se require que a cola en si sexa compatible como unha característica estándar en todas as situacións.<ref>{{Cita web | title = Elección do protocolo de mensaxería: AMQP, MQTT ou STOMP | url = http://blogues.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.html | last = Piper | first = Andy | website = blogues. vmware.com | publisher = [[VMware]] Blogues | page = 1 | date = 19/2/2013 | data-acceso = 23/10/2013 }}{{Ligazón morta|data=febreiro de 2019 }}</ref>

Os protocolos alternativos inclúen o [[Advanced Message Queuing Protocol|Protocolo avanzado de Message Queue Server ( AMQP)]], [[Streaming Text Oriented Messaging Protocol |Streaming Text Oriented Messaging Protocol (STOMP)]], [[IETF]] [[Constrained Application Protocol]],<ref>{{Cita web | title = Protocolo de aplicación restrinxida ( CoAP) RFC 7252 | url =https://tools.ietf.org/html/rfc7252 |last1 = Shelby | first1 = Zach | last2 = Hartke | first2 = Klaus | last3 = Bormann | first3 =Carsten |website =tools. ietf. org |publisher = [[Grupo de traballo de enxeñería da internet|IETF]] | page = 1 | date = June 26, 2014 |data-acceso= 15/11/2015}}</ref> [[XMPP]],<ref>{{Cita web | title = InternetOfThings | url = https://wiki.xmpp.org/web/InternetOfThings | author = [[XMPP]] community | website = wiki.xmpp.org | publisher = XMPP wiki | page = 1 | date = Novembro 1, 2013 |data-acceso= 9 de maio de 2014}}</ref><ref>{{Cita web | title = Protocolos da internet para Smart Grid RFC 6272 | url = https://datatracker.ietf.org/doc/rfc6272/?Include_text=1 | last1 = Baker | first1 = Fred | last2 = Meyer | first2 = David | website = datatracker. ietf. org | publisher = [[Internet Engineering Task Force|IETF]] | page = 1 | date = June 21, 2011 |data-acceso= 9 de maio de 2014}}</ref> [[Data Distribution Service|DDS]],<ref>{{Cita web | url = http://portals.omg.org/dds/ | title = DDS Portal-Data Distribution Services | website = portals.omg.org | language = en |data-acceso= 14/1/2018}}</ref> [[OPC Unified Architecture|OPC UA]],<ref>{{Cita novas|url=https://blogs.microsoft.com/iot/2016/06/23/microsoft-introduces-new-open-source-cross-platform-opc-ua-support-for-the-industrial-internet-of-things/|título=Microsoft introduce novo OPC UA multiplataforma de soporte aberto para a Internet industrial de cósalas Internet das cousas|data=23/6/2016|data-acceso=13/10/2017|lingua=en|autor=}}</ref> e [[Web Application Messaging Protocol|Web Application Messaging Protocol (WAMP)]].

== Descrición xeral ==
Un sistema MQTT consiste en clientes que se comunican cun servidor, a miúdo chamado "broker". Un cliente pode ser un publicador de información ou un subscritor. Cada cliente pode conectarse ao broker.

A información organízase nunha xerarquía de temas. Cando un editor ten un novo elemento de datos para distribuír, envía unha mensaxe de control cos datos ao intermediario conectado. O axente logo distribúe a información a calquera cliente que se subscribiu a ese tema. O editor non necesita ter ningún dato sobre o número ou as localizacións dos subscritores, e os subscritores á súa vez non teñen que estar configurados con ningún dato sobre os editores.

Se un broker recibe un tema para o cal non hai subscritores actuais, descartará o tema a menos que o editor indique que o tema se reterá. Isto permite que os novos subscritores dun tema reciban o valor máis actual en lugar de esperar a próxima actualización dun editor.

Cando un cliente de publicación conéctase por primeira vez ao broker, pode configurar unha mensaxe predeterminado para que se envíe aos subscritores se o broker detecta que o cliente de publicación desconectouse inesperadamente do broker.

Os clientes só interactúan cun broker, pero un sistema pode conter varios servidores intermediarios que intercambian datos segundo os temas dos seus subscritores actuais.

Unha mensaxe de control MQTT mínimo pode ser tan pouco como dous bytes de datos. Unha mensaxe de control pode transportar case 256 megabytes de datos se é necesario. Existen catorce tipos de mensaxes definidas que se utilizan para conectar e desconectar a un cliente dun broker, para publicar datos, para acusar recibo dos datos e para supervisar a conexión entre o cliente e o servidor.

MQTT baséase no protocolo TCP para a transmisión de datos. Unha variante, MQTT- SN, úsase sobre outros transportes como UDP ou Bluetooth.

MQTT envía as credenciais de conexión en formato de texto plano e non inclúe ningunha medida de seguridade ou autenticación. Isto pode ser proporcionado polo transporte TCP subxacente usando medidas para protexer a integridade da información transferida da interceptación ou duplicación.

== Tipos de mensaxes ==
=== Conectar ===
[[Ficheiro:MQTT protocol example without QoS.svg|miniatura|300px|Exemplo dunha conexión MQTT (QoS 0) con conexión, publicación/subscrición e desconexión. A primeira mensaxe do cliente B almacénase debido ao flag de retención.]]
Espera a que se estableza unha conexión co servidor e crea unha ligazón entre os nodos.

=== Desconectar ===
Espera a que o cliente MQTT termine calquera traballo que deba facer e que a sesión [[TCP/IP]] desconéctese.

=== Publicar ===
Regresa inmediatamente ao subproceso da aplicación despois de pasar a solicitude ao cliente MQTT.

== Calidade de servizo (QoS) ==
{{Artigo principal | Calidade de servizo}}

Cada conexión ao axente pode especificar unha medida de "calidade de servizo". Estes clasifícanse en orde crecente de gastos xerais:
* Como máximo unha vez: a mensaxe envíase só unha vez e o cliente e o axente non toman medidas adicionais para confirmar a entrega (activar e esquecer).
* Polo menos unha vez: a mensaxe é reintentado polo remitente varias veces ata que se recibe o acuse de recibo (entrega confirmada).
* Exactamente unha vez: o remitente e o receptor involúcranse nun protocolo de dous niveis para garantir que só se reciba unha copia da mensaxe (entrega asegurada).
<ref>{{Cita web | url = https://www.ibm.com/support/knowledgecenter/ssmkhh_10.0.0/com.ibm.etools.mft.doc/bc62020_.htm | title = IBM Knowledge Center | website = www.ibm.com | language = en |data-acceso= 2018-01-30}}</ref>
Este campo non afecta o manexo das transmisións de datos TCP subxacentes; só úsase entre remitentes e receptores MQTT.

== Aplicacións do mundo real ==
Hai varios proxectos que implementan MQTT. Algúns exemplos son:

* [[Facebook Messenger]]. Facebook usou aspectos de MQTT en Facebook Messenger para [[Charla|chat en liña]].<ref>{{Cita web | title = Construíndo Facebook Messenger | url = https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920 | last1 = Zhang | first1 = Lucy | date = 12/8/2011 | website = facebook.com/Engineering | publisher = [[Facebook]] | pages = 1 |data-acceso= 15/10/2015 | quote = Ao manter unha conexión MQTT e enrutar mensaxes a través da nosa canle de chat, a miúdo puidemos lograr a entrega de teléfono a teléfono en centos de milisegundos, en lugar de varios segundos.}}</ref> Con todo, non está claro a cantidade de MQTT que se utiliza ou para que.
* ''[[Centro de Control Electrónico Integrado|IECC]] Escalable '', a última versión de [[DeltaRail]] do seu Sistema de Control de Sinalización IECC utiliza MQTT para as comunicacións dentro das diversas partes do sistema e outros compoñentes do sistema de sinalización . Proporciona o marco de comunicacións subxacente para un sistema que cumpre coas normas [[CENELEC]] para as comunicacións de seguridade críticas.<ref>{{Cita web|url=http://www.irse.org/knowledge/publicdocuments/3.09%20Wood%20-%20Message%20broker%20technology%20for%20flexible%20signalling%20control.pdf|last1=Wood|first1=Daren|first2=Dave|date=13/8/2012|publisher=[[Institution of Railway Signal Engineers|IRSE]]|pages=7|format=PDF|data-acceso=31/3/2014|páxina-web=irse.org|título=Tecnoloxía de intermediario de mensaxes para un control de sinalización flexible|last2=Robson|urlarquivo=https://web.archive.org/web/20140331174635/http://www.irse.org/knowledge/publicdocuments/3.09%20Wood%20-%20Message%20broker%20technology%20for%20flexible%20signalling%20control.pdf|dataarquivo=31/03/2014|urlmorta=si}}</ref>
* A plataforma [[EVRYTHNG]] IoT utiliza MQTT como protocolo [[Machine to machine|M2 M]] para millóns de produtos conectados.
* [[Amazon Web Services]] anunciou '' Amazon IoT '' baseado en MQTT en 2015.<ref>{{Cita web |title=AWS IoT - Cloud Services for Connected Devices |last1=Barr |first1=Jeff |url=https://aws.amazon.com/blogs/aws/aws-iot-cloud-services-for-connected-devices/ |website=aws.amazon.com |publisher=[[Amazon Web Services]] |pages=1 |date=8/10/2015 |data-acceso=October 21, 2015}}</ref><ref>{{Cita web |url=https://aws.amazon.com/iot |title=AWS IoT |last1= |first1= |last2= |first2= |date= |website=aws.amazon.com/iot |publisher=[[Amazon Web Services]] |pages=1 |data-acceso=July 1, 2017 }}</ref>
* A especificación estándar [[Open Geospatial Consortium]] [[SensorThings API]] ten unha extensión MQTT na norma como ligazón de protocolo de mensaxe adicional. Demostrouse nun piloto de IoT do Departamento de Seguridade Nacional de EE. UU.<ref>{{Cita web |title=S&T’s Internet of Things Pilot Demonstrates 'State of the Practical' |url=https://www.dhs.gov/science-and-technology/blog/2016/01/25/st-internet-things-pilot-demonstrates-state-practical |last1=Brothers |first1=Reginald |date=January 25, 2016 |website=dhs.gov |page=1 |data-acceso=March 31, 2016}}</ref>
* Os servizos de [[OpenStack]] Upstream Infrastructure están conectados por un bus de mensaxes unificadas MQTT con ''Mosquitto'' como axente de MQTT.<ref>{{Cita web |title=OpenStack Firehose - The unified message bus for Infra services |url=http://docs.openstack.org/infra/system-config/firehose.html |date= |website=docs.openstack.org |publisher=[[OpenStack]] Infrastructure Team |pages=1 |data-acceso=August 30, 2016}}</ref>
* [[Adafruit]] lanzou un MQTT [[servizo na nube]] gratuíto para experimentadores e aprendices de IoT chamado "Adafruit IO" en 2015.<ref>{{Cita web |title=Coming Soon: Adafruit IO |url=https://blog.adafruit.com/2014/09/16/coming-soon-adafruit-io/ |website= blog.adafruit.com |publisher=[[Adafruit Industries]] |pages=1 |date=September 16, 2014 |data-acceso=March 29, 2017}}</ref><ref>{{Cita web |url=https://io.adafruit.com/ |title=The Internet of Things for Everyone |website=io.adafruit.com |publisher=[[Adafruit]] |pages=1 |data-acceso=July 1, 2017 |quote= }}</ref>
* [[Microsoft Azure]] IoT Hub utiliza MQTT como o seu protocolo principal para as mensaxes de [[telemetría]].<ref>{{Cita web |title=Understanding Microsoft Azure MQTT Support |url=https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support/ |last1=Dotchkoff |first1=Konstantin |last2=Betts |first2=Dominic |last3=Kshirsagar |first3=Dhanashri |last4=mastermanu |first4= |last5=Damaggio |first5=Elio |website=docs.microsoft.com |publisher=[[Microsoft]] |page=1 |date=1/3/2017 |data-acceso=29/3/2017}}</ref>
* [[XIM, Inc.]] lanzou un cliente MQTT chamado ''MQTT Buddy'' en 2017.<ref>{{Cita web |url=http://mqtt.ximxim.com/mqtt-buddy-story-begins/ |title=The story of MQTT Buddy begins! |last1= |first1= |last2= |first2= |date=February 24, 2017 |website=mqtt.ximxim.com |publisher=[[XIM, Inc.]] |pages=1 |data-acceso=July 1, 2017 |quote= |urlarquivo=https://web.archive.org/web/20170723185715/http://mqtt.ximxim.com/mqtt-buddy-story-begins/ |dataarquivo=23 de xullo de 2017 |urlmorta=si }}</ref><ref>{{Cita web|url=http://mqtt.ximxim.com|title=MQTT Buddy|last1=|first1=|last2=|first2=|date=|website=mqtt.ximxim.com|publisher=[[XIM, Inc.]]|data-acceso=1/7/2017|quote=|urlarquivo=https://web.archive.org/web/20180321101707/http://mqtt.ximxim.com/|dataarquivo=21/03/2018|urlmorta=si}}</ref> É unha aplicación MQTT para [[Android]] e [[iOS]], pero non [[F- Droid]], usuarios dispoñibles en inglés, ruso e chinés.
* [[Node-REDE]] admite nodos MQTT a partir da versión 0.14, para configurar correctamente as conexións [[Transport Layer Security|TLS]].<ref>{{Cita web |url=https://nodered.org/blog/2016/06/14/version-0-14-released |title=Version 0.14 released |author=Community staff writer |date=June 14, 2016 |website=nodered.org/blog |publisher=Node-RED |data-acceso=6/7/2016 |quote=MQTT with TLS support }}</ref>
*[[Software de código aberto|O software de código aberto]] [[Domótica|domótico]] da plataforma Home Assistant está habilitado para MQTT e ofrece catro opcións para os corredores de MQTT.<ref>{{Cita web |url=https://home-assistant.io/components/mqtt/ |title=MQTT |author=Home Assistant Community |date=August 7, 2015 |website=home-assistant.io |publisher=Home Assistant Community |data-acceso=August 4, 2017 |quote= }}</ref><ref>{{Cita web |url=https://home-assistant.io/docs/mqtt/broker/ |title=MQTT Brokers |author=Home Assistant Community |date=August 7, 2015 |website=home-assistant.io |publisher=Home Assistant Community |data-acceso=4/8/2017 |quote=The MQTT component needs you to run an MQTT broker for Home Assistant to connect to. There are four options, each with various degrees of ease of setup and privacy.}}</ref>
* O marco de automatización do fogar '' ' Pimatic' 'para [[Raspberry Pi]] e baseado en [[Node. js|Node.js]] ofrece o complemento MQTT que brinda soporte completo para o protocolo MQTT.<ref>{{Cita web |url=https://pimatic.org/plugins/pimatic-mqtt |title=pimatic-mqtt |last1=Kail |first1=Marek |date=October 16, 2016 |website=pimatic.org |publisher=Oliver Schneider |data-acceso=11/8/2017 |quote= }}</ref>''
* McAfee OpenDXL baséase en MQTT con melloras nos propios intermediarios de mensaxería para que poidan comprender intrinsecamente o formato da mensaxe DXL para admitir funcións avanzadas como servizos, mensaxes de solicitude/resposta (punto a punto), conmutación por erro do servizo e zonas de servizo.<ref>{{Cita novas|url=https://www.opendxl.com/forum/index.php?thread/7-what-protocol-does-opendxl-use/ |title=What protocol does OpenDXL use? - OpenDXL|work=OpenDXL|data-acceso=13/10/2017 |language=en}}</ref><ref>{{Cita web|url=https://community.mcafee.com/nysyc36988/attachments/nysyc36988/business-documents/405/2/DXL%20Architecture%20Guide%20Rev_E.pdf |title=Architecture Guide McAfee Data Exchange Layer (DXL)|last=McDonald|first=Ted}}</ref>
* [https://thomasnordquist.github.io/MQTT-Explorer/MQTT-Explorer]{{Ligazón morta|data=febreiro de 2019 }} é unha ferramenta gratuíta de integración e descubrimento de MQTT para [[Microsoft Windows|Windows]], [[Linux]] e [[MacOS|Mac]]. Visualiza temas baseados ​​en xerarquía de temas.

== Notas ==
{{Listaref|30em}}

[[Categoría:Protocolos de Internet]]