O que é MQTT e como funciona?

Introdução

A Internet das Coisas (IoT) transformou a forma como vivemos e trabalhamos, com cada vez mais dispositivos e aparelhos do dia-a-dia a ligarem-se à Internet e a comunicarem entre si. De assistentes domésticos inteligentes a rastreadores de fitness vestíveis, a IoT permite uma nova e emocionante era de conveniência, eficiência e insights por meio da tecnologia conectada.

Mas facilitar a comunicação confiável entre todos esses dispositivos em rede traz desafios formidáveis. Os protocolos HTTP tradicionais usados para tráfego da Web costumam ser muito pesados para dispositivos IoT com recursos limitados. Além disso, a necessidade de streaming de dados em tempo real significa que não podemos confiar em pesquisas periódicas de cliente/servidor.

É aqui que entra o MQTT. MQTT (Message Queuing Telemetry Transport) é um protocolo leve de mensagens de publicação/assinatura otimizado para comunicação máquina a máquina (M2M) em ambientes IoT. Sua operação eficiente e com baixa largura de banda o torna ideal para conectar dispositivos com capacidades limitadas ou conexões não confiáveis.

Neste guia completo, revelaremos o mundo do MQTT e como ele estabelece uma comunicação eficiente e em tempo real para a IoT. Abordaremos:

  • Os principais conceitos por trás do MQTT
  • Como funciona a arquitetura de publicação/assinatura
  • O papel do corretor MQTT
  • Níveis de qualidade de serviço em MQTT
  • Mensagens do protocolo MQTT e estrutura de tópicos
  • Principais benefícios do uso do MQTT para IoT
  • Aplicativos do mundo real aproveitando MQTT
  • O futuro do MQTT em tecnologias emergentes
  • Perguntas frequentes sobre MQTT

Então, vamos mergulhar e iluminar essa tecnologia transformadora!

Aprofundando-se nos fundamentos do MQTT

MQTT significa Transporte de Telemetria de Enfileiramento de Mensagens. É um protocolo de código aberto desenvolvido inicialmente em 1999 por Andy Stanford-Clark da IBM e Arlen Nipper da Arcom (agora Eurotech).

MQTT fornece um método leve de troca de dados estruturados e informações de controle entre dispositivos usando um padrão de mensagens de publicação/assinatura (pub/sub). Essas características o tornam ideal para comunicação máquina a máquina em ambientes IoT.

Arquitetura de publicação-assinatura

O padrão de mensagens pub/sub é o coração do MQTT. Ele dissocia o envio e o recebimento de mensagens.

Os editores geram mensagens e as publicam em tópicos específicos. Os assinantes expressam interesse em vários tópicos e recebem mensagens publicadas sobre esses tópicos.

Isso permite distribuição de mensagens um-para-muitos altamente escalável com sobrecarga mínima de rede. Os dispositivos publicam atualizações para um tópico, sem direcionar nenhum destinatário específico. Outros dispositivos assinam tópicos de interesse e recebem atualizações relevantes sem problemas.

Arquitetura de publicação-assinatura do MQTT

Papel do Corretor

o que é corretor mqtt

A entrega de publicação e assinatura do MQTT acontece por meio de um corretor MQTT.

O corretor é responsável por filtrar mensagens com base no tópico e distribuí-las aos clientes inscritos. Ele atua como um hub central, aceitando mensagens publicadas e despachando-as de acordo.

Usar um corretor elimina a necessidade de conexões diretas entre cada cliente. Os editores simplesmente enviam mensagens ao corretor. Os assinantes se conectam ao corretor para receber mensagens. Isto mantém a topologia de rede simples mesmo para um grande número de clientes.

O corretor também lida com outras tarefas importantes, como autenticação, permissões e persistência de mensagens. Os corretores MQTT podem ser dimensionados para lidar com um grande número de dispositivos conectados simultaneamente. As escolhas populares incluem Mosquitto, HiveMQ e AWS IoT Core.

Qualidade de serviço de entrega de mensagens

Qualidade de serviço de entrega de mensagens

