Suche

    flights2mqtt

    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

    FeldBeschreibung
    brokerAdresse des MQTT-Brokers, z. B. mqtt://localhost
    portPort des Brokers (Standard: 1883)
    topicTopic, unter dem die Flugdaten veröffentlicht werden
    clientIdEindeutige Client-ID für die Verbindung

    Tracking

    FeldBeschreibung
    latitudeBreitengrad des Mittelpunkts
    longitudeLängengrad des Mittelpunkts
    radiusRadius des Gebiets in Kilometern
    airportIATA- oder ICAO-Code des Flughafens, z. B. MUC
    intervalAbfrageintervall 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 .