Foi desenvolvido pela IBM / Eurotech no final dos anos 1990 para uso em sistemas SCADA (tele supervisão e telecomando). Em novembro 2014, após 18 meses de trabalho, a Especificação do MQTT v 3.1.1 foi aprovada como um padrão homologado pela OASIS (Organization for the Advancement of Structured Information Standards).
MQTT é um protocolo para troca de mensagens, baseado no
modelo publicar – subscrever. Por ser leve é muito adequado para ser usado em
sistemas embarcados (embedded) na comunicação remota M2M (Machine-to-Machine)
usando o Wi-Fi (wireless) como meio.
Pelo fato do cliente que publica estar desacoplado do
cliente que assina, o broker faz a função de desacoplamento, este protocolo é
muito bom para uso em redes pouco confiáveis e com pouca largura de banda.
O MQTT define dois componentes: o broker MQTT (servidor) e o
cliente MQTT.
Um cliente MQTT pode criar tópicos no broker, publicar e
assinar os tópicos.
O broker armazena os dados dos tópicos e envia estes dados aos clientes MQTT que os assinam.
O broker armazena os dados dos tópicos e envia estes dados aos clientes MQTT que os assinam.
O cliente MQTT pode ter duas funções: publicar dados ou
assinar dados no broker MQTT, definindo ou usando tópicos.
O broker MQTT tem duas funções: receber os dados de um
cliente MQTT e armazená-los nos tópicos; e publicar dados atualizados dos
tópicos nos clientes MQTT que os subscrevem.
As mensagens MQTT são transmitidas através do TCP/IP, ou
seja, o cliente e o broker fazem uma conexão TCP para que as mensagens possam
ser transmitidas.
Um único broker MQTT pode suportar milhares de clientes
MQTT. Modelo publicar – subscrever permite a entrega de mensagens
de um – para – muitos.
O MQTT permite implementar QoS (qualidade de serviço), os
protocolos de criptografia TLS/SSL (certificado X509), e também suporta
autenticação através de usuário / senha.
O plug-in IoT Gateway do KEPServerEX traz um cliente MQTT
com as capacidades de publicar e assinar. Permitindo disponibilizar acesso aos
dados de dispositivos de automação à aplicativos com suporte ao MQTT. Os dados
são formatados usando o padrão JSON.