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:08]
forfs
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** **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. ​Temos também ​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// //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// //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=====+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.
  
-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. ​+====Broker====
  
-=====Publisher=====+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 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.+====Publisher====
  
-=====Subscriber=====+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 Arduino|IDE do Arduino]] e também nas linguagens Python e Java para Android. 
 + 
 +---- 
 +=====Exemplos práticos=====
  
-Por outro lado, o cliente com papel de subscriber irá se subscrever ​a um ou mais tópicos presentes no brokersendo notificado a cada vez que uma mensagem for escrita em um tópico ao qual se foi subscritorecebendo o conteúdo dela logo em seguidaAssim, ​subscriber é o receptor ​da comunicação entre dois clientesrecebendo ​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.+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 ​comunicação entre um microcontrolador [[ESP|ESP32]] e um computador, um distante do outroconectados através da internetA ideia era enviar as informações da impedância da pele do paciente do [[ESP|ESP32]] para computador, e assim plotar gráficos com os dados recebidos. 
 +  - Na Feira de Mercado ​da Semana da Engenharia de Computaçãona 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=====
 +  * [[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://​en.wikipedia.org/​wiki/​MQTT|Wikipedia - MQTT]]
 +  * [[http://​docs.oasis-open.org/​mqtt/​mqtt/​v3.1.1/​mqtt-v3.1.1.html|Oasis - MQTT 3.1.1 specification]]
 +  * [[http://​wiki.eclipse.org/​Paho|Eclipse Wiki - Paho Client]]
mqtt.1540602520.txt.gz · Última modificação: 2018/10/26 22:08 por forfs