Como os dispositivos IoT geralmente usam redes não confiáveis, como WiFi ou celular, o MQTT incorpora recursos para garantir a entrega confiável de mensagens. Os clientes podem especificar um nível de qualidade de serviço (QoS) ao publicar mensagens:

  • QoS 0 – Sem garantia de entrega. Mensagem enviada apenas uma vez.
  • QoS 1 – Mensagem entregue pelo menos uma vez. Pode receber duplicatas.
  • QoS 2 – Mensagem entregue exatamente uma vez. Usa um aperto de mão de 4 etapas.

Níveis mais altos proporcionam mais certeza de entrega, ao custo de mais sobrecarga de processamento. Assim, os clientes podem escolher o nível de QoS ideal para cada caso de uso. Configurações como telemetria podem usar QoS 0, enquanto mensagens de controle críticas requerem QoS 2.

Isso dá flexibilidade ao MQTT para operar com eficiência em diferentes ambientes, desde uma rede de satélite até um chão de fábrica barulhento.

Componentes principais da arquitetura MQTT

O ecossistema MQTT consiste em três componentes principais: editores, assinantes e corretor.

Editores

Os editores são clientes MQTT que enviam mensagens ao corretor. Eles empacotam os dados da carga junto com um nome de tópico que classifica a mensagem.

Por exemplo, um editor poderia ser um sensor de temperatura que envia periodicamente leituras de temperatura para o tópico “casa/quarto/temperatura”. Ou um editor baseado em eventos, como um sensor de movimento que envia alertas em tempo real sempre que detecta movimento.

Os editores estabelecem conexões com o corretor e enviam mensagens usando comandos do protocolo MQTT como CONNECT, PUBLISH e DISCONNECT.

Assinantes

Assinantes são clientes que se conectam à corretora e assinam diversos temas de interesse. O corretor entrega mensagens de qualquer editor aos assinantes desses tópicos.

Por exemplo, um assinante pode ser um sistema AC inteligente que assina “casa/quarto/temperatura” para ajustar o resfriamento de acordo. Ou um aplicativo de segurança inscrito em alertas de movimento de sensores.

Os assinantes registram assinaturas no corretor e recebem mensagens usando comandos de protocolo como CONNECT, SUBSCRIBE e UNSUBSCRIBE. As assinaturas podem incluir padrões curinga para receber mensagens de diversos tópicos.

Corretor

O broker MQTT gerencia conexões de editores e assinantes e roteia mensagens entre eles. É responsável por:

  • Aceitando conexões de rede de entrada usando TCP/IP ou WebSockets
  • Autenticando clientes e autorizando acesso
  • Receber mensagens publicadas e enviá-las para clientes inscritos
  • Manter informações de sessão e assinaturas para clientes conectados
  • Enfileirando mensagens off-line até que os clientes se reconectem
  • Comunicar-se com outros corretores para formar uma rede federada

Assim, o corretor constitui o núcleo de qualquer sistema MQTT. Ele precisa ser altamente escalável e confiável para lidar com um grande número de dispositivos e mensagens.

Corretores de código aberto populares como Mosquitto, HiveMQ e EMQ podem lidar com milhares de clientes em hardware comum. Existem também corretores de nuvem totalmente gerenciados, como AWS IoT Core e Google Cloud IoT Core.

Explorando mensagens do protocolo MQTT

O MQTT depende de um protocolo simples e leve para facilitar o envio de mensagens em tempo real entre clientes. Vamos explorar a estrutura das mensagens do protocolo MQTT e os principais conceitos envolvidos.

Tópicos MQTT

O tópico é uma parte crucial de qualquer mensagem MQTT. Os tópicos fornecem uma estrutura hierárquica para classificar e organizar mensagens.

Ao publicar uma mensagem, o cliente define o tópico para categorizar as informações. O corretor usa tópicos para filtrar mensagens e entregá-las aos assinantes.

Por exemplo, um tópico como “casa/cozinha/detector_chama_vela” identifica claramente a origem e o propósito da mensagem. Os elementos do tópico MQTT são separados por barras, com profundidade de aninhamento arbitrária.

Os tópicos podem usar curingas como #e +para assinaturas mais amplas:

  • home/kitchen/# – Receba todas as mensagens na cozinha
  • +/candle_flame_detector – Receba todas as mensagens do detector de chamas

