MQTT e Intel Edison

mqtt e intel edison

Neste artigo serão abordados os seguintes tópicos:

  • Conceitos básicos do MQTT;
  • Como colocar o MQTT pra funcionar (na Intel Edison);
  • Um projeto de exemplo do uso do MQTT para controlar periféricos em uma Intel Edison, utilizando como interface uma página HTML.

Pré-requisitos:

Para realizar este projeto e melhor compreender o conteúdo deste artigo, os pré-requisitos são:

  • Ter uma Intel Edison;
  • Ter noção de programação em Python;
  • Ter noção de programação em HTML e JavaScript
  • Saber os comandos básicos do Linux.

MQTT – O que seria?

O MQTT (Message Queue Telemetry Transport) é um protocolo de mensagens leve, utilizado para comunicação M2M (Machine to Machine). Por ser leve em termos de processamento e memória exigida, consiste em um protocolo altamente eficiente para dispositivos embarcados e dispositivos mobile, por consequência é muito utilizado dentro do conceito IoT (Internet of Things).

O MQTT funciona da seguinte maneira: há um publisher (quem irá disponibilizar informações) e N subscribers (quem irá receber as informações). Teoricamente, não há limite de subscribers. O publisher publica as informações em um servidor chamado broker, sendo que tal informação consiste de um Tópico (servindo como uma “chave” / identificação) e payload (quaisquer dados que desejar enviar). Os subscribers, por sua vez, também estão conectados aos brokers e “escutando” mensagens trafegadas com o tópico-alvo. Quando uma mensagem com o tópico alvo é publicada, automaticamente os subscribers a pegam. Observe a figura 1, extraída do artigo do Marcelo Barros sobre IoT

MQTT e Intel Edison - Diagrama exemplificando conexão e comunicação dos publishers e subscribers ao servidor broker
Figura 1 – Diagrama da comunicação usando MQTT

Outro fato interessante sobre o MQTT é que o payload não tem tipo pré-definido, ou seja, pode trafegar quaisquer tipos de dados (mensagens de texto, dados binários, fotos, música, etc.). Logo, dada sua versatilidade e leveza, é um dos principais protocolos utilizados no mundo da Internet das Coisas.

Para mais detalhes, acesse o site oficial do MQTT e confira o artigo do Marcelo Barros sobre MQTT.

MQTT na Intel Edison – Como botar pra funcionar?

Antes de começarmos, recomendo executar todos os comandos nesta etapa como root. Uma vez como root, é a hora de começarmos as instalações para usar o MQTT.

Primeiramente, é necessário instalar o pip. Para isso, basta seguir as instruções do artigo de Diego Sueiro sobre Dicas e truques da Intel Edison e, após configurar o repositório da placa, utilizar o seguinte comando para instalar o pip: 

A “biblioteca” no Linux para MQTT que utilizei foi a paho-mqtt (que consiste numa atualização da antiga lib Mosquitto – para maiores detalhes acesse o site oficial da biblioteca). A linguagem que foi utilizada no projeto foi a linguagem Python. Logo, para instalar pelo pip a biblioteca paho-mqtt, digite o seguinte comando: 

Caso o pip reclamar que está faltando o pkg_resources (isto ocorreu no meu caso), digite os seguintes comandos:

Se você optar por instalar o paho-mqtt de outro repositório/local, recomendo utilizar a versão 1.3.4 (a mesma que utilizei no desenvolvimento e, até o momento de publicação deste artigo, é a versão mais recente).

Ótimo, o MQTT está ok na Edison. Agora é hora de um projeto-exemplo!

Antes de eu começar a explicar como é o projeto em si, é importante ressaltar que escolhi o broker do próprio Mosquitto (test.mosquito.org, na porta 1883, sem autenticação). Se você desejar utilizar outro broker, fique à vontade para trocar o endereço do broker no código-fonte, porém a página que irá publicar as mensagens para a Intel Edison precisará ser refeita conforme o seu broker (e este deve possuir suporte a websocket). A título de informação, neste link há uma lista com vários brokers públicos para livre uso. Enfim, a escolha aqui é livre.

