Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução ao Protocolo MQTT, Esquemas de Matérias técnicas

Uma introdução ao protocolo mqtt (message queue telemetry transport), um protocolo de comunicação entre máquinas desenvolvido em 1999 e amplamente utilizado hoje em dia para a interconexão de equipamentos e sistemas através da internet. O protocolo utiliza um padrão de troca de mensagens denominado publish/subscriber e é aplicado em automação industrial, comercial e residencial. Algumas das características do mqtt explicam a popularidade deste protocolo, como ser simples de implementar, robusto, consumir pouco banda de dados e garantir a entrega de mensagens ao equipamento destino.

Tipologia: Esquemas

2024

Compartilhado em 11/04/2024

alex-giacomelli-9
alex-giacomelli-9 🇧🇷

1 / 48

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30

Pré-visualização parcial do texto

Baixe Introdução ao Protocolo MQTT e outras Esquemas em PDF para Matérias técnicas, somente na Docsity!

Glossário

Nome Direção Descrição CONNECT – Cliente para Servidor – Requisição do cliente para conectar ao servidor CONNACK – Servidor para Cliente – Reconhecimento da conexão PUBLISH – Cliente para Servidor ou Servidor para Cliente – Publicar mensagem PUBACK – Cliente para Servidor ou Servidor para Cliente – Reconhecimento da publicação PUBREC – Publicação recebida – Publicação recebida (parte 2 do QoS=1) PUBREL – Cliente para Servidor ou Servidor para Cliente – Publicação lançada (parte 2 do QoS=2) PUBCOMP – Cliente para Servidor ou Servidor para Cliente – Publicação completa (parte 3 do QoS=2) SUBSCRIBE – Cliente para Servidor – Pedido de inscrição SUBACK – Servidor para Cliente – Reconhecimento de inscrição UNSUBSCRIBE – Cliente para Servidor – Pedido de desinscrição UNSUBACK – Servidor para Cliente – Reconhecimento desinscrição PINGREQ – Requisição – Requisição PING PINGRESP – Servidor para Cliente – Resposta PING DISCONNECTy – Cliente para Servidor – Cliente está desconectado

INTRODUÇÃO AO MQTT

O MQTT (Message Queue Telemetry Transport) é um protocolo de comunicação entre máquinas (Machine to Machine - M 2 M) desenvolvido através de uma parceria entre a IBM e Eurotech em 1999. Seu objetivo original foi viabilizar a comunicação de sensores fisicamente distribuídos em oleodutos com sistema de satélites para permitir o monitoramento remoto do transporte do petróleo pelas tubulações. Foi projetado com as seguintes premissas:

  • Ser incorporado em equipamentos (sensores) com poucos recursos computacionais;
  • Possuir baixa largura de banda pois o custo da comunicação via satélite era elevado;
  • Operar em equipamentos com baixo consumo de energia.

Este protocolo permaneceu restrito às empresas desenvolvedoras até 2010 , quando foi liberado para utilização pública gratuitamente. Em 2014 , a versão 3. 1 tornou-se um protocolo padrão aberto da OASIS (Organization for the Advancement of Structured Information Standards). Sendo um padrão aberto, um grande número de empresas começaram a se interessar em implementar o padrão em suas soluções de conectividade. Com surgimento dos conceitos de Internet das Coisas (IoT) e indústria 4. 0 na última década, a conectividade entre dispositivos passou a ser mandatória, tornando hoje o MQTT, um dos protocolos de comunicação mais utilizados para a interconexão de equipamentos e sistemas através da internet.

COMO FUNCIONA O MQTT

Como mencionado na introdução, o protocolo MQTT foi criado para permitir a troca de dados entre 2 ou mais dispositivos. Vamos considerar um cenário real para entendermos como o protocolo MQTT funciona. Imagine que uma pessoa deseje monitorar a temperatura

da água de seu aquário de casa através do seu smartwatch.

20 °C

20 °C 20 °C

F2 - Sensor de temperatura envia valor (20 oC) para um smartwatch.

O principal problema para conseguir que a informação do sensor chegue ao smartwatch é que o sensor de temperatura não tem nenhuma informação sobre o que é, e tão pouco onde esta o dispositivo smartwatch e, analogamente o smartwatch também não “conhece” o sensor de temperatura. Para solucionar este problema o protocolo MQTT propõe um terceiro elemento denominado BROKER que é conhecido tanto pelo dispositivo Aquário quanto pelo dispositivo smartwatch. 20 °C 20 °C BROKER F4 - Dispositivo DEV_A se comunica com o dispositivo DEV_B através de um BROKER DEV_A DEV_B

