[IoT - Drones] Testando a Telemetria - Episódio 4
Tags: telemetry, iot, sensors, drone
Published: 2023-02-12 22:34:40

Neste episódio, vamos explorar como testar a telemetria dos drones. Para testar nosso cenário, precisamos ligar o drone Tello. Ao fazer isso, ele cria uma rede Wi-Fi "TELLO***" que podemos conectar ao nosso computador usando o código em Python.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2riotnt1z37ggaehofhz.png)

Com o drone ligado, podemos criar vôos programaticamente, gravar vídeos e ler a telemetria dos sensores. De acordo com a documentação do Tello, é possível ler 16 informações de sensores, incluindo temperatura, altitude, tempo de vôo, movimentação nos eixos x, y, z, entre outras. Essas informações são coletadas no seguinte formato: 

`“pitch:%d;roll:%d;yaw:%d;vgx:%d;vgy%d;vgz:%d;templ:%d;temph:%d;tof:%d;h:%d;bat:%d;baro:%.2f; time:%d;agx:%.2f;agy:%.2f;agz:%.2f;\r\n”`

Usamos o código em Python para ler esses dados na porta 8890, montar um JSON e publicá-los no MQTT no tópico "drones/drone01" de acordo com o padrão publish/subscribe. A frequência de leitura pode ser regulada no código Python (neste caso, 0,3 segundos).

Antes de iniciar a coleta da telemetria, precisamos acionar o Filebeat para que ele fique escutando as publicações no MQTT e enviando os dados para o Elasticsearch, através do pipeline "mqtt-test" que criamos anteriormente.

Na sua máquina com o Filebeat instalado, execute os seguintes comandos no terminal para testar, configurar e executar o Filebeat:

```
./filebeat test config
./filebeat test output
./filebeat setup
```

Se tudo estiver funcionando corretamente, podemos executar o Filebeat com o seguinte comando:

```
./filebeat -e

```

Para finalizar o teste acima, vamos criar um código para programar uma ação/Vôo com drone.

## Código do Drone

Precisamos criar um código em python para ler os dados dos sensores do Drone e publicá-los no nosso broker MQTT. Toda publicação precisa de um tópico e no nosso caso será "drones/drone01". Se eu estivesse gerenciando uma frota de drones, poderia criar outros tópicos como drones/drone02, drones/drone03, etc.

Existem algumas bibliotecas que fornece mecanismos para a programação no Tello.
Aqui um exemplo da biblioteca djitellopy.

```
pip install djitellopy

```
E um simples código exemplo que imprime os dados da telemetria, coletadas do drone em pleno vôo.

```
# Drone telemetry with Tello
from asyncio import sleep
from djitellopy import Tello

tello = Tello()

tello.connect()

while True:
    print(tello.get_current_state())
    sleep(0.3)

```

## Teste final

Agora, com o drone ligado e conectado, iniciamos a coleta da telemetria usando o seguinte comando:

```
python pub-drone-telemetry.py

```
Enquanto os dados são coletados pelo drone, processados pelo nosso pipeline e populados no índice, podemos ver os registros chegando através da opção "Discover" no Kibana.

![Kibana Drone](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0536porl8usj64rci00r.png)

Note os campos drone-data.sensorX criados na lateral esquerda da tela. Cada campo corresponde a um dado de sensor do drone no mesmo timestamp.

Agora que temos a telemetria coletada dos sensores do drone e enviada para o Elasticsearch através do Filebeat, no próximo episódio final, podemos explorar como visualizar esses dados de maneira eficiente no Kibana.

Abraços!

Este é o quarto 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)