Protocolo MQTT: como funciona, dicas e informações importantes
Automação Industrial

Protocolo MQTT: como funciona, dicas e informações importantes

A partir de 1999, o protocolo MQTT começou a ser largamente implementado em variados segmentos de mercado, para troca de mensagens entre máquinas. Ele surgiu como uma alternativa ao HTTP, para comunicação mais simples e leve entre dispositivos remotos.

Entre suas características principais, destacam-se a sua qualidade de serviço, maior nível de segurança, facilidade de aplicação, baixa alocação de banda e compatibilidade com linguagens de programação.

Além disso, os sistemas MQTT têm níveis de serviço para gerenciar mensagens, de acordo com a sua relevância, além de garantias de entrega para os assinantes, configurando uma excelente opção para projetos de IoT.

Neste texto, abordaremos os conceitos, as vantagens e a importância deste popular protocolo. Vamos começar?

O que é o protocolo MQTT?

MQTT (Message Queuing Telemetry Transport) é um protocolo de transporte de mensagens que possibilita a comunicação entre máquinas e é amplamente usado para conectividade de IoT (Internet of Things). É aberto, leve e tem fácil implementação, sendo executado em TCP/IP ou em outros protocolos de rede.

De formato Cliente/Servidor, usa o paradigma Publish/Subscribe, em que o Cliente pode fazer “postagens/publicações” ou captar informações, enquanto o Servidor administra o envio e o recebimento desses dados.

Como surgiu o protocolo MQTT?

Foi criado no final da década de 90, por Arlen Nipper e Andy Stanford-Clark, a princípio com o objetivo de interligar sistemas de telemetria de oleodutos por satélite.

O protocolo foi desenvolvido para minimizar a largura de banda da rede e os requisitos de recursos de dispositivos restritos, proporcionando confiabilidade e maior garantia de entrega.

Hoje, é largamente difundido em todo o mundo por se tratar de um protocolo simples, de comunicação bilateral e com baixo consumo de dados. É usado por empresas, indústrias e sociedade em geral.

Para que serve o MQTT?

O protocolo MQTT é usado para estabelecer comunicação entre dispositivos, como sensores e equipamentos IoT, possibilitando troca de mensagens em redes com largura de banda restrita, mesmo em condições instáveis de conectividade.

Baseado em TCP, é ideal para comunicação máquina a máquina (M2M), pois atua em configurações de baixa largura de banda e alta latência.

Como funciona o MQTT?

O protocolo MQTT opera seguindo um modelo de publicação e subscrição, através de mensagens assíncronas baseadas em tópicos. Estes são os principais pontos do seu funcionamento:

  • Publicação e Subscrição: Neste protocolo, existem dois participantes principais: o publicador (cliente que publica mensagens) e o assinante (cliente que recebe mensagens). Os tópicos são adotados para categorizar as mensagens.
  • Broker MQTT: É o servidor central que recebe os dados dos publicadores e os encaminha para os assinantes de interesse. É responsável pelo gerenciamento dos participantes.
  • Tópicos: Funcionam como canais ou categorias de mensagens. Os assinantes se inscrevem nos tópicos específicos de seu interesse para receber as mensagens.
  • QoS (Quality of Service): O MQTT suporta diferentes níveis de QoS para assegurar a entrega dos dados.
  • Conexão Persistente: Clientes deste protocolo podem estabelecer uma conexão persistente com o broker, diminuindo a sobrecarga de restabelecimento de conexões e possibilitando uma comunicação contínua.

imagem ilustrativa da conexão MQTT

Quais são as vantagens do MQTT?

O protocolo é popular devido à sua simplicidade e por aperfeiçoar o trânsito de mensagens em redes não confiáveis e de latência baixa, garantindo comunicação eficiente e confiável.

Por usar a arquitetura Publish/Subscribe, tem elevada escalabilidade nas aplicações, permitindo que vários dispositivos façam publicações e vários assinantes possam consumir esses dados. Veja outros aspectos significativos:

Segurança

O MQTT apresenta elevado grau de segurança, suportando diferentes tipos de autenticações e mecanismos de proteção de informações. O cliente pode realizar essas configurações facilmente, direto no Broker.

Os conteúdos das mensagens deste protocolo geralmente são protegidos com o certificado SSL (Secure Socket Layer), por meio de criptografia ponta a ponta.

