Warum Beacon-Protokolle wichtig sind
Ein Bluetooth Beacon ist kein einzelner Standard. „Beacon“ ist ein Bereitstellungsmuster; die tatsaechlichen Bytes in der Luft werden von einem von drei Werbeformaten definiert. Die falsche Rahmenwahl verschwendet Akku, bricht die plattformuebergreifende Unterstuetzung oder sperrt dich in ein Hersteller-SDK. Dieser Artikel zerlegt iBeacon, Eddystone und AltBeacon auf Byte-Ebene.
Der gemeinsame Rahmen: BLE-Werbung
Alle drei laufen ueber nicht verbindbare ungerichtete Werbung (ADV_NONCONN_IND) oder scannabare Werbung (ADV_SCAN_IND). Ein Beacon-Paket traegt eine 31-Byte Werbedatenstruktur (AD):
| Feld | Groesse | Hinweis |
|---|---|---|
| Preamble | 1 B | 0xAA bei nicht verbindbar |
| Access Address | 4 B | 0x8E89BED6 |
| Header | 2 B | PDU-Typ + Laenge |
| AdvA | 6 B | Beacon-MAC |
| AdvData | <=31 B | die Rahmen unten |
| CRC | 3 B |
Die effektive Nutzlast ist der 31-Byte AdvData, aufgebaut aus AD-Strukturen: [Len][AD Type][Value]. Jedes Beacon-Format ist nur ein bestimmter AD-Type plus Value.
iBeacon (Apple)
AD-Type 0xFF (Manufacturer Specific), Company-ID Apple 0x004C.
Length: 0x1A (26)
AD Type: 0xFF
Company: 0x004C
Type: 0x02 (iBeacon)
Len: 0x15 (21)
UUID: 16 bytes
Major: 2 bytes
Minor: 2 bytes
Tx Power: 1 byte (gemessene Leistung bei 1 m, vorzeichenbehaftet)
- Die UUID partitioniert ein Deployment (z. B. eine pro Gebaeude).
- Major/Minor adressieren Unterzonen (Etage / Raum).
- Gemessene Leistung = RSSI bei 1 m, genutzt fuer Distanz: `d = 10^((Measured – RSSI)/(10*n))`, n ~ 2.0-4.0.
- Proprietaer, aber trivial decodierbar; keine Telemetrie, keine URL.
Eddystone (Google)
Offenes Format, vier Rahmentypen teilen sich AD-Type 0x16 (Service Data) mit UUID 0xFEAA:
| Rahmen | Code | Nutzlast |
|---|---|---|
| UID | 0x00 | 10 B Namespace + 6 B Instance |
| URL | 0x10 | komprimierte URL (Scheme/Host-Kodierung) |
| TLM | 0x20 | Akku, Temperatur, ADV-Zaehler, Laufzeit |
| EID | 0x30 | kurzlebige rotierende ID (Datenschutz) |
TLM wird abwechselnd mit UID/URL gesendet, damit ein Gateway die Gesundheit ohne Verbindung liest. EID rotiert nach einem mit einem Resolver-Server geteilten Zeitplan, nuetzlich gegen Spoofing.
AltBeacon (Radius Networks)
Offen und herstellerneutral. AD-Type 0xFF, MFG-ID 0x0118 (Radius).
Length: 0x1B (27)
AD Type: 0xFF
MFG: 0x0118
Type: 0xBE (AltBeacon)
Len: 0x14 (20)
MFG Code: 2 B
ID1: 20 B (UUID-aehnlich)
ID2: 2 B (Beacon Code)
Ref Power: 1 B
MFG Reserved: 1 B
Funktional wie iBeacon, aber mit 20-Byte ID-Raum und einem freien Herstellercode-Feld.
Vergleich
| Merkmal | iBeacon | Eddystone | AltBeacon |
|---|---|---|---|
| Besitzer | Apple | Offen | |
| ID-Modell | UUID/Major/Minor | Namespace/Instance | ID1 (20 B) |
| URL | Nein | Ja (komprimiert) | Nein |
| Telemetrie | Nein | Ja (TLM) | Nein |
| Privatsphaere/EID | Nein | Ja | Nein |
| Aufwand | Gering | Mittel | Gering |
Auswahl
- Innenpositionierung / iOS -> iBeacon (beste iOS-Unterstuetzung).
- Web-Fallback / keine App -> Eddystone-URL (oeffnet im Browser).
- Plattformuebergreifend OSS -> AltBeacon.
- Gesundheitsueberwachung -> Eddystone-TLM.
Praktische Fallen
- Tx-Power-Kalibrierung bei 1 m im echten Gehaeuse messen; Kunststoff oder Metall verschieben sie 2-4 dB.
- Werbeintervall: 100-1000 ms. Schneller heisst bessere Erkennung, aber weniger Akku. Ein CR2032 bei 500 ms haelt etwa 1-2 Jahre.
- Paketkollisionen: Bei N Beacons auf demselben Kanal steigt die Kollisionswahrscheinlichkeit etwa mit N quadratisch; Staffeln der Intervalle.
- AdvData nicht ueber 31 B, sonst wird der Rahmen verworfen.
Das gewaehlte Bluetooth Beacon-Format bestimmt alles danach. Waehle nach Plattform und Anwendungsfall, nicht nach Hype.