
GUI-basierter WiFi- und Bluetooth-Analyzer der nächsten Generation für Linux
Sparrow-WiFi ist ein Tool zur 2,4 GHz- und 5 GHz-WLAN- und Bluetooth-Spektralanalyse für Linux. Es integriert WLAN-Scanning, Bluetooth Low Energy- und Classic-Erkennung, Software Defined Radio-Spektrumanalyse (HackRF, Ubertooth), GPS-Tracking, FAA-RemoteID-Drohnenerkennung, Drohnen-/Rover-gestützten Fernbetrieb und ECS 8.17-Indizierung in Elasticsearch oder OpenSearch in einer einzigen Plattform. Vollständig in Python 3 geschrieben.
Das Projekt umfasst vier Komponenten, die eigenständig oder zusammenarbeiten können:
| Komponente | Schnittstelle | Zweck |
|---|---|---|
| Sparrow-WiFi | PyQt5 Desktop-GUI | WLAN/BT-Scanning, Spektrumanalyse, Quellenverfolgung, Wardriving |
| Sparrow Agent | Headless HTTP-Server | Fernscanning, Drohnen-/Rover-Einsätze, Integration von Drittanbietern |
| Sparrow DroneID | Webbasiert (Browser) | FAA-RemoteID-Drohnenerkennung über WLAN und Bluetooth LE |
| Sparrow Elastic Bridge | Headless CLI-Dienst | ECS 8.17-Indizierung von WLAN/BT-Beobachtungen in Elasticsearch / OpenSearch |
Der Sparrow Agent und Sparrow DroneID stellen JSON-REST-APIs bereit, über die andere Anwendungen Scanergebnisse abfragen, Scans auslösen, Drohnenerkennungen abrufen und drahtlose/Drohnen-Erkennungsfunktionen in ihre eigenen Workflows integrieren können. Die Elastic Bridge nutzt die REST-API des Agents und übermittelt ECS 8.17-Dokumente mit gebündelten Kibana-Dashboards.
Diese Version enthält drei wesentliche Verbesserungen gegenüber der Vorgängerversion:
/wireless/networks/<iface> zugreifen, hat der Agent zuvor N redundante iw scan-Aufrufe gestartet, die auf der Schnittstellensperre serialisiert wurden, wodurch die Scan-Latenz um die Anzahl der Clients multipliziert wurde. Die erste Anfrage ist jetzt der "Leader", der tatsächlich scannt; gleichzeitige Anfragen warten auf ein threading.Event und teilen sich das Ergebnis des Leaders. Enthält auch einen TOCTOU-Fix bei der Sperrerstellung und Ausnahmesicherheit bei schnittstellenspezifischen Sperren.droneid.*-Namespace) und eine reaktionsfähige Multi-Device-Web-Benutzeroberfläche. Siehe Abschnitt Sparrow DroneID unten.sparrow-elastic.py-Bridge wurde neu geschrieben, um ECS 8.17-Dokumente (zuvor ECS 1.5) zu erzeugen, unterstützt jetzt sowohl Elasticsearch 8.x als auch OpenSearch 2.x, erstellt automatisch zusammensetzbare Indexvorlagen mit ILM/ISM-Lebenszyklusrichtlinien und Rollover-Write-Aliase, führt OUI-Vendor-Anreicherung und regelbasierte Geräteklassifizierung (mit optionalem Fingerbank-Fingerprinting) durch und liefert vier gebündelte Kibana-Dashboards sowie sechs konservierte Legacy-Visualisierungen. Die Legacy-ECS-1.5-Bridge bleibt unter legacy/sparrow-elastic.py erhalten. Siehe .Die ursprüngliche Sparrow-Anwendung bietet eine umfassende GUI-basierte Alternative zu Tools wie inSSIDer und LinSSID mit weit über das einfache Scannen hinausgehenden Fähigkeiten:
sparrowwifiagent.py) für verteiltes Scannen, Drohnen-/Rover-gestützten Betrieb und Raspberry-Pi-Einsätzeiw scan-Ausgabe
Ein eigenständiges webbasiertes Drohnenerkennungs- und Verfolgungssystem, das die von der FAA vorgeschriebene Fernidentifikation (Remote Identification, RemoteID) dekodiert. Läuft als Python-HTTP-Server mit einer browserbasierten Benutzeroberfläche, die von jedem Gerät im Netzwerk aus zugänglich ist.
Die Web-UI läuft nach dem Start unter http://localhost:8097. Siehe Installation unten für die Einrichtung und die API-Referenz für den programmatischen Zugriff.
Zusätzlich zu Slack-Webhooks kann Sparrow DroneID jede ausgelöste Benachrichtigung an einen generischen externen Alert-Ingest-Endpunkt senden. Der Kanal ist standardmäßig deaktiviert; konfigurieren Sie ihn in Einstellungen → Benachrichtigungen → API-basierte Benachrichtigung:
http://MEIN_API_HOST:PORT/API_ROOTAuthorization: Bearer ...-Header gesendet; in der UI nach dem Speichern maskiertrule.category: "test", Seriennummer TEST-0000), damit der Empfänger End-to-End getestet werden kann, ohne auf eine echte Drohne zu wartenSparrow DroneID führt zwei Aufrufe gegen die konfigurierte Root-URL aus:
Beide Aufrufe senden Authorization: Bearer <token> und Content-Type: application/json.
{ "domain": "", "alert": { "message": "", "observer": { "name": "<operator_name or 'Sparrow DroneID'>", "type": "drone-sensor", "geo": {"location": {"lat": 0.0, "lon": 0.0}} }, "rule": {"name": "", "category": "drone_detection"}, "event": { "severity": 40, "category": "network", "action": "new_drone" }, "labels": { "serial": "", "vendor": "", "ua_type": "", "alert_type": "new_drone | altitude_max | speed_max | signal_lost" }, "source": {"geo": {"location": {"lat": 0.0, "lon": 0.0}}}, "details": { "operator_id": "...", "registration_id": "...", "self_id_text": "...", "mac_address": "...", "protocol": "...", "rssi": -68, "range_m": 1234.5, "bearing_deg": 215.0, "bearing_cardinal": "SW", "speed_mps": 5.2, "direction_deg": 240.0, "altitude_m_agl": 42.0, "detail": "..." } } }
`observer.geo.location` wird eingefügt, wenn der Empfänger einen GPS-Fix hat; `source.geo.location` wird eingefügt, wenn die Drohne ihre Position sendet. Der Schweregrad folgt der ECS-Konvention (niedriger = dringlicher): Warnungen (`new_drone`, `altitude_max`, `speed_max`) sind `40`, informative Ereignisse (`signal_lost`) sind `70`. Als freundlich markierte Drohnen lösen keine Warnungen aus, wenn der Schalter "Warnungen bei freundlichen Drohnen" auf der Betreiberseite deaktiviert ist, daher erreichen sie diesen Endpunkt ebenfalls nicht.
Synthetische Test-Warnungen, die über die Schaltfläche **Testnachricht senden** ausgelöst werden, verwenden `rule.category: "test"`, `event.action: "test"`, `event.severity: 70` und die Seriennummer `TEST-0000`, damit der Empfänger sie erkennen und aus den operativen Dashboards ausschließen kann.
---
## Systemanforderungen
| Anforderung | Sparrow-WiFi (GUI) | Sparrow DroneID (Web) |
|-------------|-------------------|----------------------|
| **Betriebssystem** | Ubuntu 20.04+, Kali 2020.3+, Debian 11+ | Ubuntu 20.04+, Kali, Debian 11+, Raspberry Pi OS |
| **Python** | 3.8+ | 3.8+ |
| **Root** | Erforderlich (iw scan) | Erforderlich (Monitor-Modus, BLE) |
| **WLAN-Adapter** | Jedes mit `iw`-Unterstützung | Monitor-Modus-fähig (z.B. rtl8812au, Intel AX200) |
| **Bluetooth** | Optional (hci-Adapter, Ubertooth) | Optional (jeder BLE-fähige Adapter für RemoteID) |
| **GPS** | Optional (gpsd) | Optional (gpsd oder statische Koordinaten) |
| **Display** | X11/Wayland-Desktop | Headless OK (Webbrowser auf jedem Gerät) |
---
## Installation
### Sparrow-WiFi (Desktop GUI)```bash
git clone https://github.com/ghostop14/sparrow-wifi
cd sparrow-wifi
Systempakete (Ubuntu 22.04+ / Debian 12+ / Kali rolling):```bash
sudo apt install python3-pip python3-pyqt5 python3-pyqt5.qtchart
gpsd gpsd-clients python3-tk python3-setuptools
> **Kali-Nutzer:** PyQt5, PyQtChart und aircrack-ng (für das Falcon-Plugin) sind normalerweise vorinstalliert. Sie benötigen hauptsächlich nur `gpsd`, `gpsd-clients` und die folgenden Python-Abhängigkeiten.
Python-Abhängigkeiten — wählen Sie einen der beiden Ansätze:
**Option A: Systemweite Installation mit `--break-system-packages`** — am einfachsten, passt zur Startweise von GUI/Agent (root-eigene Skripte):```bash
# Modern systems (Ubuntu 24.04+, Kali rolling 2023+, Debian 12+) require this
# flag because Python is marked externally-managed (PEP 668). Sparrow runs as
# root anyway, so system-wide install is consistent with how it executes.
sudo pip3 install --break-system-packages -r requirements.txt
Option B: Virtuelle Umgebung — isoliert, keine System-Pip-Warnungen, von einigen Betreibern bevorzugt:```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
sudo venv/bin/python3 ./sparrow-wifi.py
Wie auch immer, führen Sie aus:```bash
sudo ./sparrow-wifi.py
cd sparrow-droneid
sudo apt install tcpdump bluez
sudo pip3 install --break-system-packages -r sparrow_droneid/requirements.txt
python3 -m venv venv && source venv/bin/activate && pip install -r sparrow_droneid/requirements.txt
sudo python3 sparrow_droneid/app.py
Öffnen Sie `http://localhost:8097` in einem Browser. Konfigurieren Sie die Überwachungsschnittstelle und das GPS in den Einstellungen und klicken Sie dann auf Start.
### Elasticsearch / OpenSearch Bridge (optional)```bash
sudo pip3 install --break-system-packages -r requirements-elastic.txt
# or via venv as above
Siehe Elasticsearch / OpenSearch Integration unten.
Die meisten WiFi-Adapter funktionieren für grundlegendes Scannen. Sparrow-WiFi unterstützt mehrere Schnittstellen-Erfassungs-Backends (iw, iwconfig, nmcli), sodass es auch auf Systemen funktioniert, die nicht über iw verfügen (z. B. RHEL/Fedora nur mit NetworkManager).
Für den Monitormodus (erforderlich für Sparrow DroneID und das Falcon-Plugin) variiert die Unterstützung von Adaptern und Treibern:
iw phy <phy> info | grep monitor oder iwconfig <iface> um die Fähigkeiten zu überprüfenSpeziell für Sparrow DroneID muss der Adapter rohe 802.11-Frames im Monitormodus liefern. Einige Intel-Adapter melden den Monitormodus als unterstützt, verwerfen jedoch stillschweigend Frames auf Firmware-Ebene. Die Anwendung erkennt dies und warnt Sie.
Sparrow-WiFi unterstützt mehrere Bluetooth-Scan-Modi:
Ein standardmäßiger eingebauter oder USB-Bluetooth-Adapter ist ausreichend für BLE-Werbescan und RemoteID-Drohnenerkennung. Testen Sie Ihren Adapter mit bluetoothctl scan on.
Für die vollständige promiskuitive Erkennung sowohl von Classic- als auch BLE-Geräten benötigen Sie einen Ubertooth One und Blue Hydra, installiert in /opt/bluetooth/blue_hydra. Dies ist optional und nicht erforderlich für grundlegendes BLE- oder RemoteID-Scannen.
Echtzeit-Spektralüberlagerungen auf WiFi-Kanalansichten:
ubertooth-specan-uihackrf_sweep
Beide Anwendungen verwenden gpsd für GPS. Schnelle Einrichtung:```bash
sudo apt install gpsd gpsd-clients
sudo gpsd -D 2 -N /dev/ttyUSB0
xgps # or: cgps -s
Für den Produktionseinsatz konfigurieren Sie `/etc/default/gpsd` mit Ihrem Gerätepfad und starten Sie den Dienst neu.
Sparrow DroneID unterstützt auch statische Koordinaten (in den Einstellungen konfiguriert) für feste Installationen ohne GPS-Empfänger.
---
## Remote-Agent und API-Integration
Der Sparrow-Agent (`sparrowwifiagent.py`) ist ein kopfloser HTTP-Server, der alle WLAN- und Bluetooth-Scan-Funktionen von Sparrow als JSON-basierte REST-API bereitstellt. So kommuniziert die Sparrow-WiFi-GUI mit entfernten Sensoren, aber die API steht jeder Anwendung offen.
**Anwendungsfälle:**
- Einsatz auf einem Raspberry Pi, einer Drohne oder einem Rover für ferngesteuertes/mobiles Scannen
- Integration von WLAN- und Bluetooth-Lagebewusstsein in Ihre eigenen Anwendungen
- Einspeisung von Scandaten in SIEM, Dashboards oder Alarmierungs-Pipelines
- Automatisierung des Scannings mit Skripten (Scans auslösen, Ergebnisse per curl/Python/usw. abrufen)
Sparrow DroneID hat ebenfalls eine eigene REST-API ([API-Referenz](https://github.com/ghostop14/sparrow-wifi/blob/HEAD/sparrow-droneid/sparrow_drone_id_api.md)), die programmatischen Zugriff auf Drohnenerkennungen, Alarmverwaltung, Geozonen und Systemkonfiguration bietet.
### Ausführen des Agents```bash
sudo ./sparrowwifiagent.py
Hört standardmäßig auf Port 8020. Wichtige Optionen:
Siehe --help für die vollständige Liste.
curl http://sensor:8020/wireless/interfaces
curl http://sensor:8020/wireless/networks/wlan0
curl "http://sensor:8020/wireless/networks/wlan0?frequencies=2412,2437,2462"
curl http://sensor:8020/gps/status
curl http://sensor:8020/bluetooth/discoverystarta
curl http://sensor:8020/bluetooth/discoverystatus
Für Sparrow DroneID siehe die dedizierte [API-Referenz](https://github.com/ghostop14/sparrow-wifi/blob/HEAD/sparrow-droneid/sparrow_drone_id_api.md).
> **Produktionshinweis:** der Agent lauscht standardmäßig auf allen Schnittstellen. Für Bereitstellungen außerhalb eines vertrauenswürdigen Netzwerks verwenden Sie `--allowedips`, um Aufrufer einzuschränken, führen Sie ihn hinter einem Reverse-Proxy mit TLS aus oder binden Sie ihn nur an eine private Schnittstelle.
---
## Falcon / Aircrack-ng Plugin
Erweiterte Integration für drahtlose Penetrationstests. Bietet Point-and-Click-Zugriff auf:
- Erkennung versteckter SSIDs mittels airodump-ng
- Aufzählung von Client-Stationen (verbundener AP, angefragte SSIDs)
- Gezielte und Broadcast-Deauthentifizierung
- WEP-IV-Erfassung
- WPA-Handshake-Erfassung mit automatischer Hash-Extraktion (erfordert JTR `wpapcap2john`)
### Prerequisites```bash
# Kali users: aircrack-ng + JTR are usually pre-installed.
# Ubuntu / Debian / Raspberry Pi OS:
sudo apt install aircrack-ng john
Überprüfen Sie, dass airmon-ng, airodump-ng und wpapcap2john nach der Installation in Ihrem PATH vorhanden sind.
Aktive Penetrationstests unterliegen gesetzlichen Bestimmungen. Es liegt in Ihrer Verantwortung, vor der Nutzung dieser Werkzeuge eine entsprechende Genehmigung einzuholen.
Das Paket sparrow_elastic bietet eine ECS 8.17-Brücke, die den Sparrow-WiFi-Agenten abfragt und WiFi- und Bluetooth-Beobachtungen in Elasticsearch 8.x oder OpenSearch 2.x bulk-indexiert. Es bootstrapt automatisch zusammensetzbare Indexvorlagen, ILM/ISM-Lebenszyklusrichtlinien und Rollover-Write-Aliase; führt OUI-Anreicherung und regelbasierte Geräteklassifizierung durch (mit optionalem Fingerbank-Fingerprinting); und liefert vorgefertigte Kibana-Dashboards aus.
sudo ./sparrowwifiagent.py
sudo pip3 install --break-system-packages -r requirements-elastic.txt
./sparrow-elastic.py --elasticserver http://user:pass@host:9200 --wifiinterface wlan1
python3 install_dashboards.py --kibana-url http://kibana:5601
--username elastic --password ''
> **Anmeldeinformationshygiene:** Das Einbetten von `user:pass@` in `--elasticserver` ist praktisch, aber die URL wird in `ps`, `journalctl` und der Shell-Historie sichtbar. Für den Produktiveinsatz verwenden Sie die Flags `--username`/`--password`, Umgebungsvariablen (`SPARROW_ES_USERNAME`, `SPARROW_ES_PASSWORD`) oder das `EnvironmentFile=`-Muster in der beigefügten systemd-Unit-Beispiel.
### Was die Bridge mitliefert
- **5 Kibana-Dashboards** — Situationsbewusstsein, Verhaltensmuster, Erkennung neuer Geräte, Spektrumplanung (mit SSID × Kanal-Signalstärke-Heatmap) und Bluetooth-Situationsbewusstsein (mit Vega-Panel für wirklich neue Geräte und Entfernungsschätzungstabelle)
- **6 beibehaltene Visualisierungen aus der Vorgängerversion** — umbenannte Klone der ursprünglichen `Sparrow*`-Visualisierungen, damit die vertrauten Arbeitsabläufe weiterhin funktionieren
- **Geräteklassifizierer** — 64-Regeln-Stammtabelle, die Drohnencontroller (DJI/Autel/Skydio/Parrot/Yuneec), BT-Klasse des Geräts, GAP-Erscheinungsbild, Apple Continuity-Untertypen und OUI-Herstellerheuristiken abdeckt
- **Referenzdatenaktualisierung** — gebündelte Wireshark-`manuf`, BT-SIG-Unternehmens-IDs, Service-UUIDs, GAP-Erscheinungsbildwerte und Apple Continuity-Untertyp-Tabellen, mit einem 30/90-Tage-Selbstaktualisierungs-Hintergrundthread
- **Kompatibilitätsprüfung vor dem Start** — weigert sich, in Legacy-ECS-1.5-Indizes zu schreiben und gibt stattdessen klare Abhilfeschritte aus, anstatt Daten stillschweigend zu beschädigen
Die vollständige Bedienerdokumentation (Engine-Auswahl, Authentifizierungsmodi, Dashboard-Import, Referenzdaten, vollständige CLI-Referenz) finden Sie in [sparrow_elastic/README.md](https://github.com/ghostop14/sparrow-wifi/blob/HEAD/sparrow_elastic/README.md).
Beispielkonfigurationsdateien befinden sich im Repository-Stammverzeichnis und in `init.d_scripts/`:
- `sparrow-elastic.conf.example` — INI-ähnliche Konfiguration mit allen unterstützten Schlüsseln
- `sparrow-elastic.env.example` — Shell-Format-Umgebungsdatei für systemd-Bereitstellungen
- `init.d_scripts/sparrow-elastic.service.example` — systemd-Unit-Vorlage
### Migration von der Legacy-ECS-1.5-Bridge
Die Bridge vor 2026 schrieb ECS-1.5-Dokumente in vom Betreiber benannte Indizes über `--wifiindex` / `--btindex`. Die neue Bridge schreibt ECS-8.17-Dokumente in rollover-verwaltete Schreibaliase (Standard `sparrow-wifi` / `sparrow-bt`).
**Das Legacy-Skript bleibt unter `legacy/sparrow-elastic.py` erhalten**, zusammen mit seiner `.txt`-Vorlage und ILM-Richtliniendateien. Die Ausführung erfordert weiterhin die Legacy-Umgebung (manuelle Vorlagen- und ILM-Einrichtung).
**Flag-Änderungen (mit Abwärtskompatibilität):**
| Legacy-Flag | Neues Flag | Anmerkungen |
|---------------------|--------------------|--------------------------------------------------------|
| `--wifiindex NAME` | `--wifi-alias NAME`| Die Legacy-Schreibweise wird weiterhin als veralteter Alias akzeptiert. |
| `--btindex NAME` | `--bt-alias NAME` | Die Legacy-Schreibweise wird weiterhin als veralteter Alias akzeptiert. |
| `--dont-create-indices` | unverändert | Überspringt Bootstrap. |
| `--elasticserver`, `--sparrowagent`, `--sparrowport`, `--wifiinterface`, `--scandelay` | unverändert | |
Ein Legacy-Aufruf wie:```bash
./sparrow-elastic.py --elasticserver=http://user:pass@host:9200 \
--wifiinterface=wlan1 \
--wifiindex=sparrowwifi-home \
--btindex=sparrowbt-home
parst und läuft weiterhin — aber die Brücke weigert sich nun, in einen bereits bestehenden Index zu schreiben, dessen Mapping nicht den ECS-8.17-Schema-Marker trägt, und beendet sich mit drei Abhilfemaßnahmen (einen anderen Alias verwenden, den Index löschen und neu bootstrappen, oder die Legacy-Brücke ausführen). Bei einer Neuinstallation reicht es, --wifiindex / --btindex wegzulassen und die neuen Standardeinstellungen zu akzeptieren.
Der Remote-Agent kann auf einem Raspberry Pi bereitgestellt werden, der auf einer Drohne oder einem Rover montiert ist, für mobile drahtlose Vermessungen. Getestet auf einer Solo 3DR-Drohne mit GPS-Integration über MAVLink.
sudo python3 ./sparrowwifiagent.py --userpileds --sendannounce --mavlinkgps 3dr --recordinterface wlan0
LED-Anzeigen (Raspberry Pi):
1. Beide aus — Initialisierung
2. Roter Herzschlag — GPS vorhanden, nicht synchronisiert
3. Rotes Dauerlicht — GPS synchronisiert
4. Grünes Dauerlicht — Agent bereit, bedient Anfragen
Aufnahmen können über die Agentenverwaltungsoberfläche der Sparrow-WiFi-GUI abgerufen werden.
### Pi Setup-Hinweise
- Verwenden Sie Raspberry Pi OS (Bookworm oder später) mit Python 3.8+
- Deaktivieren Sie das integrierte WLAN, um 5-GHz-Scanning mit USB-Adaptern zu ermöglichen: fügen Sie `dtoverlay=disable-wifi` zu `/boot/firmware/config.txt` unter Bookworm und später, oder `/boot/config.txt` unter älteren Versionen hinzu
- Installieren Sie die Voraussetzungen: `sudo pip3 install --break-system-packages -r requirements.txt` (oder verwenden Sie eine venv wie im Abschnitt [Installation](#installation))
---
## Projektstruktur```
sparrow-wifi/
sparrow-wifi.py # Desktop GUI entry point
sparrowwifiagent.py # Headless remote agent
sparrow-elastic.py # Elasticsearch / OpenSearch bridge (ECS 8.17)
install_dashboards.py # One-shot Kibana dashboard installer
requirements.txt # Python dependencies (GUI)
requirements-elastic.txt # Python dependencies (Elasticsearch bridge)
wirelessengine.py # WiFi scan engine (iw)
sparrowbluetooth.py # Bluetooth scan engine
sparrowhackrf.py # HackRF spectrum engine
sparrowmap.py # Map generation
plugins/ # Falcon and other plugins
sparrow_elastic/ # ES/OS bridge package
*.py # Client abstraction, document builder, classifier...
templates/ # Composable index templates (ES + OS variants)
policies/ # ILM (ES) and ISM (OS) lifecycle policy JSON
dashboards/ # Kibana NDJSON: 5 dashboards + legacy-preserved
data/ # Bundled reference data (manuf, BT SIG, classifier rules)
README.md # Full bridge operator documentation
legacy/ # Pre-2026 ECS 1.5 bridge, frozen for reference
sparrow-elastic.py # Legacy bridge (still runnable)
sparrow_elastic_*.txt # Legacy index templates and ILM policy
sparrow-droneid/ # DroneID web application
sparrow_droneid/
app.py # Entry point (sudo python3 app.py)
__main__.py # Allows: sudo python3 -m sparrow_droneid
requirements.txt # Python dependencies (DroneID)
backend/ # API server, capture engine, database
frontend/ # HTML, JS, CSS (served by backend)
sparrow_drone_id_api.md # REST API reference
Dieses Projekt ist unter den im Repository enthaltenen Bedingungen lizenziert. Weitere Details finden Sie in der LICENSE-Datei.
| Verb | Pfad | Zweck |
|---|
POST | {root}/v1/alerts/verify | Berechtigungsprüfung — Body {"domain": "<configured>"}. Der Empfänger sollte bei Erfolg mit 200 {"status":"ok"} antworten, bei ungültigem Token mit 401. |
POST | {root}/v1/alerts | Benachrichtigung auslösen — Body ist das untenstehende JSON. Der Empfänger sollte bei Erfolg mit 201 {"alert_id":"..."} antworten. 503-Antworten werden mit exponentiellem Backoff (3 Wiederholungen) erneut versucht; 4xx bricht ohne Wiederholung ab. Ein 200 {"status":"dropped"} zeigt an, dass die Domain auf der Empfängerseite deaktiviert ist. |
| Modus | Hardware | Was Sie sehen |
|---|
| BLE-Werbescan | Standard BT-Adapter | LE-Geräte, die aktiv werben |
| Promiskuitiver Scan | Ubertooth One + Blue Hydra | Alle BLE- und Classic-BT-Geräte in Reichweite |
| iBeacon-Werbung | Standard BT-Adapter | Eigene iBeacons ausstrahlen |
| RemoteID-Scan | Standard BT-Adapter | FAA-konforme Drohnenidentifikation (nur Sparrow DroneID) |
| Flag | Zweck |
|---|
--port PORT | HTTP-Hörport |
--allowedips IP1,IP2 | Client-Verbindungen einschränken |
--staticcoord LAT,LON,ALT | Feste GPS-Koordinaten verwenden |
--mavlinkgps 3dr | GPS von Solo 3DR-Drohne abrufen |
--recordinterface IFACE | Automatische Aufzeichnung beim Start (headless) |
--userpileds | Raspberry Pi LEDs für Status verwenden |
--sendannounce | UDP-Broadcast zur Agentenerkennung |