BLEデバイスのアトリビュート/属性データについて
ここでは、BLEデバイスのAttributeデータ/属性データを扱う上で理解しておく必要があるため、
GAP, ATT, GATT について少し触れておきます。
GAPについて
GAP(General Access Profile/汎用アクセスプロファイル)とはBLEデバイスの通信上の役割を
規定しているもので、以下の4つに分類されます。
役割名 | 機能 |
Braodcaster | データ送信のみを行う |
Ovserver | データ受信のみを行う |
Central | advertisingパケットを検知して接続を行い、通信する |
Peripheral | advertisingパケットを送信し、centralに検知してもらい接続を行い、通信する |
今回の使用方法では、ラズパイがCentral となり、REX-SEEK2 が Peripheral となります。
ATTについて
ATT(Attribute Protocol/属性プロトコル)とはデータ表現規則とアクセス手順の定義です。
データ(ATTオブジェクト)は以下の4つの要素で構成されます。
要素 | データ内容 |
Handle/ハンドル | 連番のインデックス。0x0001~0xffff |
Type/型 | Attributeの型を表す 128ビットのUUID |
Value/値 | 属性値。サイズは512バイトまで |
Permission/属性 | 読み書きの権限 |
ATTオブジェクト対する値の読み書きは、ATTプロトコルを用いて行われ、対象のATTオブジェクトはハンドル
によって指定します。
GATTについて
GATT(Generaic Attribute Profile/汎用属性プロファイル)とは、BLEの通信の基本のプロファイルで、
ATTの上位層になります。
構成要素として「サービス(Service)」「キャラクタリスティック(Characteristic)」
「ディスクリプタ(Descriptor)」があり、attributeを最小構成単位としたデータの集まりで
構成されるデータベース(GATTデータベース)となります。
GATTデータベースは階層構造となっており、Profileは複数のServiceからなり、
各Serviceは複数のCharacteristicを持ち、各Characteristicは複数のディスクリプタを
持ちます。
以下の図は、ここで説明した Profile、Service、Characteristic、Description の構成イメージを表しています。
そして、GATTデータベースにアクセスするプロトコルとしてGATTプロトコルがあります。
よく使われるのもとして以下があります。
Discover Characteristic | クライアントがCharacteristicを探す |
Read Characteristic Value | クライアントがCharacteristic値を読む |
Write Characteristic Value | クライアントがCharacteristic値を書く |
Notify Characteristic Value | サーバがCharacteristic値を通知 |
※ 今回の例では、ラズパイがクライアント、REX-SEEK2がサーバになります。
ここでは各プロトコル内容については触れません。
以上、GAP, ATT, GATT について簡単に説明しましたが、詳しい情報は、Bluetooth SIG のサイト
で仕様が公開されていますので、そちらを参照してください。
次ページではREX-SEEK2 のアトリビュート/属性データを説明します。
そして、実際にREX-SEEK2 のアトリビュートにアクセスして、REX-SEEK2を制御してみます。
[…] ▼Bluetooth4.0+LE対応 紛失防止タグ REX-SEEK2(e2eブログ) http://www.ratoc-e2estore.com/blog/2017/04/seek2-01 […]