ADS-B – Wir lauschen den Flugzeugen

Während meinen Recherchen bin ich auf das Thema ADS-B gestoßen. ADS-B steht für Automatic Dependant Surveillance Broadcast und bezeichnet das automatische Versenden von Flugdaten, wie Position, Höhe usw. , durch Flugzeuge. Diese Daten werden auf 1090 MHz übertragen und können von einfachen DVB-T Sticks empfangen und ausgewertet werden.

Einen wirklichen Sinn macht es nicht, aber ich finde das Thema cool. Dank Diensten wie Flightradar24Flightaware und Planefinder hat man den Flugraum über seinem Kopf immer im Blick, jedoch werden bestimmte Flüge, z.B. militärische, herausgefiltert. Wenn wir nun die Daten selber sammeln, sieht man auch diese. Mich hat hier interessiert, wer denn abends über meine Wohnung fliegt, denn auf dem Radar war nichts erkennbar.

Im nachfolgendem sieht man das Webinterface von Dump1090. Schön zu sehen sind dabei die Hubschrauber der Polizei mit den Kennungen Hummel, welche ansonsten für euch nicht sichtbar sind.

Dump1090 Webinterface

 

Was brauche ich für ADS-B

Es braucht nicht viel, ein Rapsberry Pi und ein DVB-T Stick, mehr ist nicht nötig. Ihr könnt die Software auch auf einem bestehenden Linux System einrichten. Der DVB-T Stick sollte mit einem RTL2832 und R820T2 ausgestattet sein. Ich habe mit einem Nooelec NESDR Mini 2+ angefangen und später auf einen Flightaware Pro Stick Plus gewechselt. In der nachfolgenden Grafik sieht man der unterschied zwischen beiden Sticks. Dank des eingebauten Verstärkers und des Filters des Pro Stick Plus, ist hier eine erhebliche Verbesserung erkennbar.  Kurz nach 17 Uhr habe ich die Sticks getauscht und ihr erkennt sofort die Verfbesserung in der Signalstärke und die Anzahl der erfassten Flugzeuge. Also wer sich für das Thema interessiert, sollte gleich zum Pro Stick Plus greifen. Ein Austausch der Sticks war kein Problem und es war keine weitere Arbeit als das Umstecken und Booten notwendig.

Dump1090 in Grafana

 

Installation

Bei der Installation habe ich mich an die Anleitung von abcd567 aus dem flightradar24 Forum gehalten, damit hatte ich sofort Erfolg. Daher werde ich hier dazu nichts weiter schreiben. Wenn ihr alles durchspielt, werden eure Daten an Flighradar24, Flightaware und Planefinder übermittelt. Damit seid ihr dann eigentlich auch fertig. Natürlich könnt ihr auf die Weitergabe verzichten und habt über dump1090 euren Luftraum im Blick.

 

Monitoring

Natürlich lässt sich das alles auch schön überwachen und monitoren. Mittels dem Dump1090-Exporters, welcher in einem Docker Container läuft, werden die Statistik Files von Dump1090 ausgewertet. Prometheus übernimmt diese Daten und wir können sie später in Grafana darstellen.

Die Installation von Docker-CE ist hier beschrieben, achte dabei auf die richtige Version, also armhf für einen Raspberry. Anschließend könnt ihr den Docker Container installieren und starten. Ersetzt bitte die IP-Adresse durch eure und passt die Koordinaten an. Bei einem Neustart wird der Container ebenfalls neu gestartet. Mit folgendem Befehl wird der Container automatisch heruntergeladen und gestartet.

docker run -p 9105:9105 --detach --restart always clawsicus/dump1090exporter --url=http://127.0.0.1/dump1090 --latitude=12.3456 --longitude=12.3456

Anschließend könnt ihr die Ausgabe mit folgendem Befehl testen. Hier solltet ihr Daten beginnend mit dump1090 sehen.

curl -s http://0.0.0.0:9105/metrics | grep -v "#"

Nun müssen wir Prometheus installieren und konfigurieren. Folgende Zeilen sollten euch die Version 2.4.3 installieren. Schaut bitte vorher nach einer aktuellen Version und eurem Target (arm, x86, …).


sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

cd ~
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.1.0/prometheus-2.4.3.linux-armv7.tar.gz

tar xvf prometheus-2.4.3.linux-armv7.tar.gz
sudo cp prometheus-2.4.3.linux-armv7/prometheus /usr/local/bin/
sudo cp prometheus-2.4.3.linux-armv7/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo cp -r prometheus-2.4.3.linux-armv7/consoles /etc/prometheus
sudo cp -r prometheus-2.4.3.linux-armv7/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
sudo cp prometheus-2.4.3.linux-armv7/prometheus.yml /etc/prometheus/
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

Nun passen wir das Config-File an und fügen folgenden Code ein. Passt dabei die IP eures Targets an.


sudo nano /etc/prometheus/prometheus.yml

- job_name: 'dump1090'
  scrape_interval: 10s
  scrape_timeout: 5s
  static_configs:
    - targets: ['127.0.0.1:9105']

Damit Prometheus auch automatisch starten, müssen wir noch ein Systemd Script erzeugen.

sudo nano /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

Anschließend brauch es einen Reload und wir können den Dienst aktivieren und starten.


sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

Für die Visualisierung nutzen wir Grafana. Die Installation hatte ich hier bereits beschrieben. Innerhalb von Grafana müsst ihr noch Prometheus als Datenquelle hinzufügen und könnt euch dann das dump1090-Dashbaord importireren. Anschließend erhaltet ihr folgende Auswertungen in Grafana.

 

Damit habt ihr es geschafft. Ihr empfangt nun die ADS-B Daten und könnt sie auswerten und auch weitergeben. Zusätzlich monitored ihr euren Empfang.

  Gefällt mir

Schreibe einen Kommentar