[IoT - Drones] Configurando o MQTT Broker - Episódio 2
Tags: iot, mqtt, drone, elasticsearch
Published: 2023-01-23 12:32:45

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ojmmoo0osxiha8ojxm3x.png)

[A partir do arquitetura proposta no episódio 1, vamos seguindo na implementação.](https://dev.to/salgado/iiot-trabalhando-com-telemetria-de-drones-episodio-1-38mb)

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](https://www.eclipse.org/paho/)** é 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.

1. [[IoT - Drones] Trabalhando com telemetria - Episódio 1](https://dev.to/salgado/iiot-trabalhando-com-telemetria-de-drones-episodio-1-38mb)
2. [[IoT - Drones] Configurando o MQTT Broker - Episódio 2](https://dev.to/salgado/iot-drones-configurando-o-mqtt-broker-episodio-2-28l4)
3. [[IoT - Drones] Preparando a ingestão de dados através do Filebeat- Episódio 3](https://dev.to/salgado/iot-drones-preparando-a-ingestao-de-dados-atraves-do-filebeat-episodio-3-40ok)