Bluetooth Mesh
主に Gemini2.0 Flash Experimental で勉強
概要
2017年に仕様が策定された Bluetooth Low Energy上で動作するプログラム
通常Bluetooth Low Energyでは届かない距離の端末への通信を、多対多で通信することによって可能にするメッシュネットワークの構築方法
メッセージの展開方法はマネージドフラッディングによるブロードキャスト
構成要素
Node
メッシュネットワークに参加しているデバイス
Relay Node
TTL(Time To Live)設定に従って受信したメッセージを指定された回数で再送信するノード
TTLとはメッセージが中継される回数のことで、中継の度に -1 される
Proxy Node
Bluetooth Mesh機能を持たないデバイスがメッシュネットワーク内のノードと通信します。プロキシプロトコルとしてGATT (Generic ATTribute profile) を介して通信されます。
Low Power Node
一部のノードはスリープモードに移行することで消費電力を抑えますが、定期的にメッセージを管理する必要があり、フレンドノードと連携して動作します。
Friend Node
Low Power NodeがオフのときにLow Power Node宛てのメッセージを保存するノード
ネットワークへの参加(Provisioning)
新しい端末をBluetooth Meshネットワークに参加させるプロセスのことをProvisioningと呼ぶ
Provisioningの流れは以下の通り
1. ビーコンの発行
未プロビジョニングデバイスはプロビジョニングビーコンをブロードキャストします。このビーコンにはデバイスの情報が含まれています。
2. プロビジョナーによる招待
プロビジョニングを行うデバイス(プロビジョナー)は、ビーコンを受信した未プロビジョニングデバイスにプロビジョニング招待を送信します。
3. 公開鍵交換
プロビジョナーと未プロビジョニングデバイス間で公開鍵を交換し、安全な通信チャネルを確立します。
4. 認証
out-of-band (OOB) 認証などの方法でデバイスを認証します。例えば、デバイスに表示された数値をプロビジョナーに入力する、NFCを使用するなどの方法があります。
5. ネットワークキー、アドレスの割り当て
プロビジョナーは未プロビジョニングデバイスにネットワークキー、ユニキャストアドレス、その他の必要な設定情報を送信します。
6. プロビジョニング完了
未プロビジョニングデバイスはネットワークキーを使用してネットワークに参加し、他のノードと通信できるようになります。
code:mermaid
sequenceDiagram
participant Unprovisioned Device
participant Provisioner
Unprovisioned Device->>Unprovisioned Device: Provisioning Beacon
Provisioner->>Unprovisioned Device: Provisioning Invitation
Unprovisioned Device->>Provisioner: Public Key Exchange
Provisioner->>Provisioner: Authentication (OOB etc.)
Provisioner->>Unprovisioned Device: Network Key, Address, etc.
Unprovisioned Device->>Unprovisioned Device: Provisioning Complete
参考資料