Cargas de mensagens

A carga útil contém os dados reais que estão sendo transmitidos na mensagem MQTT. Pode ser qualquer conteúdo que varia de alguns bytes a quilobytes de dados.

Para leituras de sensores, a carga conteria o valor medido e metadados como unidades, precisão, etc. As mensagens de controle podem ter diretivas de ação ou atualizações de parâmetros na carga útil.

Para otimizar o uso de baixa largura de banda, as cargas úteis devem ser mantidas tão pequenas e eficientes quanto possível. O MQTT funciona bem em redes de baixo rendimento, uma vez que apenas o tópico e uma pequena carga útil precisam ser transmitidos.

Qualidade de serviço

Conforme discutido anteriormente, o nível de Qualidade de Serviço (QoS) é um parâmetro importante em cada mensagem MQTT. Ele determina as garantias de entrega e a sobrecarga de comunicação subjacente.

Os três níveis de QoS são:

QoS 0 – Dispare e esqueça. Mensagem entregue no máximo uma vez. Padrão para muitos aplicativos não críticos.

QoS 1 – Garante a entrega pelo menos uma vez usando confirmações. Pode receber mensagens duplicadas.

QoS 2 – Entregue exatamente uma vez ao lidar com retransmissões. Usa um aperto de mão de 4 etapas. Crítico para mensagens de controle.

O corretor armazena mensagens de QoS 1 e 2 até obter confirmação de entrega bem-sucedida aos clientes inscritos. Isso evita a perda de dados, mas gera mais sobrecarga de processamento.

Benefícios da adoção do MQTT para aplicativos IoT

O MQTT foi projetado para atender às demandas específicas de comunicação máquina a máquina em sistemas IoT. Vamos examinar algumas vantagens principais:

Leve

MQTT usa um design mínimo de cabeçalho de pacote, com comprimentos fixos de apenas 2 bytes para pacotes de controle. Isso permite maior eficiência do que cabeçalhos HTTP que usam strings ASCII.

Pacotes de controle como CONNECT e PUBLISH têm um comprimento máximo de carga útil de apenas 256 MB. Isso otimiza o MQTT para redes de baixa largura de banda e dispositivos incorporados com processamento e memória limitados.

Baixo uso de largura de banda

O MQTT minimiza o uso da largura de banda da rede, reduzindo a quantidade de dados transmitidos. Isso permite que ele funcione em redes restritas e reduz custos operacionais, como uso de dados celulares.

A sobrecarga do protocolo é reduzida eliminando transmissões desnecessárias. Por exemplo, os pacotes PUBLISH omitem o endereço do assinante – o corretor cuida da entrega. Os pings Keepalive monitoram a integridade da conexão sem transmitir dados pesados.

O uso da largura de banda aumenta linearmente com o número de clientes, em vez de exponencialmente. Isso permite suporte para grandes densidades de dispositivos.

Entrega confiável de mensagens

Os níveis de qualidade de serviço permitem transmissão confiável mesmo em redes não confiáveis, como links de satélite ou fábricas barulhentas.

Para mensagens críticas, o MQTT garante a entrega usando handshakes e confirmações. As mensagens armazenadas são encaminhadas quando os clientes se reconectam após uma queda da rede.

Esses recursos estabelecem o MQTT como uma plataforma robusta para automação industrial, monitoramento remoto de equipamentos e outras aplicações de missão crítica.

Escalabilidade

O MQTT pode ser dimensionado para um número gigantesco de clientes e mensagens usando padrões de rede eficientes.

A arquitetura de publicação-assinatura remove a sobrecarga das mensagens um-para-um entre clientes. Assinaturas curinga e filtragem baseada em tópicos otimizam a distribuição de dados.

Corretores comerciais e de código aberto utilizam técnicas como clustering para lidar com milhões de clientes simultâneos em servidores comuns.

Flexibilidade

MQTT oferece flexibilidade e personalização incomparáveis para diferentes ambientes e casos de uso.

Os clientes podem selecionar entre vários níveis de qualidade de serviço para ajustar as garantias de entrega. As hierarquias de tópicos para mensagens podem ser projetadas para se adequar a qualquer ontologia. As cargas transmitem com eficiência qualquer formato de dados.

