Raspberry Pi 3 na IoT - MQTT e Python

MQTT e Python

Este artigo mostrará como instalar e utilizar o MQTT e Python na Raspberry Pi 3, sendo assim um dos caminhos para se fazer projetos IoT nesta plataforma.

 

 

Pré-requisitos

 

Para reproduzir o conteúdo deste artigo, os seguintes pré-requisitos são necessários:

  • Possuir uma Raspberry Pi 3 com uma distribuição Linux instalada*;
  • A Raspberry Pi 3 deve ter acesso à Internet (Wi-Fi ou cabeada);
  • Ter noções básicas de MQTT;
  • Ter noções básicas de programação em Python.

  

*Este experimento foi feito e testado somente na distribuição Raspbian, porém não vejo razão para não funcionar nas demais.

 

 

Por que usar MQTT na Raspberry Pi 3?

 

O MQTT (Message Queue Telemetry Transport) é um leve e eficiente protocolo voltado para IoT. Possui header extremamente compacto e exige pouquíssimos recursos de hardware, processamento e baixíssima banda para funcionar. Como é calcado no TCP, possui também portanto garantia de entrega das mensagens (algo essencial em IoT).

 

Além disso, utilizando-se de um servidor (broker) na nuvem, a comunicação torna-se a nível global. Ou seja, é possível interagir via MQTT com a Raspberry Pi 3 de qualquer lugar do planeta que possua acesso à Internet. 

 

Outro ponto interessante é que este protocolo possui implementações nos mais diversos sistemas operacionais, permitindo assim que dispositivos totalmente diferentes "conversem" pela Internet.

 

 

Broker utilizado

  

Há muitos brokers disponíveis na Internet (tanto grátis quanto pagos). Neste exemplo, utilizaremos o broker oficial do Eclipse (iot.eclipse.org), pois consiste de um broker grátis e com baixo downtime.

 

 

Preparação

  

Antes de codificar o experimento / projeto, primeiro é necessário baixar o Paho-MQTT. O Paho-MQTT trata-se do cliente MQTT oficial, sendo este disponível para as mais diversas linguagens (incluindo Python).

 

Para tal, primeiramente abra o terminal/console na Raspberry Pi 3. Uma vez aberto, clone o repositório do Paho-MQTT para Python utilizando o seguinte comando:

 

 

Este processo pode demorar alguns minutos, dependendo da velocidade de sua conexão com a Internet. Uma vez clonado o repositório, deve-se entrar na pasta com o conteúdo do mesmo e instalar o Paho-MQTT para Python. Para tal, utilize os seguintes comandos:

 

 

Após a instalação, está tudo pronto para se começar a desenvolver aplicações em Python que utilizem MQTT.

 

 

Mãos à obra!

 

O projeto / experimento consistirá de uma aplicação Python capaz de escrever na tela todas as mensagens recebidas pelo broker em um determinado tópico. É chegada a hora de fazer código! Para isto, salve o seguinte código como MQTT.py em alguma pasta conhecida:

 

 

Para executar no terminal, vá a pasta onde o arquivo MQTT.py está salvo e utilize o seguinte comando:

 

 

A aplicação será iniciada e todas as mensagens recebidas no tópico PAHOMQTTRaspPi3 irão aparecer na tela. 

 

Para testar, utilize qualquer cliente MQTT (como, por exemplo, o MQTTLens para PC ou o MyMQTT para Android) em qualquer sistema operacional, conecte-se ao broker iot.eclipse.org e publique no tópico PAHOMQTTRaspPi3 uma mensagem qualquer. A mensagem irá aparecer na tela do terminal da Raspberry Pi 3!

 

Para sair da aplicação, pressione Ctrl + C.

 

 

Saiba mais

 

 

 

Referências

 

NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

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

Pedro Bertoleti
Sou engenheiro eletricista formado pela Faculdade de Engenharia de Guaratinguetá (FEG - UNESP) e trabalho com Android embarcado em Campinas-SP. Curioso e viciado em tecnologia, sempre busco me aprimorar na área de sistemas embarcados (modalidades bare-metal, RTOS, Linux embarcado e Android embarcado).Para mais informações, acesse minha página no Facebook:https://www.facebook.com/pbertoleti

14
Deixe um comentário

avatar
 
8 Comment threads
6 Thread replies
3 Followers
 
Most reacted comment
Hottest comment thread
9 Comment authors
Davi GalhardoOtávio NetoPedro BertoletiHillermann LimaMatheus Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Davi Galhardo
Visitante
Davi Galhardo

nessa parte
{ #definicoes:
Broker = "iot.eclipse.org"
PortaBroker = 1883
KeepAliveBroker = 60
TopicoSubscribe = "PAHOMQTTRaspPi3" }

para adicionar Login e Senha.
Utilizo Mosquitto em outra Raspberry como broker, com login e senha,
onde coloco esses dados?

Otávio Neto
Visitante
Otávio Neto

Tenho algumas dúvidas e se você pudesse me ajudar seria excelente pra mim. Vamos lá: Como faço pra enviar mensagens pelo raspberry para ver pelo MQTTLens? No meu projeto estou controlando um sensor pela rasp, preciso enviar um sinal pra ele medir e depois enviar essas medições por mqtt pra nuvem. Teria algum servidor que hospede esses meus dados na nuvem para ficarem salvos?

Hillermann Lima
Visitante
Hillermann Lima

Muito bom. Usei o Mosquitto na minha rasp e só troquei os dados do Broker. Rodou de primeira. Valeu pelo excelente tutorial.

Matheus
Visitante
Matheus

como processar esse dado recebido do tópico e enviar para outro tópico?

Andre Queiroz
Visitante
Andre

Excelente,

berdam
Visitante
berdam

Quando rodei o arquivo, aconteceu esse erro. Como resolver ?

File "client_mqtt.py", line 38, in
client = mqtt.Client()
AttributeError: 'module' object has no attribute 'Client'

Roniere Rezende
Membro

Muito bom o texto Pedro! Gostaria de saber se a partir desse protocolo, eu consigo enviar dados de um sensor e processá-los em nuvem. Se sim, qual servidor seria melhor para isso?

Mark
Visitante
Mark

Excelente guia! Simples, direto e eficiente. Valuezão!