O Broker é um programa de aplicação que roda em um servidor dentro de uma intranet ou na nuvem e aceita conexões de clientes em uma porta específica. Desta forma, todos os dispositivos que necessitarem enviar dados (sensor de temperatura) ou receber dados ( smartwatch ) se comunicam com o Broker e este será o responsável por receber a informação gerada pelo sensor de temperatura e envia-lá para o smartwatch. Note que, com esta abordagem o sensor não necessita de nenhuma informação do smartwatch para enviar o valor da temperatura (TEMP). Da mesma forma o smartwatch também não necessita de nenhuma informação sobre o sensor de temperatura. Os dois dispositivos necessitam saber apenas como acessar o Broker e isto é definido pelo protocolo MQTT.

O padrão Publish(publicador) / Subscriber(assinante) utiliza o BROKER como o elemento concentrador que tem por função receber as mensagens dos dispositivos que querem enviar tópicos (denominados publishers) e encaminhá-las para os dispositivos que assinaram estes tópicos (denominados subscribers). Todos os equipamentos que quiserem trocar dados são denominados clientes MQTT e devem se conectar a um Broker para que o envio e recepção das informações ocorra. 20 °C 20 °C BROKER DEV_A DEV_B CLIENTE MQTT CLIENTE MQTT F5 - Conexão dos clientes MQTT (DEV_A e DEV_B) ao BROKER

O processo de conexão dos clientes ao BROKER é simples e será detalhado na próxima sessão do documento. Uma vez conectados ao BROKER, a sequência ao lado ilustra as etapas necessárias para que o tópico TEMP seja enviado pelo dispositivo DEV_A e recebido pelo dispositivo DEV_B. 20 °C 20 °C BROKER DEV_A DEV_B DEV_B ASSINA TÓPICO TEMP NO BROKER F6 - Padrão Publisher / Subscriber 1 20 °C 20 °C BROKER DEV_A DEV_B DEV_A PUBLICA TEMP 2 20 °C 20 °C BROKER DEV_A DEV_B BROKER ENVIA TEMP PARA DEV_B 3

O protocolo MQTT define os formatos dos pacotes a serem trocados entre os clientes e o Broker para que o padrão Publish/Subscriber descrito seja implementado. O MQTT é aplicado em automação industrial, comercial e residencial, focado em disponibilizar a troca de informações entre dispositivos, funcionalidade denominada de M 2 M (machine to machine). Com a expansão dos dispositivos IoT (Internet of Things) o protocolo MQTT vem se tornado um padrão para interconexão destes elementos.

O PROTOCOLO MQTT

Algumas das características do MQTT explicam a popularidade deste protocolo:

  • padrão de comunicação aberto, permitindo sua utilização sem custos de royalty;
  • simples de implementar e robusto;
  • consegue ser incorporado em dispositivos com poucos recursos de memória e processamento;
  • consumo de banda de dados mínimo e configurável pela aplicação;
    • apenas as mensagens assinadas no Broker serão encaminhadas para o dispositivo, não existindo tráfego inútil;
    • informações são publicadas quando necessário para outros dispositivos, não sendo necessário polling de dados, o que aumenta a banda de dados e diminui a latência (tempo necessário para que a informação chegue ao seu destino);
  • excelente performance em aplicações e serviços que não demandam alta taxa de dados;
  • inerentemente distribuído permitindo conexão entre dois dispositivos localizados em qualquer lugar do mundo desde que tenha acesso a internet através de qualquer meio (rede física, celular, satélite etc).
  • Uma dada mensagem importante pode ficar armazenada no Broker e ser transmitida para um cliente quando este se conectar.
  • Existem recursos no protocolo para garantir que uma dada mensagem seja entregue ao equipamento destino aumentando a confiabilidade da solução de comunicação;

Antes de iniciar o processo de publicação e recepção de tópicos um cliente necessita se conectar ao Broker, trocando as seguintes mensagens:

O PROCESSO DE CONEXÃO COM O BROKER

PROCESSO DE CONEXÃO COM O BROKER

Conexão autenticada CONNAK

CONNECT (CLIENT_ID, USER, PASSW)

Conexão recusada Esse tipo de FLUXO chama-se Diagrama de Sequência UML, possui um padrão clicando aqui!

CLIENTE PUBLICADOR

DEV_A BROKER

Broker fecha conexão TCP/IP Processo de conexão com sucesso

BROKER

Processo de conexão recusada pelo BROKER CONNECT (CLIENT_ID, USER, PASSW) Sequência de conexão de um Cliente MQTT Publicador e um Cliente MQTT Subscritor com um Broker MQTT.