Por que escolher o protocolo MQTT para aplicações de IoT?

Primeira introdução ao MQTT

A Internet das Coisas, tal como o nome sugere, é a Internet em que as coisas estão ligadas. Permite ligar objetos através da Internet, e esses objetos podem interagir entre si. O MQTT é um protocolo baseado em TCP/IP para a comunicação de dados entre esses objetos.

DTU/Edge Gateway/Plataforma IoT/Módulo GatewayDTU/Edge Gateway/Plataforma IoT/Módulo Gateway

Cada terminal está ligado a um proxy/servidor que implementa o protocolo MQTT.

Enviar dados através de um tópico num servidor proxy MQTT publicado.

Obtenha os dados do tópico a que está subscrito a partir do servidor proxy MQTT através da subscrição.

O servidor proxy, por si só, não gera dados; todos os dados são gerados pelo terminal ligado ao servidor proxy.

O terminal envia dados para o servidor. O terminal que está subscrito ao tópico no servidor aceita os dados enviados por outro terminal para o servidor e reencaminha-os para si próprio através do servidor.

Por que escolher o protocolo MQTT?

O protocolo MQTT é um protocolo de rede leve e flexível. Além disso, é muito adequado para cenários de IoT.

Em primeiro lugar, a definição do protocolo IoT é muito pequena e não é tão pesada como a do HTTP e do HTTPS.

De um modo geral, o ambiente de transmissão de rede e a capacidade de processamento dos dispositivos compatíveis com a Internet das Coisas (IoT) são relativamente limitados, pelo que se adequam ao MQTT, um protocolo leve que não apresenta requisitos elevados em termos de rede e de dados.

Então, por que é que o MQTT é tão leve e flexível? Uma característica fundamental do protocolo MQTT é o modelo de publicação/subscrição. Este modelo separa o emissor do recetor de dados.

Um terminal pode ser um emissor de dados ou um recetor de dados.

Se um dispositivo pretender publicar dados, basta que publique o conteúdo desses dados no tópico correspondente no servidor proxy.

Se um dispositivo precisar de receber dados, basta que se inscreva antecipadamente no servidor proxy nos tópicos aos quais precisa de prestar atenção.

Porque não escolher outro protocolo de rede?

A maioria dos programadores já está familiarizada com o protocolo HTTP da Web. Então, porque não permitir que a configuração da Internet das Coisas (IoT) se ligue ao serviço Web?

O dispositivo pode enviar dados sob a forma de pedidos HTTP e obter dados do servidor sob a forma de respostas HTTP para aceitar atualizações.

Porque, no caso dos dispositivos IoT, este modelo de transmissão de dados — solicitação ativa seguida de espera passiva pela resposta — apresenta sérias limitações:

O HTTP é um protocolo síncrono. O cliente tem de aguardar a resposta do servidor. Os navegadores da Web têm essa exigência, mas isso prejudica a escalabilidade. No mundo da IoT, o grande número de dispositivos e as redes potencialmente pouco fiáveis ou com elevada latência tornam a comunicação síncrona um problema. Os protocolos de mensagens assíncronas são mais adequados para aplicações de IoT. O sensor limita-se a enviar os dados e deixa que a rede determine a melhor rota e o melhor momento para os entregar ao dispositivo de destino e ao servidor.

O HTTP é unidirecional. O cliente tem de iniciar ativamente o pedido. Nas aplicações de IoT, o dispositivo ou sensor é normalmente um cliente, o que significa que não pode aceitar dados do servidor, a menos que o utilizador ou a aplicação os solicite ativamente.

O HTTP é um protocolo 1-1. O cliente faz um pedido e o servidor responde. Existe uma correspondência um-para-um entre ambos. No entanto, é necessário transformar a relação 1-1 do HTTP numa relação um-para-muitos, que é muito comum na IoT. A implementação é difícil e o custo também é elevado. E a relação «um para muitos» é muito comum na IoT.

Em comparação com o MQTT, o HTTP é um protocolo relativamente pesado. Não é adequado para a rede limitada e o fraco poder de computação dos dispositivos terminais da Internet das Coisas (IoT).

↑