Bluetooth Low Energyを経由したガジェットとEchoデバイスのペアリングおよび接続フロー



Bluetooth Low Energyを経由したAlexa GadgetsとEchoデバイスのペアリングおよび接続フロー

このトピックでは、ペアリングしたことのない、あるいはペアリング情報が削除されているガジェットとEchoデバイスの間で、Bluetooth Low Energy(BLE)接続を確立する方法について説明します。

ペアリング後に切断されたガジェットをEchoデバイスに再接続するプロセスについては、Bluetooth Low Energyを経由したAlexa Gadgetsの再接続フローを参照してください。

Bluetoothに関連するAlexa Gadgets Toolkitの問題については、既知の問題ページを参照してください。

概要

次の図は、ガジェットとEchoデバイスがBLE接続を確立し、Alexa Gadgetsディレクティブとイベントを交換する流れを示しています。図に続いて、各ステップについて説明します。

Bluetooth Low Energyを経由したAlexa Gadgetとの接続・ペアリングフロー

フェーズ1:デバイスの検出

Echoデバイスとガジェットは、次のようにBLE経由で互いを検出します。

  1. ユーザーがガジェットをアドバタイジングモードにします。この手順は、ガジェットによって異なります。たとえば、ボタン型のガジェットの場合は、長押しを使う可能性があります。タッチスクリーン付きのガジェットの場合、画面上の操作でプロセスを開始する可能性もあります。アドバタイジングモードになると、ガジェットは アドバタイズパケットのブロードキャストを開始します。
  2. ユーザーがEchoデバイスをペアリングモードにします。画面の付いていないEchoデバイスの場合は、Amazon Alexaアプリを使用して、Echoデバイスをペアリングモードにします。Alexaアプリで設定に移動し、Echoデバイスを選択してから、接続デバイスAlexa Gadgetをペアリングを選択します。画面付きEchoデバイスの場合は、画面の指示に従って、ペアリングを開始します。ペアリングモードになると、Echoデバイスは範囲内のBluetoothデバイスのスキャンを開始します。
  3. Echoデバイスは、ガジェットのアドバタイズパケットを検出して読み取ります。このパケットには、ペアリング用のアドバタイズパケットのデータが含まれています。

フェーズ2:接続とペアリング

ガジェットを検出後、Echoデバイスは、Bluetooth LEセキュア接続のペアリングフローでガジェットとペアリングします。暗号化は必須です。ペアリングが完了すれば、ペアリングが解除された場合を除き、接続が切断されてもガジェットとEchoデバイスを再度ペアリングする必要はありません。

フェーズ3:GATTの検出

Echoデバイスとガジェットが、ガジェットとEchoデバイスが今後BLE経由で交換するデータパケットの最大長である、最大転送単位(MTU)をネゴシエートします。Echoデバイスとガジェットは、それぞれが対応可能な最大MTUを交換し、小さいほうの値を選ぶことにより、この値をネゴシエートします。ネゴシエーションの際、対応可能な最大パケット長をガジェットのMTUに指定することをお勧めします。MTUサイズが大きいほどワイヤレスパケットが不必要に分断されるのを防げるため、遅延やデフラグのオーバーヘッドを削減できます。

次に、EchoデバイスはガジェットにGATT(汎用アトリビュートプロファイル)サーバーと接続するリクエストを送信します。接続確立のためには、ガジェットのローカルデータベースにGATTの設定に記載されている設定が含まれている必要があります。GATTの設定では、Echoデバイスとガジェットのロールと、BLE接続を経由してどのようにデータを交換するかを定義します。また、EchoデバイスはRx特性(アトリビュート)に関する通知も有効にします。これにより、ガジェットはEchoデバイスにデータを転送できるようになります。

フェーズ4:ハンドシェイク

ガジェットとEchoデバイスの接続が確立されたら、ガジェットはEchoデバイスにプロトコルバージョン(PV)パケット を送信する必要があります。PVパケットを受信したら、Echoデバイスはガジェットがサポートしているプロトコルバージョンに基づいて、ガジェットと通信できるかどうかを判断します。この判断に応じて、Echoデバイスがデータ交換を続けるか、ガジェットとの通信ができないために接続を切断するかのどちらかを行います。

Echoデバイスがガジェットとの通信を継続できると判断した場合、Echoデバイスは制御ストリームを使ってガジェットから追加の情報を取得します。このフェーズの間、EchoデバイスはI/O機能、サポート対象のハードウェア機能、ガジェットがサポートするその他の機能などのデバイスアトリビュートを取得します。そのために、Echoデバイスはガジェットにデバイス情報を照会し、ガジェットはデバイス情報パケットで応答します。次に、Echoデバイスはガジェットにサポート対象の機能を照会し、ガジェットはデバイス機能パケットで応答します。

フェーズ5:Alexa Gadgets Toolkitディレクティブおよびイベント

Echoデバイスとガジェットが接続され、Alexaがガジェットの情報とサポート対象機能の情報を取得したら、EchoデバイスとガジェットはAlexaストリーム(プロトコルバッファー形式)を使って次の情報を交換します。

  1. EchoデバイスがガジェットにDiscoverディレクティブを送信します。
  2. ガジェットがDiscover.Responseイベントで応答します。このイベントには、DSNのハッシュと、開発者ポータルにガジェットを登録した際にガジェットに割り当てられたデバイスタイプシークレットが、その他の情報とともに含まれています。
  3. ガジェットとEchoデバイスは、Alexa Gadgetsインターフェースによって定義されたディレクティブやイベントを用いて情報を交換します。