なぜ下り通信が重要か
多くの 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タグ の下りは利用者からは見えませんが、フリートが制御可能か単なる監視かを決めます。