Por que importan los protocolos Beacon
Un Bluetooth Beacon no es un unico estandar. «Beacon» es un patron de despliegue; los bytes reales en el aire se definen con uno de tres formatos de publicidad. Elegir la trama equivocada desperdicia bateria, rompe la compatibilidad multiplataforma o te enclaustra en un SDK de proveedor. Este articulo desglosa iBeacon, Eddystone y AltBeacon a nivel de byte.
El envoltorio comun: publicidad BLE
Los tres viajan sobre publicidad BLE no conectable sin direccion (ADV_NONCONN_IND) o rastreable (ADV_SCAN_IND). Un paquete Beacon lleva una estructura de datos de publicidad (AD) de 31 bytes:
| Campo | Tamano | Nota |
|---|---|---|
| Preamble | 1 B | 0xAA si no conectable |
| Access Address | 4 B | 0x8E89BED6 |
| Header | 2 B | tipo PDU + longitud |
| AdvA | 6 B | MAC del Beacon |
| AdvData | <=31 B | las tramas abajo |
| CRC | 3 B |
La carga util es el AdvData de 31 bytes, construido con estructuras AD: [Len][AD Type][Value]. Cada formato Beacon es solo un AD Type concreto mas su 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 (potencia medida a 1 m, con signo)
- El UUID particiona un despliegue (uno por edificio).
- Major/Minor direccionan subzonas (piso / sala).
- Potencia medida = RSSI a 1 m, usa para distancia: `d = 10^((Measured – RSSI)/(10*n))`, n ~ 2.0-4.0.
- Propietario pero trivial de decodificar; sin telemetria ni URL.
Eddystone (Google)
Formato abierto, cuatro tipos de trama comparten AD Type 0x16 (Service Data) con UUID 0xFEAA:
| Trama | Codigo | Carga |
|---|---|---|
| UID | 0x00 | 10 B Namespace + 6 B Instance |
| URL | 0x10 | URL comprimida (codificacion esquema/host) |
| TLM | 0x20 | bateria, temp, conteo ADV, uptime |
| EID | 0x30 | ID efimero rotatorio (privacidad) |
TLM se emite alternando con UID/URL para que la pasarela lea salud sin conectar. EID rota en un calendario compartido con un servidor resolutor, util contra suplantacion.
AltBeacon (Radius Networks)
Abierto y neutral. 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 (tipo UUID)
ID2: 2 B (Beacon Code)
Ref Power: 1 B
MFG Reserved: 1 B
Funcionalmente como iBeacon pero con espacio de ID de 20 bytes y un campo libre de codigo de fabricante.
Comparacion
| Caracteristica | iBeacon | Eddystone | AltBeacon |
|---|---|---|---|
| Dueno | Apple | Abierto | |
| Modelo ID | UUID/Major/Minor | Namespace/Instance | ID1 (20 B) |
| URL | No | Si (comprimida) | No |
| Telemetria | No | Si (TLM) | No |
| Privacidad/EID | No | Si | No |
| Complejidad | Baja | Media | Baja |
Eleccion
- Posicionamiento interior / iOS -> iBeacon (mejor soporte iOS).
- Web sin app -> Eddystone-URL (abre en navegador).
- OSS multiplataforma -> AltBeacon.
- Monitoreo de salud -> Eddystone-TLM.
Errores comunes
- Calibrar Tx Power a 1 m dentro de la caja real; plastico o metal lo desvia 2-4 dB.
- Intervalo de publicidad: 100-1000 ms. Mas rapido detecta mejor pero gasta bateria. Un CR2032 a 500 ms dura unos 1-2 anos.
- Colisiones: con N Beacons en el mismo canal, la probabilidad crece ~ N al cuadrado; escalona intervalos.
- No superes 31 B de AdvData o se descarta la trama.
El formato Bluetooth Beacon que elijas determina todo lo posterior. Elige por plataforma y caso de uso, no por moda.