flights2mqtt ist ein schlanker Node.js-Dienst, der Flugdaten von Flightradar24 ins eigene Netz holt. Er beobachtet die ankommenden und abfliegenden Flüge eines Flughafens und veröffentlicht die wichtigsten Angaben über MQTT. Jeder Flug bekommt ein eigenes Topic, benannt nach der Flugnummer, mit Detaildaten wie Flugzeugtyp, Status und aktuellen Informationen.
Damit lassen sich Fluginformationen in Smart-Home-Systeme, Visualisierungen, LED-Anzeigen oder eigene Automationen einbinden. In Symcon übernimmt das Modul Flugradar die Daten und zeigt sie in der Kachelvisualisierung an.
Die Funktionen im Überblick
- Flughafen oder Gebiet: Abfrage aller Flugzeuge in einem Radius um einen frei wählbaren Mittelpunkt
- Flughafen-Filter: auf Wunsch nur Flüge, die einen bestimmten Flughafen (IATA- oder ICAO-Code) als Start oder Ziel haben
- Ein Topic pro Flug: eindeutig über die Flugnummer, mit strukturierten Detaildaten
- Einstellbares Intervall: Abfragehäufigkeit in Sekunden
- Läuft als Dienst: mitgelieferte systemd-Unit für den Dauerbetrieb
Voraussetzungen
- Node.js
- ein MQTT-Broker, zum Beispiel der MQTT-Server in Symcon oder Mosquitto
Installation
Das Projekt in ein beliebiges Verzeichnis klonen, im Beispiel /opt/flights2mqtt, und als systemd-Dienst einrichten:
cd /opt
git clone https://github.com/wilkware/flights2mqtt
cd flights2mqtt
npm install
sudo cp ./docs/flights2mqtt.service /etc/systemd/system
sudo chmod +x /opt/flights2mqtt/index.js
sudo systemctl daemon-reload
sudo systemctl enable flights2mqtt.service
sudo systemctl start flights2mqtt.service
Ob der Dienst läuft, zeigt sudo systemctl status flights2mqtt.service.
Konfiguration
Die Einstellungen stehen in der config.json. Als Vorlage dient die mitgelieferte Beispieldatei:
cp config.json.sample config.json
nano config.json
{
"mqtt": {
"broker": "mqtt://127.0.0.1",
"port": 1883,
"topic": "flights/muc",
"clientId": "flights2mqtt"
},
"tracking": {
"latitude": 48.353802,
"longitude": 11.7861,
"radius": 50,
"airport": "MUC",
"interval": 300
}
}
MQTT
| Feld | Beschreibung |
|---|---|
broker | Adresse des MQTT-Brokers, z. B. mqtt://localhost |
port | Port des Brokers (Standard: 1883) |
topic | Topic, unter dem die Flugdaten veröffentlicht werden |
clientId | Eindeutige Client-ID für die Verbindung |
Tracking
| Feld | Beschreibung |
|---|---|
latitude | Breitengrad des Mittelpunkts |
longitude | Längengrad des Mittelpunkts |
radius | Radius des Gebiets in Kilometern |
airport | IATA- oder ICAO-Code des Flughafens, z. B. MUC |
interval | Abfrageintervall in Sekunden |
Ist airport gesetzt, berücksichtigt der Dienst nur Flüge von oder zu diesem Flughafen. Bleibt das Feld leer, werden alle Flugzeuge im Radius erfasst. Mit den Werten oben fragt flights2mqtt also alle 300 Sekunden die Flüge von und nach München im Umkreis von 50 km ab.
Zum Testen lässt sich der Dienst auch direkt starten, mit DEBUG=flights2mqtt:* davor gibt er ausführliche Meldungen aus:
node index.js
Einbindung in Symcon
Für die Anzeige in Symcon gibt es das Modul Flugradar . Es abonniert die Topics von flights2mqtt über den MQTT-Server und stellt die Flüge in einer Kachel übersichtlich dar.
Die Flugdaten kommen über die FlightRadarAPI . flights2mqtt steht unter der MIT-Lizenz .