Wiki ADA

Projetos em Engenharia de Computação

Ferramentas do usuário

Ferramentas do site


mqtt

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
mqtt [2018/10/26 22:49]
forfs [Referências externas]
mqtt [2021/06/04 13:48] (atual)
bandeira
Linha 1: Linha 1:
 =======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|IoT]]). O seu uso substitui toda a infraestrutura baseada em [[TCP|TCP]]/[[IP|IP]], sendo muito útil em **conexões não confiáveis** ou de **alta latência**.+**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 ([[Internet of Things|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======+=====Funcionamento=====
  
-O seu funcionamento baseia-se em dois papéis principais: //​publisher//​ e //​subscriber//​. Dada que a conexão, no seu maior granulamento ​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.+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. 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=====+====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. 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=====+====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. 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=====+====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. 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======+=====Linguagens suportadas=====
  
 O MQTT está presente nas linguagens e IDEs O MQTT está presente nas linguagens e IDEs
Linha 43: Linha 43:
   * Swift   * 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.+e em diversas outras. Até o momento, a ADA utilizou o protocolo MQTT na [[IDE Arduino|IDE do Arduino]] e também nas linguagens Python e Java para Android.
  
 ---- ----
-======Exemplos práticos======+=====Exemplos práticos=====
  
 O MQTT foi um aliado de peso para as aplicações feitas pela ADA. O MQTT foi um aliado de peso para as aplicações feitas pela ADA.
-  - Em nosso projeto sobre [[Galvanic Skin Response|GSR]],​ o utilizamos para realizar a comunicação entre um microcontrolador [[ESP32|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|ESP32]] para o computador, e assim plotar gráficos com os dados recebidos. +  - Em nosso projeto sobre [[Galvanic Skin Response|GSR]],​ o utilizamos para realizar a comunicação entre um microcontrolador [[ESP|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 [[ESP|ESP32]] para o computador, e assim plotar gráficos com os dados recebidos. 
-  - Na Feira de Mercado da Semana da Engenharia de Computação,​ na edição de 2018, criamos um aplicativo [[Android|Android]] que se comunicava com um [[ESP8266|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|display 7 segmentos]] ​conectado ao [[microcontroladores|microcontrolador]].+  - Na Feira de Mercado da Semana da Engenharia de Computação,​ na edição de 2018, criamos um aplicativo [[Android|Android]] que se comunicava com um microcontrolador ​[[ESP|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|microcontrolador]].
  
 ---- ----
-======Referências externas======+=====Referências externas=====
   * [[https://​www.hivemq.com/​blog/​mqtt-essentials-part-3-client-broker-connection-establishment|HiveMQ - MQTT essentials part 3]]   * [[https://​www.hivemq.com/​blog/​mqtt-essentials-part-3-client-broker-connection-establishment|HiveMQ - MQTT essentials part 3]]
   * [[https://​github.com/​mqtt/​mqtt.github.io/​wiki|Official MQTT Github Wiki]]   * [[https://​github.com/​mqtt/​mqtt.github.io/​wiki|Official MQTT Github Wiki]]
mqtt.1540604978.txt.gz · Última modificação: 2018/10/26 22:49 por forfs