[IoT - Drones] Configurando o MQTT Broker - Episódio 2
Alex Salgado
Posted on January 23, 2023
Primeiramente, gostaria de agradecer a todos que se manifestaram, compartilhando seus próprios cases e "dores" com Drones após a publicação do Episódio 1. Espero que consiga ajudá-los ainda mais e aqueles que nunca trabalharam nessa área, possam iniciar com mais informação.
A partir do arquitetura proposta no episódio 1, vamos seguindo na implementação.
Talvez umas das partes essenciais nessa arquitetura seja a instalação de um Broker utilizando o protocolo MQTT. Então vamos colocá-lo como primeiro passo de configuração em nosso projeto.
Antes porém, eu colocaria um passo 0.
Passo 0 - Configurar ambiente virtual Python
Como estamos desenvolvendo um projeto em Python, gosto de criar um ambiente separado. Assim teremos todas as dependências e bibliotecas configuradas e descritas em um só lugar, facilitando a reprodução do projeto.
Escolha uma pasta em seu computador (no meu caso estou utilizando um Macbook) e seguindo os passos do link https://docs.python.org/pt-br/3/library/venv.html, vamos criar nosso ambiente.
python3 -m venv venvdrone
A partir de agora, vamos trabalhar no ambiente venvdrone e todas as bibliotecas e pacotes necessárias serão documentadas e instaladas de forma independente.
Passo 1 - Criar ou usar um broker MQTT
Existem alguns brokers MQTT prontos para serem usados como teste, por exemplo: "test.mosquitto.org", sempre usando a porta 1883 como padrão de acesso via TCP, mas se você quer mais segurança, existem outras opções de portas com autenticação e encriptação.
Para nosso experimento, criei e instalei uma máquina EC2 na AWS e acionei o Mosquitto, deixando-o disponível no seguinte endereço.
tcp://ec2-18-204-19-124.compute-1.amazonaws.com:1883
Dessa forma, utilizando a biblioteca python Eclipse Paho MQTT é possível publicar e se inscrever no tópico usando o endereço do broker.
pip install paho-mqtt
Este comando instala o cliente python do paho para ser usado em nosso código.
Configurações feitas, precisamos de um código para testar.
from paho.mqtt import client as mqtt_client
broker = 'ec2-18-204-19-124.compute-1.amazonaws.com'
port = 1883
topic = "drones/drone01"
.
.
.
def publish(client):
msg_count = 0
while True:
time.sleep(1)
# Mock-up test for publish drone sensors in MQTT
msg = '{"pitch": 89, "roll": 3}'
result = client.publish(topic, msg)
# result: [0, 1]
status = result[0]
if status == 0:
print(f"Send `{msg}` to topic `{topic}`")
else:
print(f"Failed to send message to topic {topic}")
msg_count += 1
A primeira linha importa a biblioteca do paho de forma a conseguir publicar e se inscrever em algum tópico gerenciado pelo broker mqtt.
Na linha seguinte, fizemos as configurações para conseguir acessar o broker, através de uma porta e definindo um tópico.
Na função def publish
, criamos um código que publica um objeto json no tópico "drones/drone01", a cada 1 segundo. Caso haja erro na publicação, uma mensagem será enviada.
Pronto, finalizamos a primeira parte da implementação, configurando e testando o nosso broker mqtt.
Dúvidas? Como está sendo até aqui? Seguiremos no episódio 3.
Abraços!
Este é o segundo capítulo da série [IoT Drones]. Caso tenha perdido algum episódio anterior, não se preocupe, confira a lista abaixo para acompanhar a série completa.
Posted on January 23, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.