Por que importa la bajada

La mayoria de los despliegues de BLE Tag son solo de subida: el tag emite telemetria y la pasarela escucha. Pero un sistema real de seguimiento de activos necesita que la pasarela responda: empujar configuracion, disparar un zumbador, pedir una ubicacion inmediata o revocar una clave. Un BLE Tag que solo emite es la mitad del sistema. Este articulo cubre las tres rutas de bajada y como hacerlas seguras.

Ruta 1: escritura GATT conectada

La pasarela (o un telefono de mantenimiento) abre conexion y escribe una caracteristica de control.

  • Intervalo de conexion 7.5-100 ms; para comandos esporadicos, 100-200 ms mantiene bajo el consumo medio.
  • Usa una sola caracteristica `Control` (write-without-response para fuego-y-olvida, write para ACK).
  • Carga: `[Cmd:1B][Len:1B][Payload:N][CRC:2B]`.
  • Coste: un evento de conexion cuesta 3-8 mA durante 1-5 ms; agrupa comandos.

Ruta 2: comando por difusion sin conexion

Para control uno-a-muchos, difunde un comando firmado en un canal ADV dedicado.

ADV: 0x16 (Service Data) UUID propia
Bytes: [Cmd][Seq][TargetMask][Sig:8B]
  • Los tags en modo escaneo lo reciben sin conectar; escala a miles.
  • Riesgo: replay. Incluye siempre `Seq` monotono y un TTL corto.

Ruta 3: recuperacion periodica (el tag tira)

El tag despierta, escanea un beacon de la pasarela con URL de configuracion y la obtiene por HTTP/CoAP. Menor consumo, mayor latencia.

ACK y reenvio

Modo Latencia Consumo Escala
GATT write + ACK baja medio 1:1
Broadcast cmd muy baja bajo 1:N
Fetch alta minimo N:1

Reenvia con backoff exponencial (1s, 2s, 4s); tope 3 intentos.

Seguridad

  • Firma todo comando con ECDSA (P-256) con clave de pasarela; el tag verifica antes de actuar.
  • Derivacion por tag `K_i = HKDF(master, tag_id)` para que un tag filtrado no falsifique otros.
  • Rechaza `Seq` <= ultimo visto.
  • Limite: ignora mas de 1 comando por 500 ms por origen.

Presupuesto de bajada

Un tag que escucha comandos por difusion paga coste de escaneo: 3 canales al 100% ~ 5-8 mA. Para durar anos con CR2032, escaneo en ventanas (ej. 200 ms cada 10 s) ~ 0.1 mA medio. Equilibra capacidad y bateria.

Lista practica

  • GATT write para mantenimiento 1:1, difusion para actualizaciones masivas.
  • Firma y numera siempre los comandos.
  • Escaneo en ventanas; nunca 100% en pila boton.
  • Prueba replay reenviando un comando antiguo capturado; debe descartarse.

La bajada correcta de BLE Tag es invisible para el usuario, pero decide si tu flota se controla o solo se vigila.