Pourquoi les protocoles Beacon comptent
Un Bluetooth Beacon n’est pas une norme unique. « Beacon » est un motif de deploiement; les octets reels dans l’air sont definis par l’un de trois formats de publicite. Choisir la mauvaise trame gaspille la batterie, casse la compatibilite multiplateforme ou vous enferme dans un SDK proprietaire. Cet article decompose iBeacon, Eddystone et AltBeacon au niveau de l’octet.
L’enveloppe commune : publicite BLE
Les trois utilisent la publicite BLE non connectable non dirige (ADV_NONCONN_IND) ou traçable (ADV_SCAN_IND). Un paquet Beacon porte une structure de donnees publicitaires (AD) de 31 octets :
| Champ | Taille | Note |
|---|---|---|
| Preamble | 1 B | 0xAA si non connectable |
| Access Address | 4 B | 0x8E89BED6 |
| Header | 2 B | type PDU + longueur |
| AdvA | 6 B | MAC du Beacon |
| AdvData | <=31 B | les trames ci-dessous |
| CRC | 3 B |
La charge utile est le AdvData de 31 octets, construit avec des structures AD : [Len][AD Type][Value]. Chaque format Beacon n’est qu’un AD Type particulier plus sa 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 (puissance mesuree a 1 m, signee)
- L’UUID partitionne un deploiement (un par batiment).
- Major/Minor adressent des sous-zones (etage / piece).
- Puissance mesuree = RSSI a 1 m, utilisee pour la distance : `d = 10^((Measured – RSSI)/(10*n))`, n ~ 2.0-4.0.
- Proprietaire mais trivialement decodable ; pas de telemetrie ni d’URL.
Eddystone (Google)
Format ouvert, quatre types de trame partagent l’AD Type 0x16 (Service Data) avec l’UUID 0xFEAA :
| Trame | Code | Charge |
|---|---|---|
| UID | 0x00 | 10 B Namespace + 6 B Instance |
| URL | 0x10 | URL compressee (codage scheme/hote) |
| TLM | 0x20 | batterie, temp, compteur ADV, uptime |
| EID | 0x30 | ID ephemeride tournant (confidentialite) |
TLM est diffuse en alternance avec UID/URL pour qu’une passerelle lise l’etat sans connexion. EID tourne selon un calendrier partage avec un serveur resolveur, utile contre l’usurpation.
AltBeacon (Radius Networks)
Ouvert et neutre. 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 (type UUID)
ID2: 2 B (Beacon Code)
Ref Power: 1 B
MFG Reserved: 1 B
Fonctionnellement comme iBeacon mais avec un espace d’ID de 20 octets et un champ libre de code fabricant.
Comparaison
| Caracteristique | iBeacon | Eddystone | AltBeacon |
|---|---|---|---|
| Proprietaire | Apple | Ouvert | |
| Modele ID | UUID/Major/Minor | Namespace/Instance | ID1 (20 B) |
| URL | Non | Oui (compressee) | Non |
| Telemetrie | Non | Oui (TLM) | Non |
| Confidentialite/EID | Non | Oui | Non |
| Complexite | Faible | Moyenne | Faible |
Choix
- Positionnement inteerieur / iOS -> iBeacon (meilleur support iOS).
- Repli web / sans app -> Eddystone-URL (ouvre dans le navigateur).
- OSS multiplateforme -> AltBeacon.
- Supervision -> Eddystone-TLM.
Pieges courants
- Etalonnage Tx Power a 1 m dans le boitier reel ; plastique ou metal le decale de 2-4 dB.
- Intervalle de publicite : 100-1000 ms. Plus rapide detecte mieux mais consomme. Un CR2032 a 500 ms dure environ 1-2 ans.
- Collisions : avec N Beacons sur le meme canal, la probabilite croit environ comme N au carre ; decalez les intervalles.
- Ne depassez pas 31 B de AdvData sinon la trame est ignoree.
Le format Bluetooth Beacon choisi determine tout le reste. Choisissez par plateforme et cas d’usage, pas par effet de mode.