Pourquoi la liaison descendante compte

La plupart des deploiements de BLE Tag ne sont qu’en montee : le tag diffuse la telemetrie, la passerelle ecoute. Mais un vrai systeme de suivi d’actifs a besoin du retour : pousser une configuration, declencher un buzzer, demander une position immediate ou revoquer une cle. Un BLE Tag qui ne fait que parler est la moitie du systeme. Cet article couvre les trois voies de descente et leur securisation.

Voie 1 : ecriture GATT connectee

La passerelle (ou un telephone de maintenance) ouvre une connexion et ecrit une caracteristique de controle.

  • Intervalle de connexion 7.5-100 ms ; pour des commandes sporadiques, 100-200 ms garde le courant moyen faible.
  • Utiliser une seule caracteristique `Control` (write-without-response pour tire-et-oublie, write pour ACK).
  • Charge : `[Cmd:1B][Len:1B][Payload:N][CRC:2B]`.
  • Cout : un evenement de connexion consomme 3-8 mA pendant 1-5 ms ; regrouper les commandes.

Voie 2 : commande par diffusion sans connexion

Pour un-a-plusieurs, on diffuse une commande signee sur un canal ADV dedie.

ADV: 0x16 (Service Data) UUID propre
Bytes: [Cmd][Seq][TargetMask][Sig:8B]
  • Les tags en mode scan la recoivent sans connecter ; echelle a des milliers.
  • Risque : rejeu. Toujours inclure `Seq` monotone et un TTL court.

Voie 3 : recuperation periodique (le tag tire)

Le tag se reveille, scanne une balise passerelle portant l’URL de config et la recupere en HTTP/CoAP. Conso minimale, latence maximale.

ACK et retransmission

Mode Latence Conso Echelle
GATT write + ACK faible moyenne 1:1
Broadcast cmd tres faible faible 1:N
Fetch elevee minimale N:1

Retransmettre avec backoff exponentiel (1s, 2s, 4s) ; max 3 essais.

Securite

  • Signer chaque commande en ECDSA (P-256) avec la cle passerelle ; le tag verifie avant d’agir.
  • Derivation par tag `K_i = HKDF(master, tag_id)` pour qu’un tag fuye ne falsifie pas les autres.
  • Rejeter `Seq` <= dernier vu.
  • Limite : ignorer plus de 1 commande par 500 ms par source.

Budget de conso descendante

Un tag qui ecoute les commandes diffusees paye le cout du scan : 3 canaux a 100 % ~ 5-8 mA. Pour durer des annees sur CR2032, scan par fenetres (ex. 200 ms toutes les 10 s) ~ 0.1 mA moyen. Equilibrer reactivite et batterie.

Liste pratique

  • GATT write pour maintenance 1:1, diffusion pour mises a jour de flotte.
  • Signer et numeroter toujours les commandes.
  • Scan par fenetres ; jamais 100 % sur pile bouton.
  • Tester le rejeu en renvoyant une commande ancienne capturee ; elle doit etre ignoree.

La bonne liaison descendante d’un BLE Tag est invisible pour l’utilisateur, mais elle decide si votre flotte est controlee ou seulement surveillee.