単体の Bluetooth Beacon は、ただ電波を発信する無線機に過ぎません。位置や在席、テレメトリといった真の価値は、そのパケットを受信してフィルタリングし転送するゲートウェイとエッジ層によって生まれます。本記事では、Beacon からゲートウェイへのパイプラインをどう設計し、どこに演算を置き、大規模時に帯域と遅延をどう抑えるかを解説します。
ゲートウェイの実際の役割
ゲートウェイはアップリンク付きの BLE スキャナです。受信した各広告パケットに対して次を行います。
1. 重複排除(同一 MAC+シーケンスは重複する 3 つのゲートウェイで聞こえることがある)
2. 同期クロック(NTP/PTP)でのタイムスタンプ付与(三角測位を一致させるため)
3. RSSI の正規化(無線ごとにフロントエンド利得が異なる)
4. ウィンドウ内(例 1 秒)でのタグごとの集約を 1 レコードに
5. アップリンクでの転送
エッジとクラウド
これをすべてクラウドで行うと、生パケットをすべて送信することになります。タグ 500 個を 1 秒間隔にすると、毎秒約 500 パケット発生します。これをサイト間で送るのは無駄です。エッジゲートウェイは*タグごと秒あたり 1 つの集約レコード*を出力すべきで、量はタグを聞いたゲートウェイ数で削減されます。
データフロー
<strong><a href="https://www.tecksay.com/category/products/bluetooth-beacon/">Beacon</a></strong> ADV ──▶ Gateway (BLE scanner)
├─ dedupe + timestamp
├─ RSSI smoothing (Kalman / moving avg)
└─ aggregate 1 Hz record
│
▼
MQTT broker (topic: site/floor/tag/uid)
│
▼
Cloud ingestion ──▶ dashboard / alerting
エッジフィルタリングの数学
重複排除キー = (mac, seq)。スライディングセットを保持し、T_dedup(例 5 秒)内の重複を破棄。タグごとの RSSI 平滑化:
rssi_smoothed = α·rssi_new + (1-α)·rssi_prev (α ≈ 0.3)
これにより、位置飛びを疑わせる単発のスパイクを除去します。
アップリンクプロトコル
MQTT が自然な選択です。ゲートウェイは tecksay/ に発行し、クラウドは一度購読します。HTTP POST はデバッグしやすいもののキープアライブ接続が必要です。CoAP は制約の厳しいゲートウェイに向きます。
帯域の数学
タグ 500、1 Hz、各タグを平均 2.5 無線で聞く、集約後ペイロード 120 B とします。
- クラウドへの生データ:500 × 120 B × 2.5 = 150 KB/秒(重複で無駄)
- エッジ集約:500 × 120 B = 60 KB/秒、単一コピー
この 2.5 倍の削減はゲートウェイ密度とともに拡大します。
遅延予算
タグでの事象 → 広告間隔内(≤1 秒)でゲートウェイが捕捉 → エッジ集約 1 秒 → MQTT ホップ約 50 ms → ダッシュボード。エンドツーエンドは通常 2〜3 秒で、ネットワークではなく広告間隔に支配されます。
クラウド停止時のバッファ
ゲートウェイはデータを落としてはなりません。直近 1 時間などのローカルリングバッファを保持し、再接続時に指数バックオフで再生します。再生レコードには (gateway, seq) でクラウドが重複排除できるよう印を付けます。
セキュリティ
- アップリンクは TLS。平文 RSSI をサイト外へ出さない。
- ゲートウェイごとの認証トークン(共有シークレットではない)。
- 各レコードに `sig = HMAC(k, payload)` で署名し、なりすましゲートウェイが偽位置を注入できないように。
- ゲートウェイ鍵は定期ローテーション。
配置トポロジ
ゲートウェイを 20〜30% 重複させ、各タグが常に 2 以上の無線に聞こえるように(三角測位に必要)。重複が多いほど精度は上がりますが重複排除負荷も増えます。ゲートウェイ間のハンドオフは暗黙的です。クラウドは単に、タグを聞いた無線の最新レコードを融合します。
チェックリスト
- [ ] ゲートウェイクロック同期(NTP, ±50 ms)
- [ ] 重複排除キー = mac+seq, T_dedup 設定
- [ ] エッジで RSSI 平滑化
- [ ] 集約 1 Hz レコード(生パケットではない)
- [ ] サイト階層トピックの MQTT
- [ ] ローカルリングバッファ+停止時再生
- [ ] TLS +ゲートウェイごと署名レコード
- [ ] 20〜30% ゲートウェイ重複