Wie funktioniert unsere ADS-B gesteuerte Hindernisbefeuerung?

ADS-B-gesteuerte Hindernisbefeuerung am Antennenmast DB0SH

An unserem Antennenmast am Standort DB0SH in Flensburg betreiben wir eine Hindernisbefeuerung, die nicht rund um die Uhr leuchtet, sondern sich automatisch und in Echtzeit dann einschaltet, wenn tatsächlich ein Luftfahrzeug in der Nähe ist – gesteuert über ADS-B-Flugverkehrsdaten. Möglich macht das eine Kette aus Flugverkehrsüberwachung, Hausautomation und IoT-Technik, die wir hier einmal komplett von den Rohdaten bis zum Lichtschalter nachzeichnen.

Der Ausgangspunkt: ADS-B

Moderne Luftfahrzeuge senden über ihren Transponder im Modus S auf 1090 MHz kontinuierlich sogenannte Extended Squitter aus – kleine Datenpakete mit Position, Flughöhe, Kennung und weiteren Flugdaten, mehrmals pro Sekunde, ganz ohne dass eine Bodenstation aktiv anfragen müsste. Dieses Verfahren heißt ADS-B (Automatic Dependent Surveillance–Broadcast) und wird ursprünglich für die Flugsicherung genutzt.

Unser Empfänger dekodiert dieses Signal fortlaufend und stellt die aktuell sichtbaren Luftfahrzeuge als JSON-Datei (aircraft.json) bereit – mit Position, Höhe (alt_baro), Kennung und weiteren Feldern für jedes erfasste Flugzeug.

Vom Datenstrom zur Entscheidung

Ein ioBroker-Skript ruft diese Datei alle fünf Sekunden per HTTP ab und rechnet für jedes erfasste Flugzeug in Echtzeit nach, ob es für unsere Befeuerung relevant ist:

  • Räumlicher Abstand: Aus der eigenen Standortkoordinate und der Position des Flugzeugs wird per Haversine-Formel die horizontale Entfernung berechnet. Die gemeldete Flughöhe wird per Satz des Pythagoras hinzugerechnet, sodass am Ende ein echter dreidimensionaler Abstand entsteht – ein tief fliegendes Flugzeug in 4 km Entfernung wird also anders bewertet als eines in gleicher horizontaler Distanz, aber auf Reiseflughöhe.
  • Schwellenwerte: Nur Luftfahrzeuge innerhalb von 5 km Radius und unterhalb von 2000 ft Höhe gelten als relevant.

Damit die Befeuerung nicht bei jedem kurzen Datenaussetzer flackert, arbeitet das System mit zwei zeitlichen Puffern: Ein neu erkanntes Flugzeug schaltet die Befeuerung sofort ein, ein verschwundenes Flugzeug wird aber erst nach 30 Sekunden ohne erneute Erfassung tatsächlich als „ausgeflogen“ gewertet. Verlässt das letzte erfasste Flugzeug den Radius, läuft zusätzlich eine 60-sekündige Ausschalt-Hysterese, bevor tatsächlich abgeschaltet wird – kommt in dieser Zeit ein neues Flugzeug hinzu, bleibt die Befeuerung durchgehend an, statt kurz aus- und wieder einzuschalten.

Ergänzend prüft das Skript per Astro-Berechnung, ob es überhaupt Nacht ist – tagsüber bleibt die automatische Steuerung inaktiv, sofern nicht per Testmodus-Schalter ausdrücklich auch ein Tagbetrieb zu Testzwecken aktiviert wurde.

Vom Softwarebefehl zum echten Licht

Sobald die Entscheidung „einschalten“ oder „ausschalten“ feststeht, schickt das Skript einen Befehl per MQTT an ein Tasmota-basiertes Funkrelais, das direkt an der Befeuerung hängt. MQTT ist ein sehr schlankes Nachrichtenprotokoll, wie geschaffen für genau solche Kurzbefehle in der Hausautomation: Das Skript veröffentlicht einfach den Wert ON oder OFF auf einem Befehls-Topic, der MQTT-Broker (Mosquitto) leitet die Nachricht in Echtzeit an das Relais weiter, das daraufhin den Kontakt schaltet.

Wichtig dabei: Das System vertraut dem eigenen Befehl nicht blind. Das Relais meldet seinen tatsächlichen Schaltzustand über ein eigenes Rückmeldungs-Topic zurück an den Broker. Erst diese Rückmeldung – nicht der ursprüngliche Befehl – löst die Telegram-Benachrichtigung „Befeuerung eingeschaltet“ bzw. „ausgeschaltet“ aus. Diese Rückkopplungsschleife stellt sicher, dass die Meldungen den echten physischen Zustand widerspiegeln und nicht nur den Wunschzustand der Software.