Baixa exigência

O consumo de memória deste protocolo é reduzido, com pouca necessidade de processamento para o transporte de mensagens.

Também é baixo o consumo de banda, com headers de mensagens consideravelmente menores do que quando usa-se o protocolo HTTP, com tamanho fixo de 2 bytes.

Devido ao publicador não enviar informações diretamente para os assinantes, não há necessidade de guardar dados ou de fazer vários envios, para cada assinante.

Apenas um envio precisa ser feito para o Broker, que irá fazer o processamento, consumindo pouca memória do publicador.

Confiabilidade

Para garantir a entrega da mensagem, podem ser usadas configurações QoS (Quality of Service), que dão qualidade ao serviço, estabelecendo uma escala que mede a importância e a necessidade do recebimento.

Vale ressaltar que não há qualidade pior ou melhor, a definição do seu nível depende do objetivo da mensagem enviada. A escala vai de 0 a 2, onde:

  • 0: significa que a mensagem deve ser recebida até uma vez e não tem confirmação de recebimento. Também não faz armazenamento de mensagens para retransmissão;
  • 1: este nível indica que a mensagem deve ser recebida ao menos uma vez e tem confirmação de entrega;
  • 2: indica que a mensagem deve ser recebida apenas uma vez e também há confirmação do recebimento.

Eficiência

A leveza, rapidez de criação e a capacidade de transportar dados de forma econômica em termos de largura de banda, tornam o MQTT uma opção muito eficaz para conectividade industrial.

Sua entrega de mensagens, forma de dispersão de dados e uso eficaz de sensoriamento e controle remoto também merecem destaque, pois permitem atender a uma série de aplicações que demandam eficiência operacional.

banner para e-books Kalatec

Baixo consumo de memória

Na contramão de outros protocolos, o MQTT tem baixo consumo de recursos, de memória e de banda, configurando pouca necessidade de alto processamento para que o transporte de mensagens seja feito.

O uso de pacotes de dados é mínimo e o consumo de energia também é reduzido, beneficiando os dispositivos envolvidos e otimizando a capacidade global da rede.

Qualidade

O protocolo assegura a entrega das mensagens ao oferecer diferentes níveis de QoS, conforme a necessidade. Desta forma, a depender dos requisitos específicos da aplicação, é possível ajustar o equilíbrio entre confiabilidade e eficiência.

Conforme vimos em tópico anterior, o MQTT disponibiliza esses três níveis de QoS: 0, 1 e 2, permitindo adequar para cada tipo de mensagem.

Qual a diferença entre o protocolo de rede MQTT e o HTTP?

Ambos permitem a troca de dados entre dispositivos e estão na mesma camada OSI, porém, sua principal diferença é o tamanho do payload. No HTTP ele é maior, o que significa que não pode ser utilizado em conexões de baixa qualidade.

Este protocolo é mais indicado para aplicações de rede tradicionais, enquanto o MQTT é adequado para cenários de IoT e comunicação entre dispositivos.

Conceitos importantes sobre o MQTT

Para entender melhor o funcionamento desse padrão OASIS, ratificado pela ISO, é preciso conhecer os elementos que o compõem.

Publish/Subscribe

Quando um dispositivo é Publish, significa que ele faz publicações de dados ou comandos pré-definidos, ou seja, é um emissor que envia os dados para um determinado tópico. Já os dispositivos Subscribe estão inscritos nos tópicos e recebem as informações publicadas pelo Publish, atuando como receptores.

Esse padrão de mensagem separa o cliente que publica do cliente que recebe, o que significa que eles não mantêm contato direto e nem ao menos precisam saber que o outro existe, já que sua conexão é feita por um Broker.

Neste modelo, a dissociação entre publicadores e assinantes permite uma comunicação dinâmica e flexível.

Broker

Importante elemento do sistema MQTT, desempenha um papel fundamental no processo de publicação/assinatura: o de servidor intermediário da informação.

Filtra todas as mensagens, recebendo-as dos sensores, enfileirando-as e distribuindo-as para cada assinante, que irá receber somente as mensagens de seu interesse.

Essa filtragem pode ser realizada de diferentes formas, baseada no assunto ou tópico, conteúdo, tipo ou classe.

