DEV Community

Cover image for [IoT - Drones] Configurando o MQTT Broker - Episódio 2
Alex Salgado
Alex Salgado

Posted on • Edited on

1

[IoT - Drones] Configurando o MQTT Broker - Episódio 2

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.

Image description

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
Enter fullscreen mode Exit fullscreen mode

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.

  1. [IoT - Drones] Trabalhando com telemetria - Episódio 1
  2. [IoT - Drones] Configurando o MQTT Broker - Episódio 2
  3. [IoT - Drones] Preparando a ingestão de dados através do Filebeat- Episódio 3

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more