なぜ下り通信が重要か

多くの BLE Tag 導入は上り専用です。タグがテレメトリを放送し、ゲートウェイが聞きます。しかし本格的な資産追跡やセンサーシステムには、ゲートウェイからの送信が必要です。設定のプッシュ、ブザー起動、即時位置要求、鍵の失効。下りを持たない BLEタグ は半分のシステムです。本稿では3つの下り経路と安全な実装を解説します。

経路1:接続 GATT 書き込み

ゲートウェイ(保守用スマホ)が接続し、制御特性を書き込みます。

  • 接続間隔 7.5-100 ms。散発的なコマンドなら 100-200 ms で平均電流を抑えます。
  • 単一の `Control` 特性を使います(応答不要は write-without-response、ACK は write)。
  • ペイロード:`[Cmd:1B][Len:1B][Payload:N][CRC:2B]`。
  • 電力コスト:接続イベントは 1-5 ms で 3-8 mA。コマンドはまとめて送信。

経路2:非接続ブロードキャストコマンド

1対多制御には、専用 ADV チャネルで署名付きコマンドを放送します。

ADV: 0x16 (Service Data) 独自 UUID
Bytes: [Cmd][Seq][TargetMask][Sig:8B]
  • スキャンモードのタグが接続せず受信。数千台へ拡張可能。
  • リスク:リプレイ。必ず単調増加 `Seq` と短い TTL を入れます。

経路3:定期フェッチ(タグが引く)

タグが起きてゲートウェイの設定 URL を載せたビーコンをスキャンし、HTTP/CoAP で取得。タグ電力は最小、遅延は最大。

ACK と再送

モード 遅延 電力 規模
GATT 書き込み+ACK 低 中 1:1
ブロードキャスト cmd 極低 低 1:N
フェッチ 高 最低 N:1

指数バックオフで再送(1s, 2s, 4s)。上限3回。

セキュリティ

  • 全コマンドを ECDSA (P-256) で署名。タグは実行前に検証。
  • タグごとの鍵導出 `K_i = HKDF(master, tag_id)` で、1台漏れでも他を偽造不可。
  • `Seq` <= 過去最大 は拒否。
  • レート制限:送信元ごと 500 ms に1コマンド超を無視。

下りの電力予算

ブロードキャストを受信し続けるタグはスキャン電力を払います。3チャネル 100% スキャン ≈ 5-8 mA。CR2032 で数年動かすにはウィンドウ走査(例 10 s に 200 ms)≈ 0.1 mA 平均。応答性と電池の調整。

実務チェックリスト

  • 1:1 保守は GATT 書き込み、一斉更新はブロードキャスト。
  • コマンドは必ず署名+連番。
  • ウィンドウ走査。コイン電池で 100% 走査は禁物。
  • 古いキャプチャを再送してリプレイ拒否をテスト。

正しい BLEタグ の下りは利用者からは見えませんが、フリートが制御可能か単なる監視かを決めます。