Sofortige Information per Telegram

Neben der reinen Schaltmeldung sendet das System bei jedem erkannten Ein- und Ausflug eine detaillierte Telegram-Nachricht mit Flugzeugkennung, Entfernung, Höhe und einem direkten Link zur Position auf OpenStreetMap – sodass man auf einen Blick sieht, welches Flugzeug gerade den Ausschlag gegeben hat.

Selbstüberwachung: Was, wenn etwas ausfällt?

Ein automatisches System, das niemand beobachtet, muss auch dann verlässlich Alarm schlagen, wenn es selbst gestört ist. Zwei Mechanismen übernehmen das:

  • ADS-B-Watchdog: Bleiben die Datenabrufe vom Empfänger 30 Minuten am Stück erfolglos, geht das System vorsorglich von einer möglichen Störung aus, schaltet zur Sicherheit die Befeuerung ein und benachrichtigt uns per Telegram.
  • Last-Will-Überwachung (LWT): Das Tasmota-Relais meldet dem MQTT-Broker per sogenanntem Last Will laufend „ich bin online“ – fällt diese Meldung länger als 10 Minuten aus, gilt das Gerät als offline, und auch das wird umgehend gemeldet. Dieser Zustand wird sogar über einen Neustart des Steuerungsskripts hinweg gespeichert, damit keine Ausfallzeit unbemerkt verloren geht.

Live mitverfolgen

Alle diese Zustände – Schaltstatus, Geräteverbindung, Watchdog, aktuell erfasste Luftfahrzeuge und das letzte Ereignis – lassen sich in Echtzeit auch direkt auf dieser Website verfolgen: Ein kleines Dashboard verbindet sich per WebSocket mit einem eigens dafür eingerichteten, nur lesenden Zugang zu unserem MQTT-Broker und zeigt den aktuellen Zustand, ohne dass dabei irgendein Schreibzugriff auf die Steuerung möglich ist. Mehr zu unserer Relais-Station findet ihr auf der DB0SH-Relaisseite.

Der komplette Weg auf einen Blick

Transponder-Signal (1090 MHz) → ADS-B-Empfänger dekodiert & stellt aircraft.json bereit → ioBroker-Skript berechnet 3D-Abstand & Höhe → Radius-/Höhen-/Tag-Nacht-Prüfung mit Entprellung → MQTT-Schaltbefehl an das Tasmota-Relais → physisches Schalten der Befeuerung → MQTT-Rückmeldung bestätigt den echten Zustand → Telegram-Benachrichtigung.

Eingesetzte Technologien: ADS-B-Empfang, ioBroker (JavaScript-Automatisierung), MQTT/Mosquitto als Nachrichtenvermittler, Tasmota-Firmware auf dem Schaltrelais, Telegram Bot API sowie ein WebSocket-Live-Dashboard.

Häufige Fragen zur ADS-B-Hindernisbefeuerung

Was ist ADS-B?

ADS-B (Automatic Dependent Surveillance–Broadcast) ist ein Verfahren, bei dem Luftfahrzeuge selbstständig und ohne Anfrage laufend ihre Position, Höhe und weitere Flugdaten per Funk auf 1090 MHz aussenden. Bodenstationen wie unser Empfänger können dieses Signal passiv empfangen und auswerten.

Warum leuchtet die Befeuerung nicht durchgehend?

Weil unser System per ADS-B in Echtzeit erkennt, ob überhaupt ein Luftfahrzeug in Reichweite (5 km Radius, unter 2000 ft Höhe) ist, wird die Befeuerung nur bei tatsächlichem Bedarf geschaltet – inklusive Entprellung gegen kurze Datenaussetzer und einer Ausschalt-Hysterese gegen unnötiges Flackern.

Was passiert, wenn die ADS-B-Daten ausfallen?

Ein eigener Watchdog erkennt, wenn 30 Minuten lang keine ADS-B-Daten mehr abgerufen werden können. In diesem Fall schaltet das System vorsorglich die Befeuerung ein und informiert uns per Telegram, damit von einem möglichen Ausfall niemand überrascht wird.

Wie wird der tatsächliche Schaltzustand überprüft?

Das Relais meldet seinen realen Zustand per MQTT-Rückmeldung an das System zurück. Erst diese Bestätigung – nicht der gesendete Befehl – löst die Telegram-Benachrichtigung aus, sodass Meldungen immer den echten physischen Zustand der Befeuerung widerspiegeln.