Essa versatilidade permite que o MQTT conecte diversos dispositivos em uma grande variedade de setores – desde saúde até plataformas de petróleo!

Segurança

MQTT permite comunicação segura usando criptografia TLS/SSL para as conexões TCP subjacentes.

O controle de acesso é gerenciado usando nomes de usuário e senhas de clientes. As políticas de autorização determinam os acessos e operações de tópicos permitidos para cada usuário. Os logs de auditoria registram eventos de segurança.

Os corretores MQTT podem integrar-se a provedores de identidade externos por meio de autenticação SASL. Certificados de cliente criptografados permitem conectar dispositivos aprovados.

Padrão aberto

MQTT é um padrão ISO aberto (ISO/IEC PRF 20922) com documentação publicada abertamente. Isso garante a interoperabilidade entre clientes e corretores de diferentes fornecedores.

Existem implementações de corretores de código aberto como Mosquitto e HiveMQ. O código para bibliotecas cliente MQTT está disponível gratuitamente para todas as principais linguagens e plataformas.

Um padrão aberto evita a dependência de fornecedores e permite ampla adoção. A comunidade MQTT continua a impulsionar a evolução do protocolo.

Alotcer MQTT em ação: aplicativos IoT

O MQTT está ganhando enorme força em todos os setores à medida que a Internet das Coisas se expande. Vamos explorar alguns dos principais domínios de IoT que estão aproveitando o MQTT:

Automação residencial inteligente

Em casas inteligentes, o MQTT conecta e controla iluminação, climatização, entretenimento, segurança e outros sistemas:

  • Termostatos inteligentes publicam leituras de temperatura e ajustam o HVAC de acordo
  • Sensores de movimento enviam alertas de intrusão em tempo real
  • Os sistemas de iluminação seguem cronogramas para controlar as lâmpadas
  • Assistentes de voz usam MQTT para comandos e notificações do sistema

Plataformas de automação residencial como o Home Assistant usam MQTT como base para integração de dispositivos. Ele fornece um pipeline unificado para comunicação eficiente na rede doméstica.

IoT Industrial

Gateway industrial de IoT AR7091

Para ambientes industriais, o MQTT fornece dados importantes entre sensores, controladores e sistemas de monitoramento:

  • Os sensores publicam dados operacionais em tempo real, como temperaturas ou níveis de tanques
  • Alarmes são acionados para medições fora dos limites
  • Os sistemas de controle ajustam os parâmetros do equipamento com base nas métricas analisadas
  • Painéis visualizam agregados e análises para operadores

O MQTT resiste aos desafios das fábricas – alcance, interferência, ruído – para viabilizar a Indústria 4.0. Dados confiáveis em tempo real permitem automação e inteligência.

Vestuário

No domínio do condicionamento físico e da saúde, os wearables aproveitam o MQTT para transmitir dados de atividades rastreadas:

  • Os rastreadores de condicionamento físico publicam dados do acelerômetro, coordenadas GPS, leituras de frequência cardíaca, etc.
  • Os dados são agregados em resumos de atividades para exibição aos usuários
  • Alertas são gerados para detecção de arritmia ou falta de atividade
  • As regras de diagnóstico definidas pelo médico respondem aos limiares dos biomarcadores

MQTT permite streaming eficiente de dados e alertas biométricos. Isso facilita o desenvolvimento de aplicativos de medicina digital personalizados.

Estes são apenas alguns exemplos. O MQTT também alimenta cidades inteligentes, logística da cadeia de suprimentos, energia renovável e muito mais!

O futuro do MQTT: adotando novas tecnologias

O MQTT provou seu valor como protocolo de mensagens IoT. Mas também se mostra promissor como facilitador de paradigmas tecnológicos de ponta:

MQTT para computação de borda

A computação de borda envia o processamento para dispositivos locais, em vez de servidores em nuvem centralizados. MQTT é ideal para streaming de dados de e para nós de borda:

  • Métricas em tempo real são publicadas de equipamentos próximos para gateways de borda
  • Os gateways filtram e analisam os dados localmente e enviam resultados agregados para a nuvem
  • Os sistemas em nuvem podem publicar atualizações de configuração para dispositivos de campo via MQTT

