DEV Community

Cover image for [IoT - Drones] Testando a Telemetria - Episódio 4
Alex Salgado
Alex Salgado

Posted on • Updated on

[IoT - Drones] Testando a Telemetria - Episódio 4

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

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

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

./filebeat -e

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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)

Enter fullscreen mode Exit fullscreen mode

Teste final

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

python pub-drone-telemetry.py

Enter fullscreen mode Exit fullscreen mode

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

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
  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

Top comments (0)