Warum Downlink wichtig ist
Die meisten BLE-Tag-Implementierungen sind nur Uplink: Das Tag sendet Telemetrie, das Gateway hoert zu. Ein echtes Asset-Tracking-System braucht aber den Rueckkanal: Konfiguration pushen, Buzzer ausloesen, sofortigen Standort anfordern oder einen Schluessel widerrufen. Ein BLE-Tag, das nur sendet, ist das halbe System. Dieser Artikel behandelt drei Downlink-Pfade und deren Absicherung.
Pfad 1: Verbundener GATT-Write
Das Gateway (oder ein Wartungshandy) oeffnet eine Verbindung und schreibt ein Control-Merkmal.
- Verbindungsintervall 7.5-100 ms; bei sporadischen Befehlen haelt 100-200 ms den Mittelstrom niedrig.
- Ein einziges `Control`-Merkmal nutzen (write-without-response fuer Fire-and-Forget, write fuer ACK).
- Nutzlast: `[Cmd:1B][Len:1B][Payload:N][CRC:2B]`.
- Stromkosten: ein Verbindungsereignis braucht 3-8 mA fuer 1-5 ms; Befehle buendeln.
Pfad 2: Verbindungsloser Broadcast-Befehl
Fuer 1-zu-viele steuert man einen signierten Befehl auf einem dedizierten ADV-Kanal aus.
ADV: 0x16 (Service Data) eigene UUID
Bytes: [Cmd][Seq][TargetMask][Sig:8B]
- Tags im Scan-Modus empfangen ohne Verbindung; skaliert auf Tausende.
- Risiko: Replay. Immer monoton steigende `Seq` und kurze TTL einbauen.
Pfad 3: Periodisches Holen (Tag zieht)
Das Tag wacht auf, scannt ein Gateway-Beacon mit Konfig-URL und holt per HTTP/CoAP. Minimaler Strom, hoechste Latenz.
ACK und Wiederholung
| Modus | Latenz | Strom | Skala |
|---|---|---|---|
| GATT write + ACK | niedrig | mittel | 1:1 |
| Broadcast cmd | sehr niedrig | niedrig | 1:N |
| Fetch | hoch | minimal | N:1 |
Wiederholen mit exponentiellem Backoff (1s, 2s, 4s); Max 3 Versuche.
Sicherheit
- Jeden Befehl mit ECDSA (P-256) signieren; Tag prueft vor Ausfuehrung.
- Schluesselableitung pro Tag `K_i = HKDF(master, tag_id)`, damit ein geleaktes Tag keine anderen faelscht.
- `Seq` <= letztes gesehenes wird abgelehnt.
- Ratelimit: mehr als 1 Befehl pro 500 ms je Quelle ignorieren.
Strombudget Downlink
Ein Tag, das Broadcast-Befehle hoert, zahlt Scan-Kosten: 3 Kanaeler bei 100% ~ 5-8 mA. Fuer Jahre mit CR2032: Fenster-Scan (z. B. 200 ms alle 10 s) ~ 0.1 mA Mittel. Reaktion gegen Akku abwaegen.
Praxis-Checkliste
- GATT-Write fuer 1:1-Wartung, Broadcast fuer Flotten-Updates.
- Befehle immer signieren und nummerieren.
- Fenster-Scan; nie 100% bei Knopfzelle.
- Replay testen: alten aufgezeichneten Befehl erneut senden — muss verworfen werden.
Der richtige Downlink eines BLE-Tags ist fuer den Nutzer unsichtbar, entscheidet aber, ob die Flotte steuerbar oder nur beobachtbar ist.