Ao reduzir as viagens de rede, o MQTT libera o potencial de inteligência de borda em tempo real.

Integração com IA/ML

Ao reduzir as viagens de rede, o MQTT libera o potencial de inteligência de borda em tempo real.

  • MQTT transmite dados de alta frequência de dispositivos IoT para alimentar modelos de IA
  • MQTT fornece inferências e diretivas desde sistemas de IA até equipamentos operacionais
  • Durante o treinamento do modelo, o MQTT transmite com eficiência conjuntos de dados de sensores distribuídos para a nuvem
  • Alertas de anomalia são publicados com base em desvios em tempo real detectados por agentes de IA

O MQTT oferece pipelines de dados confiáveis e de alta velocidade necessários para permitir a automação orientada por IA.

A natureza leve, porém poderosa, do MQTT o torna a espinha dorsal de mensagens ideal para desbloquear novas possibilidades à medida que a tecnologia avança.

Perguntas frequentes sobre MQTT

Para que é usado o MQTT?

O MQTT é otimizado para ambientes IoT devido à sua arquitetura leve e confiabilidade. Ele conecta dispositivos de baixo consumo de energia e com recursos limitados, onde a largura de banda é limitada. Os casos de uso típicos envolvem telemetria, notificações de eventos e controle de equipamentos.

Como o MQTT garante a entrega da mensagem?

MQTT fornece diferentes níveis de qualidade de serviço (QoS). QoS 1 garante a entrega pelo menos uma vez usando confirmações. QoS 2 entrega mensagens exatamente uma vez usando um handshake de 4 etapas entre remetente e destinatário.

O MQTT é adequado para aplicações em tempo real?

Sim, o MQTT foi projetado para mensagens em tempo real de baixa latência. As mensagens são entregues imediatamente, em vez de usar a pesquisa agendada. Isso permite respostas rápidas para aplicações urgentes.

Quais medidas de segurança o MQTT emprega?

Os corretores MQTT protegem conexões usando TLS/SSL. O acesso pode ser controlado por meio de autenticação de nome de usuário/senha e ACLs. As mensagens também podem ser criptografadas de ponta a ponta pelos clientes para maior privacidade.

Como escolher o nível de QoS correto no MQTT?

QoS 0 para dados não críticos como telemetria. QoS 1 para alertas e atualizações importantes onde duplicatas são aceitáveis. QoS 2 para comandos e ações onde exatamente uma entrega é vital. Equilibre confiabilidade versus sobrecarga.

Conclusão

À medida que a revolução da Internet das Coisas continua a acelerar, o MQTT estabeleceu-se como o protocolo preferido para mensagens fiáveis e em tempo real entre dispositivos e sistemas. Sua eficiente arquitetura de publicação-assinatura, desenvolvida para redes não confiáveis, torna-o perfeito para conectar o grande número de dispositivos incorporados que ficam on-line.

O MQTT agiliza os fluxos de comunicação entre sensores, controladores, aplicações e a nuvem. Ele permite novas possibilidades interessantes, como análise em tempo real e automação alimentada por IA. Com o MQTT, as empresas podem colher benefícios como maior eficiência operacional, redução de custos e novas oportunidades de receita.

Neste guia, nos aprofundamos em como o MQTT realmente funciona – seus componentes, como o corretor e os assinantes, o formato da mensagem do protocolo, os diferentes níveis de qualidade de serviço e os benefícios gerais que ele traz para a mesa. Vimos o MQTT em ação em diversos setores, como casas inteligentes, automação industrial e wearables. E analisamos como ele pode apoiar paradigmas emergentes, como computação de ponta e IA.

O MQTT continua a evoluir, com uma comunidade ativa impulsionando novos recursos e integrações. Ele permite que os engenheiros se concentrem na lógica principal do aplicativo, em vez dos desafios de conectividade e mensagens de dispositivos. À medida que seus projetos de IoT decolam, o MQTT oferece uma camada de comunicação resiliente, escalável e extensível para colocar suas inovações em ação.

Então comece a experimentar este protocolo de mensagens leve que está impulsionando o futuro das coisas conectadas!