Wie viele Tage nach Vollladung der Akku bei 97% gehalten wird, bevor die automatische Entladung auf 60% beginnt.
📡 DJI FlightHub 2 – Akku-Datenquelle
DJI führt nur nach sicherer Akku-Seriennummernzuordnung mit gültigem Ladestand und mindestens so neuer Messzeit. Eine neuere manuelle Ladung bleibt bis zur nächsten DJI-Meldung führend; die Ablesung wird nie gelöscht.
DJI FlightHub 2
Geführte Ersteinrichtung
Schritt 1 von 5
Willkommen
Dieser Assistent führt dich durch die einmalige Verbindung von DJI FlightHub 2 mit der App. Du kannst jederzeit zurückgehen oder abbrechen.
Bereits bewiesen: 772 echte DJI-Nachrichten und 326 Akku-Beobachtungen wurden erfolgreich rein eingehend verarbeitet.
OpenAPI liest Projekte, Geräte, Flüge und HMS.
MQTT empfängt ausschließlich OSD-/STATE-Telemetrie von DJI.
Keine Steuerbefehle, kein Publish der App, kein Flugimport und keine Rückübertragung.
OpenAPI-Lesezugang
Öffne FlightHub 2 in einem zweiten Tab. Beide Angaben werden ausschließlich für lesende DJI-GET-Abfragen benötigt.
Fundstelle: FlightHub 2 → Organisationseinstellungen → „Open-API“ → Kopier-Symbol.
Fundstelle: lange UUID in der FlightHub-Browseradresse direkt nach /organization/. Nicht die kurze Organisations-ID verwenden.
App mit dem Broker verbinden
Hier gehören ausschließlich die internen Lesedaten der App hinein. Diese Daten werden nicht in FlightHub eingetragen.
Format: mqtts://Name:Port. Keine Zugangsdaten in die Adresse schreiben.
app_reader darf nur SUBSCRIBE/READ. dji_writer gehört nicht hierher.
Das Kennwort stammt aus der Broker-Einrichtung und wird in der App verschlüsselt gespeichert.
MQTT-Ziel in FlightHub 2 eintragen
Diese Angaben werden direkt in FlightHub 2 unter Geräteinformationssynchronisierung eingetragen. Die App kann sie aus Sicherheitsgründen nicht auslesen oder dorthin übertragen.
ÜbertragungsprotokollTCP
Benutzerdji_writer
KennwortSchreibkennwort aus der Broker-Einrichtung
Wichtig: Das Schreibkennwort nicht in der App eintragen. FlightHub darf nur auf thing/product/+/osd und thing/product/+/state veröffentlichen.
Wo ändere ich welches Kennwort?
dji_writer: zuerst in der Broker-/Portainer-Verwaltung ändern, danach denselben neuen Wert in FlightHub 2 eintragen und dort testen.
app_reader: zuerst in der Broker-/Portainer-Verwaltung ändern, danach im manuellen App-Feld „App-Passwort“ ersetzen und den lokalen Empfang neu laden.
Die beiden Kennwörter müssen verschieden sein. Das normale App-Anmeldekennwort wird getrennt im Benutzerprofil geändert.
Prüfen und übernehmen
Die Zusammenfassung wird erstellt …
Mit „In die Maske übernehmen“ werden die Angaben unten eingetragen. Es wird noch nichts gespeichert, kein Verbindungstest gestartet und nichts an DJI gesendet.
A. OpenAPI-Lesezugang: FlightHub → App
Wofür ist dieser Block? Die App liest damit Projekte, Geräte, Flüge und HMS-Meldungen über freigegebene DJI-GET-Endpunkte.
Einmalig einzutragen sind nur der Organization Key und die lange Organization UUID.
Region Europa bleibt ausgewählt; das Projekt lädt die App anschließend automatisch von DJI.
1
💡 Woher?fh.dji.com → Organisationseinstellungen → Karte „Open-API“ → Kopier-Symbol. AES-256-GCM-verschlüsselt; das Auge zeigt ihn nur auf ausdrücklichen Klick 30 Sekunden an.
⚠ Verschlüsselung NICHT aktiv: SECRETS_KEY fehlt auf dem Server – Secrets würden im Klartext gespeichert! .env prüfen (siehe .env.example).
2
🌐 Technisches DJI-Gateway, für Deutschland: Europa. Nicht die FlightHub-Webseite.
💡 Woher? Einmalig aus der Browser-Adresse in FlightHub: fh.dji.com/organization/<UUID>/... – nicht die kurze Org.-ID („Z4V3CD“). Bereits eingerichtet ✓
3
🤖 Kommt automatisch von DJI – neue Projekte erscheinen hier von selbst, sobald sie in FlightHub angelegt sind. Nichts abtippen. Bei Verbindungsproblemen erscheint ein Freitext-Feld.
🛡 Technisch erzwungene Einbahnstraße: DJI → App.
OpenAPI verwendet nur freigegebene GET-Endpunkte; der MQTT-Client kann nur OSD/STATE abonnieren
und besitzt keine Publish-Funktion. Steuerung und Befehle bleiben vollständig bei DJI.
B. MQTT-Telemetrie: FlightHub → Broker → App
Wofür ist dieser Block? Hier kommen OSD-/STATE-Livedaten wie Akku, Position, Höhe und Geschwindigkeit automatisch an.
DJI und App verwenden absichtlich zwei getrennte Konten. Die folgenden beiden Karten zeigen genau, was wohin gehört.
Der echte Empfangsweg ist bereits mit 772 DJI-Nachrichten und 326 Akku-Beobachtungen nachgewiesen.
1. Nur in DJI FlightHub 2 eintragenBenutzer: dji_writerPasswort: getrenntes Broker-Schreibkennwort. Nicht das App-Passwort unten verwenden. Es wird aus Sicherheitsgründen nicht in dieser App gespeichert.
2. Nur unten in dieser App eintragenBroker: mqtts://bbo-mqtt-broker:8883Benutzer: app_reader · Passwort: Feld untenDieser Zugang darf ausschließlich OSD/STATE lesen und nichts veröffentlichen. Nicht in DJI eingeben.
Kennwörter ändern: Wo muss welcher Wert ersetzt werden?
dji_writer – DJI-Schreibzugang1. Im Mosquitto-Broker beziehungsweise Portainer ändern.2. Danach denselben neuen Wert in FlightHub 2 unter Geräteinformationssynchronisierung eintragen und testen.Dieses Kennwort wird nie in der App gespeichert.
app_reader – App-Lesezugang1. Im Mosquitto-Broker beziehungsweise Portainer ändern.2. Danach unten im Feld „App-Passwort“ ersetzen, speichern und „Lokalen Empfang neu laden“ wählen.Das ist nicht dein persönliches Anmeldekennwort.
Nur verschlüsseltes mqtts://; keine Zugangsdaten in die URL schreiben.
Dieses App-Konto muss beim Broker ausschließlich SUBSCRIBE/READ dürfen. In DJI wird ein getrenntes Konto eingetragen, das nur auf diese Topics PUBLISH darf.
Nur für app_reader in dieser App; nicht in DJI eingeben. AES-256-GCM-verschlüsselt gespeichert.
Ausgewertete Werte bleiben immer erhalten. Rohmeldungen mit Akku-, Flug-
oder Umweltbeobachtungen werden nie automatisch gelöscht.
📡 DJI-Telemetrie – alle empfangenen Felder
Offen: – Meldungen
⚠ OpenAPI HMS – Störungen und Gerätewarnungen
HMS bleibt vom MQTT-Empfang getrennt. Sobald neue Telemetrie eine lokal bekannte Drohne als online meldet,
startet die App automatisch einen reinen DJI-GET-Abruf. Pro Online-Phase gilt eine 15-minütige Abrufsperre.
Es werden keine App-Daten oder Befehle zu DJI gesendet.
OpenAPI V2: Lesen (Projekte, Geräte, Flüge) – in allen Paketen enthaltenFlightHub Sync: MQTT-Zustand wird geladen …
📧 E-Mail-Versand
Versandweg wird ermittelt …
☁️ Microsoft 365 (Graph-API)
💡 Für Microsoft Graph wird kein Postfach-Passwort eingegeben, sondern der „Wert“ des Client-Secrets aus Microsoft Entra. Ein Wert aus .env bleibt serverseitig und kann hier nicht angezeigt werden; ein hier gespeicherter Wert ist AES-256-GCM-verschlüsselt.
💡 30 Tage vorher kommt täglich eine Erinnerungs-Mail mit Erneuerungs-Anleitung an die System-Admin-Adresse.
📖 Anleitung: Woher kommen diese Werte? (Entra-App einrichten / Secret erneuern)
Einmalige Einrichtung:entra.microsoft.com → Entra ID → App-Registrierungen → „+ Neue Registrierung“ (Name frei wählbar, „Nur ein Mandant“, Umleitungs-URI leer).
Auf der Übersicht der App stehen Anwendungs-ID (Client) und Verzeichnis-ID (Mandant) — in die Felder oben eintragen.
Neues Ablaufdatum eintragen, Speichern, dann Test-E-Mail senden. Alte abgelaufene Schlüssel im Portal löschen.
📩 SMTP-Anbieter
Nur beim Versandweg SMTP erforderlich.
💡 Hinweis: Für Microsoft 365 funktioniert klassisches SMTP mit Passwort meist nicht mehr (Basic-Auth-Abschaltung) — dafür oben den Graph-Weg wählen.
💡 Aus diesem Postfach versendet die App — gilt für beide Versandwege.
💡 Alle automatischen System-Benachrichtigungen (Backup, Lizenz-Ablauf, OCR-Fehler, Secret-Ablauf) gehen an diese Adresse.
🔔 Benachrichtigungen
⏰ Lizenz-Ablauf-Warnung
📄 OCR-Fehler-Schwellwert
🛫 Flugentwürfe aus DJI-Telemetrie
Abgeschlossene Flüge der Fernbedienung oder des Docks erscheinen als Entwurf in der Historie. Nach der Wartezeit geht eine Sammelmail an die Piloten. Dock-Automatikflüge werden standardmäßig nicht gemeldet, um Mailfluten zu vermeiden; sie bleiben als Entwürfe in der Historie sichtbar.
Sendet eine Test-Mail an die System-Admin-E-Mail-Adresse.
📥 Daten-Import (LocalStorage / IndexedDB)
⚠️ Nur für die einmalige Migration alter Daten aus der früheren App-Version – liest die IndexedDB des Browsers aus oder importiert eine JSON-Datei.
📘 Hersteller-Handbücher und Anleitungen für alle Drohnen-Modelle. PDF, max. 50 MB – OCR und Paperless-Ablage laufen automatisch.
🏷️ Laufender Stand
Versionsangaben werden geladen …
Commit und Container stammen aus dem laufenden Image – damit lässt sich ein Deployment eindeutig zuordnen.
App-Fehleranalyse
wird geladen …
Wird geladen …
↓ Protokoll herunterladen:
Gerätemeldungen
wird geladen …
📥 Meldungen von DJI hochladen
Die Datei hms.json aus dem Controller-Export, zu finden unter
DJI/HMS/hms.json. Mehrfaches Hochladen derselben Datei ist
unbedenklich — bereits vorhandene Meldungen werden übersprungen.
Wichtig: Der Controller hält nur wenige Tage vor, deshalb
lohnt sich das regelmäßig.