Tutorial do protocolo MQTT: descrição técnica com exemplo prático de Mosquitto

Tempo de leitura: 5 minutes

O protocolo MQTT é um protocolo Máquina a Máquina (M2M) amplamente utilizado em IoT (Internet das coisas).

O protocolo MQTT é um protocolo baseado em mensagem, extremamente leve e por isso, é adotado na IoT. Quase todas as plataformas IoT suportam MQTT para enviar e receber dados de objetos inteligentes.

Este tutorial fornece um tutorial MQTT detalhado que cobre:

  • como MQTT funciona
  • as mensagens MQTT
  • como usá-lo em projetos IoT
  • como configurar Mosquitto MQTT para lidar com o protocolo MQTT

Existem várias implementações para diferentes placas de IoT como Arduino, Raspberry, ESP32, ESP8266 e assim por diante.

Existem outros protocolos IoT usados para implementar projetos IoT, mas MQTT é um dos mais eficientes.

 

Descrição técnica do protocolo MQTT

O protocolo MQTT IoT foi desenvolvido por volta de 1999. O objetivo principal desse protocolo era criar um protocolo muito eficiente do ponto de vista da largura de banda. Além disso, é um protocolo de grande economia de energia. Por todos esses motivos, ele é adequado para IoT.

Isso usa o paradigma publicar-assinar em contraste com o HTTP baseado no paradigma de solicitação / resposta. Ele usa mensagens binárias para trocar informações com baixa sobrecarga. É muito simples de implementar e está aberto. Todos esses aspectos contribuem para sua ampla adoção na IoT. Outro aspecto interessante é o fato de o protocolo MQTT utilizar a pilha TCP como substrato de transmissão.

A função do MQTT Broker e MQTT Client

Como dito antes, o protocolo MQTT implementa um paradigma publicar-assinar. Este paradigma separa um cliente que publica uma mensagem (“editor”) para outros clientes que recebem a mensagem (“assinantes”). Além disso, o MQTT é um protocolo assíncrono, o que significa que ele não bloqueia o cliente enquanto aguarda a mensagem.

Em contraste com o protocolo HTTP, esse é um protocolo principalmente assíncrono. Outra propriedade interessante do protocolo MQTT é que ele não requer que o cliente (“assinante”) e o editor estejam conectados ao mesmo tempo.

O principal componente no MQTT é o broker MQTT. A principal tarefa do broker MQTT é despachar mensagens para os clientes MQTT (“assinantes”). Em outras palavras, o intermediário MQTT recebe mensagens do editor e despacha essas mensagens para os assinantes.

 

O tópico MQTT

Enquanto despacha mensagens, o broker MQTT usa o tópico para filtrar os clientes MQTT que receberão a mensagem. O tópico é uma string e é possível combinar os tópicos criando níveis de tópicos.

Um tópico é um canal virtual que conecta um editor a seus assinantes. O broker MQTT gerencia este tópico. Por meio desse canal virtual, o editor é desacoplado dos assinantes e os clientes MQTT (editores ou assinantes) não precisam se conhecer para trocar dados. Isso torna este protocolo altamente escalável sem uma dependência direta do produtor da mensagem (“editor”) e do consumidor da mensagem (“assinante”).

O esquema abaixo descreve a arquitetura MQTT:

Como você já deve saber, existem outros protocolos IoT que podem ser usados em uma IoT como CoAP, HTTP e assim por diante. Se você não conhece outros protocolos IoT, pode dar uma olhada no meu artigo.

 

Como usar o protocolo MQTT com Mosquitto

Agora temos uma visão geral do MQTT e é hora de saber como usá-lo usando um exemplo real. Existem várias implementações de MQTT, neste exemplo, usaremos Mosquitto, uma implementação desenvolvida pela Eclipse. A primeira etapa é instalar o broker MQTT. Vamos instalá-lo no Raspberry PI. Para instalá-lo, temos que adicionar o repositório que contém o aplicativo, para que possamos baixá-lo. Antes de adicionar o repositório é necessário adicionar a chave para verificar se o pacote de download é válido. Vamos nos conectar ao Raspberry PI usando ssh ou uma conexão de área de trabalho remota. Agora, no terminal, temos que escrever:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

Agora é hora de importar a chave:

sudo apt-key add mosquitto-repo.gpg.key

Finalmente, vamos adicionar o arquivo .list:

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

Agora que o link do repositório está configurado corretamente, podemos instalar o Mosquitto no Raspberry PI.

apt-get install mosquitto

O servidor MQTT (também conhecido como broker MQTT) está instalado no Raspberry Pi. Este servidor é nosso broker MQTT conforme especificado acima. Agora precisamos instalar o cliente, ou seja, o editor e o assinante. Neste exemplo, instalaremos o cliente e o servidor no mesmo Raspberry, mas você pode instalá-lo em um pc / servidor ou placa IoT diferente.

apt-get install mosquitto-clients

 

Como enviar uma mensagem MQTT

Instalamos e configuramos o cliente e o servidor, agora podemos registrar um assinante para um tópico específico e aguardar a chegada de uma mensagem de um editor. Para registrar um assinante, usaremos este comando:

Como você pode notar, nosso assinante está esperando por uma mensagem. Neste exemplo, usamos um tópico chamado swa_news. Agora enviaremos uma mensagem usando um editor MQTT que usa o mesmo tópico swa_news.

No exemplo, o editor MQTT envia a mensagem “Hello Protocol”. Do lado do assinante, recebemos a mensagem:

Um aspecto importante a ser observado é que o MQTT é um protocolo simples, portanto, a mensagem é clara e todos podem lê-la.

 

Como usar MQTT em smartphone Android

Neste último exemplo, usaremos um cliente Android MQTT para que a mesma mensagem enviada seja recebida pelo cliente Android MQTT. Este vídeo mostra como configurar um cliente MQTT Android

 

Resumo

No final desta postagem, você saberá como publicar uma mensagem usando o protocolo MQTT e como usar o Mosquitto MQTT como um exemplo prático. É muito importante conhecer o protocolo MQTT porque ele é amplamente usado na IoT. Por meio deste tutorial, cobrimos alguns aspectos de segurança relacionados ao MQTT. Por fim, instalamos um broker MQTT, Mosquitto, que você pode usar em seu próximo projeto de IoT.

Visits: 1 Visits: 1200184