Agora sim, mãos à obra! O projeto-exemplo consiste em controlar, via uma página no navegador, um display LCD e dois LEDs ligados à Intel Edison. Tais periféricos estão ligados a um Base Shield e este, por sua vez, está ligado a uma Arduino Breakout Board (a qual está conectada à Intel Edison também). Abaixo, veja a figura 2 que mostra como ficou a montagem:

MQTT e Intel Edison - Montagem do projeto utilizando Arduino Breakout Board, Intel Edison, LCD, LEDs e Base Shield
Figura 2 – Montagem do projeto utilizando Arduino Breakout Board, Intel Edison, LCD, LEDs e Base Shield

Abaixo se encontra o código-fonte em python que roda na Intel Edison: 

Não há mistério para fazê-lo rodar. Basta digitá-lo / colá-lo no seu editor de texto na Intel Edison (VI, por exemplo), salvar com o nome que desejar (com extensão .py) e mandar rodar usando o seguinte comando:

Uma vez iniciado, ele irá se conectar ao broker e ficar pra sempre “de olho” nas mensagens do Broker com Tópico “MQTTEdison“.

Quanto à pagina, utilizo nela HTML e JavaScript. Você pode baixar todos os arquivos da página:


O segredo da coisa está no JavaScript: o arquivo “mqttws31.js” consiste na API do MQTT para WebSockets (o que faz a página dar vida ao MQTT) e o arquivo “tmo.js” consiste na “lógica” da página (o que acontece/o que é enviado quando se clica em algum botão da página). Portanto, se for desejado fazer modificações/customizações, aconselho modificarem a página HTML e o “tmo.js” somente.

Enfim, uma vez baixada e, se for o caso, customizada a página e seus arquivos, basta abrir o arquivo .html em seu navegador (eu testei no Google Chrome), informar o tópico ao qual o subscriber deve obedecer, clicar no botão “Conectar” e começar a interagir com a Edison via MQTT! Qualquer servidor suporta esta página também, portanto sinta-se à vontade de colocar ela on-line.

Caso quiser ver o projeto em ação. clique aqui.

Observação: o MQTT não armazena os comandos enviados em fila caso não haja subscribers. Portanto, se um comando for enviado pelo publisher e não houver subscrivers ativos, o comando é perdido.

Conclusão

Em suma, neste artigo foi possível aprender o básico do MQTT, protocolo de troca de mensagens M2M amplamente utilizado no mundo da Internet das Coisas. Além disso, utilizando linguagem Python e uma Intel Edison foi feito um subscriber, assim como utilizando WebSocket foi feito um publisher via browser, o que permitiu o envio de mensagens / comandos à Edison (destinados a controle de alguns periféricos) via Browser, de qualquer dispositivo capaz de acessar um site (computador, smartphone, tablet, etc.). Logo, este projeto está dentro do contexto da Internet das Coisas.

Agradecimentos

Durante o desenvolvimento desta experiência, no que diz respeito à instalação da biblioteca, dicas e toques do Linux e reparo do pip, André Curvello me ajudou muito. Portanto, segue aqui um agradecimento a ele.

Referências

– Figura 1 – Fonte: https://www.embarcados.com.br/mqtt-protocolos-para-iot
– Site oficial do MQTT  – http://mqtt.org/
– Site oficial da lib/broker Mosquitto – http://mosquitto.org/
– Instructable sobre MQTT e Intel Edison: http://www.instructables.com/id/MQTT-what-is-this/

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Internet Das Coisas » MQTT e Intel Edison
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Haroldo Amaral
Haroldo Amaral
20/07/2015 15:58

Parabéns Pedro, simples e direto!
Só me falta uma Edison para brincar aqui. hehe

Pedro Henrique Bertoleti
phfbertoleti
Reply to  Haroldo Amaral
20/07/2015 16:55

Obrigado Haroldo!

Talvez você goste:

Séries

Menu
WEBINAR
Além da IoT
DATA: 27/01 às 19:30H