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.