Um sistema pode conter mais de um Broker, que fazem compartilhamento dos dados entre si, para direcionar as mensagens aos clientes.

Cliente MQTT

Pode ser um sensor em campo, um aplicativo em um data center ou qualquer dispositivo que seja capaz de interagir com o Broker e receber informações.

Atua postando (Publish) e recebendo (Subscriber) mensagens sobre diversos temas ou fazendo as duas coisas ao mesmo tempo, sempre necessitando de um Broker para a intermediação das mensagens.

Todas as sessões do cliente, mesmo que sejam mensagens perdidas, são mantidas pelo Broker.

Mensagens

Existem três tipos principais de mensagem disponíveis no MQTT, e cada uma tem um valor – que deve ser enviado no header para identificação:

  • Connect – tenta estabelecer conexão com o Broker e aguarda até isso acontecer;
  • Disconnect – aguarda até o cliente finalizar alguma ação que esteja realizando e finaliza a conexão TCP/IP;
  • Publish – retorna a mensagem que foi enviada pelo cliente.

Exemplos de uso do MQTT

Como configurar o MQTT?

Para configurar um servidor MQTT, siga alguns passos:

  1. Selecione um Broker, conforme sua necessidade, e o instale – os mais comuns são o Mosquitto, HiveMQ e EMQ, que devem ser instalados em um servidor ou plataforma em nuvem;
  2. Configure o Broker – faça as configurações de rede e de medidas de segurança, e defina as políticas de controle de acesso;
  3. Crie tópicos – categorize as mensagens no Broker e permita uma comunicação mais eficiente;
  4. Conecte clientes – conecte dispositivos ou aplicativos MQTT ao servidor, para posterior publicação e assinatura de mensagens, e os configure usando bibliotecas de clientes;
  5. Teste o servidor – publique e assine mensagens, verificando se a entrega está ocorrendo corretamente e de forma confiável. Não esqueça de usar conexões seguras (TLS/SSL) e mecanismos de autenticação.

Como usar o protocolo MQTT?

Para usar o protocolo MQTT é necessário o trabalho de um desenvolvedor, com conhecimentos técnicos prévios. Diferentes linguagens podem ser usadas na implementação, tais como Python e JavaScript, encontradas facilmente para download na Internet.

O Broker mais comum, como já citamos, é o Mosquitto, que pode ser baixado diretamente de seu site oficial, sendo aplicado para rodar o servidor onde o sistema será hospedado.

Depois disso, começam os testes, a partir do próprio prompt de comando do computador, onde são inscritos os clientes (sensores, por exemplo).

MQTT e a sua relação com a IoT

A Internet das Coisas (IoT) dá a objetos a capacidade de se conectarem à web. Para isso precisa de um protocolo de comunicação que permita o diálogo desses dispositivos inteligentes.

Com características como simplicidade, fácil implementação e segurança, o MQTT pode ser utilizado nessas aplicações, ajudando empresas do mundo todo a vivenciarem a Indústria 4.0.

Com esse recurso, milhões de dispositivos IoT são conectados e podem enviar informações sem elevados processamentos ou consumo excessivo de banda.

Assim, resultados positivos são alcançados, principalmente em casos em que as conexões são de baixa qualidade e há a necessidade de confiabilidade nas entregas de mensagens.

banner Kalatec

Conclusão

O MQTT se mostra como protocolo ideal para utilização em projetos que não requerem grande volume de transporte de dados e nem armazenamento.

Sua fácil implementação é um dos aspectos mais atraentes, principalmente para as infinitas aplicações de IoT, que não pedem muita largura de banda.

No geral, esse popular protocolo costuma ser escolhido por diferentes áreas de atuação, como manufatura, telecomunicações, automotiva, petróleo e gás, etc, por ser extremamente leve.

Gostou deste conteúdo? Acompanhe também as redes sociais da Kalatec para ficar sempre por dentro de assuntos do seu interesse.

Até mais!

Edilson Cravo

Edilson Cravo

Engenheiro de Aplicação da KALATEC, 25 anos de experiência com mais de 5000 visitas únicas em Indústrias. Especializado em Automação Industrial pela USP e MAUÁ. Atuei em projetos no Instituto Nuclear Brasileiro, Embraer, Rede Globo, USP (Projeto Inspire) entre outros.