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 Google 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.