O que é MQTT?
Message Queuing Telemetry Transport (MQTT) é um protocolo de mensagens leve e popular, baseado no modelo de publicação e assinatura, ideal para conectar dispositivos e aplicações da Internet das Coisas (IoT) ou de comunicação máquina a máquina (M2M) pela internet. O MQTT foi projetado para operar com eficiência em ambientes com baixa largura de banda ou baixo consumo de energia, sendo a escolha ideal para aplicações com um grande número de clientes remotos. Ele é usado em diversos setores, incluindo eletrônicos de consumo, indústria automotiva, transportes, manufatura e saúde.
Como o MQTT funciona?
Dispositivos ou aplicações conectados via MQTT são conhecidos como clientes. Esses clientes publicam e/ou assinam mensagens em um tópico específico ou em vários tópicos. Os clientes assinantes recebem todas as mensagens publicadas nesse tópico, permitindo uma troca de dados eficiente e tolerante a falhas entre diversos dispositivos e serviços.
No centro de uma arquitetura MQTT está um broker. O broker é um servidor responsável por monitorar os clientes (e os tópicos nos quais estão inscritos), processar mensagens e encaminhá-las aos sistemas apropriados.
Versões do protocolo MQTT
Várias versões importantes do protocolo MQTT foram adotadas como padrão. A organização OASIS gerencia as revisões do protocolo e mantém uma especificação completa para cada versão. Cada revisão do MQTT ampliou o conjunto de recursos do protocolo, por isso é importante saber a qual versão do MQTT seus dispositivos e broker estão em conformidade.
Tipos e formato de mensagens MQTT
Existem vários tipos de mensagens MQTT, e cada tipo de mensagem tem um formato específico que deve ser seguido por dispositivos e aplicações compatíveis. As revisões do protocolo MQTT variam quanto ao formato e aos tipos de mensagens. Uma lista completa dos tipos de mensagens pode ser encontrada em cada especificação do protocolo MQTT.
Os três tipos mais comuns de mensagens são CONNECT, PUBLISH e SUBSCRIBE. Cada mensagem MQTT contém um cabeçalho, uma carga útil e sinalizadores opcionais. Dependendo do tipo de mensagem, o tamanho da carga útil pode variar. Por exemplo, em uma mensagem PUBLISH, a carga útil contém os dados que serão enviados a todos os dispositivos assinantes, e o tamanho do campo de dados afeta diretamente o tamanho da mensagem. Por padrão, os dispositivos MQTT se conectam pela porta 1883 sem segurança ou pela porta 8883 quando a criptografia SSL/TLS está habilitada.
Qual é um exemplo de MQTT em ação?
Os carros inteligentes são um ótimo exemplo do MQTT em ação. À medida que as montadoras adicionam novos recursos para oferecer suporte a tudo, desde diagnósticos remotos e gerenciamento de frotas até pagamentos de combustível e entretenimento, o MQTT tornou-se um padrão comum para carros conectados. Ao contrário do protocolo HTTP (Hypertext Transfer Protocol), o MQTT consegue manter uma sessão persistente mesmo quando um carro entra e sai de áreas sem cobertura ou quando sua conexão muda de torre de telefonia celular. O MQTT também oferece suporte à comunicação bidirecional, facilitando o envio e o recebimento de dados pelo carro e pelo aplicativo na nuvem sem que um precise esperar pela resposta do outro.
Qual é a diferença entre HTTP e MQTT?
HTTP e MQTT são protocolos de rede usados para transmitir dados pela internet. Vamos analisar as diferenças entre eles.
HTTP
- Protocolo de solicitação-resposta no qual um cliente envia uma solicitação a um servidor, e o servidor responde com os dados solicitados.
- Projetado principalmente para transmitir conteúdo da Web (como documentos HTML, imagens e dados de formulários) entre servidores Web e navegadores.
- Exemplo: um navegador da web (o cliente) envia uma solicitação a um servidor web, e o servidor responde com dados na forma de uma página da web.
MQTT
- Protocolo leve de mensagens baseado no modelo de publicação e assinatura, no qual os clientes assinam tópicos e recebem mensagens publicadas nesses tópicos por outros clientes.
- Projetado para topologias de rede e dispositivos em que a baixa largura de banda, a estabilidade da conexão e o consumo de energia são fatores importantes.
- Exemplo: o cenário do carro inteligente acima.
Por que usar MQTT na Internet das Coisas (IoT)?
Muitos recursos do MQTT fazem dele o protocolo ideal para a troca de mensagens entre dispositivos de IoT (as “coisas” da Internet das Coisas) e sistemas de backend. Aqui, destacamos quatro recursos:
- Leve – O MQTT ocupa pouco espaço de código, sendo ideal para dispositivos com capacidade limitada de processamento e memória, como sensores.
- Confiável – Muitos dispositivos de IoT se conectam por redes celulares. O MQTT é um protocolo adequado para redes de baixa largura de banda, que exigem mensagens compactas e usam menos dados. Isso torna o MQTT mais confiável, mesmo quando a largura de banda da rede é limitada ou instável.
- Escalável – O modelo de publicação e assinatura pode ser facilmente ampliado com a adição de dispositivos e sistemas de backend. Um exemplo de um único dispositivo que publica dados em duas redes de backend distintas (assinantes) é um medidor inteligente residencial que envia dados de consumo tanto aos sistemas da concessionária, para fins de faturamento, quanto a um aplicativo voltado ao cliente, que o proprietário pode acessar para acompanhar o consumo de energia de sua residência.
- Seguro – As mensagens MQTT podem ser criptografadas com o protocolo padrão Transport Layer Security (TLS) e oferecem suporte a credenciais que podem ser usadas para autenticação. Isso torna o MQTT um protocolo de mensagens seguro para aplicações de IoT que lidam com informações confidenciais, como leituras de monitoramento de saúde provenientes de diversos dispositivos médicos.
Qual protocolo de transporte o MQTT utiliza?
O MQTT utiliza o Protocolo de Controle de Transmissão/Protocolo de Internet (TCP/IP) como protocolo de transporte subjacente. Esse protocolo de rede amplamente utilizado garante que as mensagens sejam enviadas de forma confiável entre clientes e brokers.
Há vários motivos pelos quais o TCP/IP é considerado confiável e eficiente:
- Detecção e correção de erros – Diversas técnicas verificam a integridade dos pacotes de dados, e mecanismos de retransmissão permitem recuperar pacotes perdidos.
- Controle de fluxo – Os dados são transmitidos em taxas ideais para cada rede, evitando atrasos na transmissão e promovendo uma comunicação eficiente.
- Multiplexação – Vários fluxos de dados podem ser enviados por uma única conexão, permitindo que vários aplicativos usem a mesma conexão simultaneamente.
- Compatibilidade – Funciona com uma ampla variedade de dispositivos e sistemas operacionais.
- Escalabilidade – Projetado para funcionar em redes grandes e complexas sem comprometer o desempenho, mesmo ao lidar com grandes volumes de tráfego.
Embora seja a opção mais comum, o TCP/IP não é a única alternativa para o transporte de mensagens MQTT. O protocolo MQTT também funciona por meio do Protocolo de Datagrama do Usuário (UDP) e de WebSockets.

