Alexa Gadgets用Bluetooth Low Energyの設定
このトピックでは、ガジェットがBluetooth Low Energy(BLE)経由でEchoデバイスと通信するために使用する設定について説明します。
これらの設定を使用するペアリング、接続、再接続の通信フローについては、以下のトピックを参照してください。
通信フローでステップを正常に完了するためにガジェットが使用する設定については、このトピックの該当するステップを参照してください。
Bluetoothに関連するAlexa Gadgets Toolkitの問題については、既知の問題ページを参照してください。
デバイス検出のアドバタイズパケット
ユーザーがEchoデバイスをペアリングモードにすると、Echoデバイスは通信範囲内のBluetoothデバイスをスキャンします。EchoデバイスがBLE経由でガジェットを検出できるようにするには、ガジェットがこのセクションに記載したデータを含むアドバタイズ(ADV)パケットを配信する必要があります。各バイトはリトルエンディアン形式で格納されます。アドバタイズパケットの構造は、ガジェットがペアリング、再接続のどちらのアドバタイズを行うかによって異なります。
このパケットに使用できるデータ形式の種類については、Bluetoothコア仕様の補足情報(英語)を参照してください。ガジェットがほかのBLEサービスをサポートしている場合、複数のチャネルでアドバタイジングすることをお勧めします。
アドバタイズパケットの例については、Bluetooth Low Energyハンドシェイクのサンプルコードを参照してください。
ペアリングのアドバタイズパケット
ペアリングのアドバタイズパケットの構造は次のとおりです。
バイトオフセット | 説明 | 値 |
---|---|---|
0 | AD Type Flagsの長さです。 | 0x02 |
1 | AD Type Flagsの識別子です。 | 0x01 |
2 | ガジェットがBLEのみをサポートする場合は0x06、ガジェットがBR/EDR、BLEの両方をサポートする場合は0x1Aです。 | 現時点では、0x06のみがサポートされています。 |
3 | 16ビットサービスクラスのUUID AD Typeの識別子リストの長さです。 | 0x03 |
4 | 16ビットサービスクラスのUUID AD Typeの識別子リストです。 | 0x03 |
5~6 | 16ビットUUID(Alexa用)です。 | 0xFE03 |
7 | Service Data AD Typeの長さ(23バイト)です。 | 0x17 |
8 | Service Data AD Typeの識別子です。 | 0x16 |
9~10 | 16ビットUUID(Alexa用)です。 | 0xFE03 |
11~12 | Bluetooth SIGによって割り当てられたベンダーIDです。 |
会社IDのリストは、Bluetoothのサイトで確認できます。ガジェットにベンダーIDがない場合は0x0171を使用できます。 |
13 | 将来のために予約されています。 | 0x00 |
14 | 製品のカテゴリーです。 | 0xFF |
15 | 将来のために予約されています。 | 0x00 |
16 | ビット0: ペアリングまたは再接続モードです。 ビット1: Classic Bluetoothが検出可能かどうかを示します。 ビット2~7: 将来のために予約されています。 |
ビット0: 1にセットすると、ガジェットがペアリングモードであることを示します。 ビット1: Classic Bluetoothが検出可能な場合は1にセットします。それ以外の場合は0です。 ビット2~7: 0x00にセットします。 |
17~30 | 将来のために予約されています。 | 0x00 |
再接続のアドバタイズパケット
再接続のアドバタイズパケットの構造は次のとおりです。
バイトオフセット | 説明 | 値 |
---|---|---|
0 | AD Type Flagsの長さです。 | 0x02 |
1 | AD Type Flagsの識別子です。 | 0x01 |
2 | ガジェットがBLEのみをサポートする場合は0x06、ガジェットがBR/EDR、BLEの両方をサポートする場合は0x1Aです。 | 現時点では、0x06のみがサポートされています。 |
3 | Service Data AD Typeの長さ(27バイト)です。 | 0x1B |
4 | Service Data AD Typeの識別子です。 | 0x16 |
5~6 | 16ビットUUID(Alexa用)です。 | 0xFE03 |
7~8 | Bluetooth SIGによって割り当てられたベンダーIDです。 |
会社IDのリストは、Bluetoothのサイトで確認できます。ガジェットにベンダーIDがない場合は0x0171を使用できます。 |
9 | 将来のために予約されています。 | 0x00 |
10 | 製品のカテゴリーです。 | 0xFF |
11 | 将来のために予約されています。 | 0x00 |
12 | ビット0: ペアリングまたは再接続モードです。 ビット1: Classic Bluetoothが検出可能かどうかを示します。 ビット2~7: 将来のために予約されています。 |
ビット0: 0にセットすると、ガジェットが再接続モードであることを示します。 ビット1: Classic Bluetoothが検出可能な場合は1にセットします。それ以外の場合は0です。 ビット2~7: 0x00にセットします。 |
13~30 | 将来のために予約されています。 | 0x00 |
GATTの設定
このセクションでは、ガジェットが送信(Tx)および受信(Rx)のデータ通信に使用する必要のあるGATT(汎用アトリビュートプロファイル)設定について説明します。Txチャネルは、Echoデバイスからガジェットにデータを送信します。Rxチャネルは、ガジェットからEchoデバイスにデータを送信します。また、Echoデバイスからの通知を有効にするには、ガジェットのRx特性で記述子をサポートする必要があります。
説明 | UUID | UUID(16ビット) | 権限 | プロパティ |
---|---|---|---|---|
GATTサービス | 0000FE03-0000-1000-8000-00805F9B34FB | 0xFE03 | ---- | ---- |
Tx特性 | F04EB177-3005-43A7-AC61-A390DDF83076 | ---- | 書き込み(暗号化) | 書き込み |
Rx特性 | 2BEEA05B-1879-4BB4-8A2F-72641F82420B | ---- | 読み込み(暗号化) | 通知 |
Bluetoothアドレス指定方式
BLEをサポートするすべてのガジェット(デュアルモード、LEのみを問わず)は、BLEのアドバタイズに次のアドレス指定方式を使う必要があります。
デバイスタイプ | 優先される転送方法 | アドレス指定方式 | アドバタイズタイプ |
---|---|---|---|
デュアルモード | LE(GATT) | 解決可能なランダムのプライベートアドレス | 接続可能 |
LEのみ | LE(GATT) | 解決可能なランダムのプライベートアドレス | 接続可能 |
プロトコルバージョンパケット
このセクションでは、ガジェットがEchoデバイスに送信するプロトコルバージョン(PV)パケットの形式について説明します。Echoデバイスは、PVパケットを受信するまでガジェットにパケットを送信しません。PVパケット長は20バイトで、各バイトはビッグエンディアンで格納されます。
PVパケットの例については、Bluetooth Low Energyハンドシェイクのサンプルコードを参照してください。
長さ(バイト) | 説明 | 値 |
---|---|---|
2 | プロトコルの識別子です。 | 0xFE03 |
1 | メジャーバージョンです。 | 0x03 |
1 | マイナーバージョンです。 | 0x00 |
2 |
最大転送単位(MTU)です。この値は、ガジェットとEchoデバイスがBLE経由で交換するデータパケットの最大長です。 |
ガジェットは、PVパケットにGATTの検出フェーズでガジェットとEchoデバイスがネゴシエートするMTU値を指定する必要があります。ガジェットとEchoデバイスがPVパケットよりも前にMTUをネゴシエートできなかった場合、ガジェットはこの値に0をセットする必要があります。最大値: 515 |
2 | トランザクションデータの最大サイズです。つまり、ガジェットが送受信できるデータチャンクの最大サイズになります。 | 設定可能なバッファーサイズによって異なります。 |
12 | 予約済みです。 | 0x00 |