Wiki ADA

Projetos em Engenharia de Computação

Ferramentas do usuário

Ferramentas do site


mqtt

MQTT

MQTT, sigla de Message Queuing Telemetry Transport, se trata de um protocolo de envio de mensagens através da internet, sendo considerado leve e muito adequado para o uso em plataformas pequenas de desenvolvimento que possuem conexão à internet (IoT). O seu uso substitui toda a infraestrutura baseada em TCP/IP, sendo muito útil em conexões não confiáveis ou de alta latência.


Funcionamento

O seu funcionamento baseia-se em dois papéis principais: publisher e subscriber. Dada que a conexão, no seu exemplo mais simples possível, é entre dois clientes, devemos necessariamente, durante o envio de uma mensagem qualquer, ter que um cliente seja pelo menos publisher e o outro cliente seja pelo menos subscriber. Podemos ter clientes que sejam publisher e subscriber ao mesmo tempo. Além disso, existe o papel de broker, reservado ao servidor que comportará a infraestrutura para que a comunicação através do protocolo seja efetuada.

Temos também o conceito de tópicos, que são “espaços” para que mensagens sejam armazenadas e lidas. Serão nesses tópicos que o publisher e o subscriber irão efetuar suas ações.

Broker

O broker se trata de um software que possui uma infraestrutura que permite a conexão entre os dois clientes (publisher e subscriber) no envio de uma mensagem, sendo executado dentro de um servidor. É dentro do broker que estão os tópicos, com o objetivo de permitir a comunicação entre o publisher e o subscriber. Os tópicos não são criados explicitamente, mas são referenciados de acordo com um nome atribuído a cada um pelos clientes conectados ao broker. A princípio, é criado pelo próprio broker quando um cliente atua sobre o tópico em questão.

Publisher

O cliente com o papel de publisher poderá, no sentido literal da tradução, publicar mensagens em tópicos presentes no broker. Sua função, portanto, é ser o emissor da comunicação entre dois clientes, enviando através do broker as informações para o subscriber. O publisher pode publicar em qualquer tópico existente no broker em questão.

Subscriber

Por outro lado, o cliente com papel de subscriber irá se subscrever a um ou mais tópicos presentes no broker, sendo notificado a cada vez que uma mensagem for escrita em um tópico ao qual se foi subscrito, recebendo o conteúdo dela logo em seguida. Assim, o subscriber é o receptor da comunicação entre dois clientes, recebendo através do broker as informações que partiram do publisher. O subscriber pode se subscrever em qualquer tópico existente no broker em questão.


Linguagens suportadas

O MQTT está presente nas linguagens e IDEs

  • Arduino
  • Bash script
  • C/C++
  • Delphi
  • Erlang
  • Go
  • Haskell
  • Java
  • Javascript/Node.js
  • Lua
  • .NET
  • Objective-C
  • PHP
  • Python
  • Ruby
  • Swift

e em diversas outras. Até o momento, a ADA utilizou o protocolo MQTT na IDE do Arduino e também nas linguagens Python e Java para Android.


Exemplos práticos

O MQTT foi um aliado de peso para as aplicações feitas pela ADA.

  1. Em nosso projeto sobre GSR, o utilizamos para realizar a comunicação entre um microcontrolador ESP32 e um computador, um distante do outro, conectados através da internet. A ideia era enviar as informações da impedância da pele do paciente do ESP32 para o computador, e assim plotar gráficos com os dados recebidos.
  2. Na Feira de Mercado da Semana da Engenharia de Computação, na edição de 2018, criamos um aplicativo Android que se comunicava com um microcontrolador ESP8266 através do protocolo MQTT. O aplicativo consistia em escrever qualquer número em hexadecimal e, ao enviar a mensagem, o número seria escrito num display 7 segmentos conectado ao microcontrolador.

Referências externas

mqtt.txt · Última modificação: 2021/06/04 13:48 por bandeira