Alexa Gadgets用Bluetooth Low Energyの設定



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