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

salgado

Alex Salgado

Posted on January 23, 2023

[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
💖 💪 🙅 🚩
salgado
Alex Salgado

Posted on January 23, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related