Logo Passei Direto
Buscar

Protocolo MQTT: Telemetria e Eficiência

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Protocolo MQTT
MessageQueueTelemetryTransport
(Transporte de telemetria de fila de mensagens)
Prof. Luiz Eduardo C. Leite
Protocolo MQTT
O MQTT (Message Queuing Telemetry Transport) é um protocolo de 
comunicação leve, baseado em publicação/assinatura 
(publish/subscribe), projetado para a transmissão eficiente de 
mensagens em redes com baixa largura de banda, alta latência ou 
conexões instáveis. 
• É amplamente utilizado em aplicações de Internet das Coisas (IoT) 
devido à sua simplicidade e eficiência.
• Casos de uso:
• Monitoramento e controle de dispositivos IoT.
• Sistemas de automação residencial.
• Telemetria para veículos e máquinas industriais.
• Comunicação entre sensores remotos.
Arquitetura do MQTT
• Publisher (Publicador): é o cliente 
MQTT que envia informações para os 
Subscribers, através de um tópico
específico no Broker.
• Broker: O Broker é o servidor 
intermediário da informação. É ele 
quem recebe os dados enviados pelos 
Publishers, realiza o tratamento da 
informação e repassa-a aos Subscribers
inscritos nos tópicos correspondentes.
• Subscriber (Assinante): Um dispositivo 
que se inscreve em tópicos no broker 
para receber mensagens relevantes.
• Publishers e Subscribers não 
comunicam-se diretamente em 
qualquer circunstância. De fato, eles 
nem sequer estão cientes da existência 
do outro.
Topic: /temperature
Tópicos MQTT
No contexto do MQTT, um tópico é uma string hierárquica que 
organiza e categoriza as mensagens enviadas e recebidas no sistema. 
• O tópico atua como um canal de comunicação onde as mensagens 
são publicadas por publicadores e recebidas por assinantes que se 
inscrevem no mesmo tópico.
• Tópicos são estruturados hierarquicamente usando uma barra ( / ) 
como separador. Exemplo:
• casa/sala/luz (indica informações da luz na sala de uma casa).
• casa/cozinha/temperatura (indica a temperatura na cozinha).
• Tópicos não precisam ser pré-definidos no broker; publicadores e 
assinantes simplesmente usam strings consistentes.
• Tópicos diferenciam maiúsculas de minúsculas. Por exemplo, 
Casa/Luz e casa/luz são tópicos diferentes.
Utilização de Tópicos no Broker
• Publicação:
• Um dispositivo envia uma mensagem ao broker associada a um tópico 
específico. Exemplo:
• Publicador: publica("casa/sala/luz", "ON").
• Assinatura:
• Outros dispositivos se inscrevem em tópicos para receber mensagens 
publicadas nesses canais. Exemplo:
• Assinante: subscribe("casa/sala/luz").
• Entrega de mensagens:
• O broker compara o tópico da mensagem publicada com os tópicos 
dos assinantes.
• Mensagens são entregues somente aos dispositivos com assinaturas 
compatíveis.
• Retenção de mensagens (opcional):
• O broker pode reter mensagens no tópico para novos assinantes que 
se inscrevam após a publicação.
QoS MQTT
• O MQTT oferece três níveis de garantia na entrega de 
mensagens:
• QoS 0: entrega melhor esforço (sem confirmação).
• QoS 1: entrega garantida pelo menos uma vez.
• QoS 2: entrega garantida exatamente uma vez.
Mensagems MQTT
• Cabeçalho Fixo:
• Contém informações essenciais para o protocolo ( 2 Bytes ):
• Tipo de controle (4 bits): indica o tipo da mensagem (por exemplo, CONNECT, PUBLISH, 
SUBSCRIBE).
• Flags (4 bits): usados para controle específico de cada tipo de mensagem (por exemplo, 
DUP, QoS e RETAIN para mensagens PUBLISH).
• Tamanho do restante da mensagem (Remaining Length): um campo de comprimento 
variável que indica o tamanho do cabeçalho variável e do payload.
• Cabeçalho Variável (dependente do tipo de mensagem):
• Presente em mensagens específicas, como PUBLISH, CONNECT ou SUBSCRIBE.
• Exemplos de campos possíveis:
• Tópico: obrigatório em mensagens PUBLISH (string UTF-8 que indica o canal de 
comunicação).
• Packet Identifier: necessário para mensagens com QoS 1 e 2.
• Campos específicos do tipo de mensagem, como username e password no CONNECT.
• Payload:
• Contém os dados da mensagem (se aplicável).
• Por exemplo, em uma mensagem PUBLISH, o payload contém o dado que está 
sendo enviado.
• É opcional e pode ter tamanho de 0 bytes.
Por que MQTT?
• Tempo de Resposta e Performance
• Na arquitetura HTTP REST, a conexão do cliente com o servidor é 
intermitente.
• A arquitetura MQTT permite que os clientes permaneçam 
persistentemente conectados ao Broker, fornecendo uma 
comunicação bidirecional entre o cliente e o servidor.
• Devido à conexão permanente, a necessidade de conectar e 
desconectar para cada transferência de dados não é necessária. 
• O ping keep alive do MQTT tem uma sobrecarga muito menor em 
comparação com as chamadas de conexão de reconexão que o 
HTTP REST faz. 
• As mensagens do MQTT são menores do que as mensagens 
human readble da arquitetura HTTP REST.
Por que MQTT ?
Comparação
MQTT até 25 vezes mais rápido!
Por que MQTT?
• Consumo de Energia
• Quando comparado diretamente para a mesma transferência de 
dados usando HTTP REST e MQTT, a arquitetura MQTT consome 
20% menos energia. 
• No caso do HTTP REST, a maior parte da energia é perdida nos 
recursos usados ​​na conexão e desconexão e na limpeza de 
recursos no servidor e no cliente. 
• Portanto, quando você constrói um dispositivo remoto operado 
por bateria, o MQTT ajuda você com uma vida útil da bateria 
maior.
Por que MQTT
• Segurança
• A maioria dos dispositivos hoje é implantada atrás de um firewall 
por razões de segurança. 
• Mesmo implementando um servidor REST nos dispositivos 
clientes, a conexão com eles será dificultada ou até impedida 
pelos firewalls.
• Por limitações da arquitetura HTTP REST, o servidor não pode 
iniciar uma conexão e enviar dados para os clientes sob 
demanda. 
• O MQTT resolve inerentemente esse problema de comunicação 
bidirecional com as conexões persistentes.
Exemplos de Brokers MQTT
• Mosquitto: implementação de um broker MQTT de código aberto, desenvolvida pela 
Eclipse Foundation.
• Disponível para diversas plataformas, incluindo Linux, Windows, macOS e 
dispositivos embarcados como o Raspberry Pi.
• https://mosquitto.org/
• Maqiatto: plataforma online que fornece um broker MQTT hospedado na nuvem.
• Permite que desenvolvedores testem e implementem soluções baseadas no 
protocolo MQTT sem a necessidade de configurar ou hospedar seu próprio broker.
• https://www.maqiatto.com/ 
• Adafruit IO: plataforma baseada na nuvem projetada para integrar dispositivos IoT e 
gerenciar dados de sensores e dispositivos conectados.
• Funciona como um broker MQTT, mas com algumas características adicionais.
• Fornece uma plataforma mais abrangente, com funcionalidades de 
armazenamento, visualização e automação de dados, o que o diferencia de um 
broker MQTT tradicional.
• https://io.adafruit.com/ 
https://mosquitto.org/
https://www.maqiatto.com/
https://io.adafruit.com/
	Slide 1: Protocolo MQTT Message Queue Telemetry Transport (Transporte de telemetria de fila de mensagens) 
	Slide 2: Protocolo MQTT
	Slide 3: Arquitetura do MQTT
	Slide 4: Tópicos MQTT
	Slide 5: Utilização de Tópicos no Broker
	Slide 6: QoS MQTT
	Slide 7: Mensagems MQTT
	Slide 8: Por que MQTT?
	Slide 9: Por que MQTT ?
	Slide 10: Por que MQTT?
	Slide 11: Por que MQTT
	Slide 12: Exemplos de Brokers MQTT

Mais conteúdos dessa disciplina