REX-SEEK2が持つアトリビュート/属性データについて
先の「REX-SEEK2について」でプロファイルにはいくつかのサービスが提供されている
ことを説明しましたが、各サービスの中で定義されているCharacteristicにアクセスすることで
BLEデバイスの情報を読み出したり、BLEデバイスを制御することが可能となります。
以下は、REX-SEEK2が持つCharacteristicの一部で、今回の説明で使用するデータになります。
いくつかのサービスをグループ化したものもサービスと呼び、グループ化したサービス自体も
UUIDを持ちます。
以下では、グループ化したサービス自体のUUIDは「Serive UUID」、個々のCharacteristic
のサービスを「Characteristic UUID」と表しています。
Service:Generic Access Service / Service UUID: 0x180A
これは、GATTで定義されているデータで、その一部です。
Servcie | Characteristic UUID | Properties | Value |
Firmware Version | 0x2A26 | Read | ファームウェアのバージョン(文字列) Ver.X.X.X |
Service:SEEK Vender Service / Service UUID: 0x1523
これは、ベンダーユニークとして定義されているデータで、その一部です。
Servcie | Characteristic UUID | Properties | Value |
Set LED & Buzzer Mode | 0x1525 | Read/Write | LED/Buzzerの有効無効設定 Bit 意味 ━━━ ━━━━━━━━━━━━━━━━ 7~3 未使用 2 1: Buzzer有効 0: Buzzer無効 1 1: 赤LED 有効 0: 赤LED 無効 0 1: 緑LED 有効 0: 緑LED 無効 |
Set Alert Time | 0x1526 | Read/Write | アラート時間の設定 (sec) デフォルト:15 (sec) |
Start/Stop LED & Buzzer | 0x1527 | Write | LED/Buzzerの動作開始と停止 0x00 – 動作中断 0x06 – アラートモード:ブザーと赤LEDを動作 0x05 – 通知モード:ブザーと緑LEDを動作 |
クライアント側では、このオブジェクト(UUID)に対するアクセスをハンドル番号という0x0000から0xffffの値
で管理しています。
このため、あらかじめ各サービスのUUIDに対応するハンドル番号を取得しておく必要があります。
ハンドル番号の取得
REX-SEEK2の各アトリビュートの UUIDに対応するハンドル番号を取得するために
gatttool を使って – – char-desc コマンドでCharacteristicをスキャンします。
書式
sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-desc
コマンド | –char-desc | Characteristicのスキャン |
オプション | -b C5:E6:B7:56:05:42 | 対象とするREX-SEEK2のデバイスアドレスを指定 |
-t random | LEアドレスをランダムに指定にする |
REX-SEEK2が持つアトリビュートのUUIDとハンドル番号の組合せが上記のように表示されます。
UUIDの5桁目から8桁目が16ビットのUUIDとなります。
上記の結果から今回の説明で使用するデータのUUIDとそれに対するハンドル番号が以下である
ことがわかります。
Handle/ハンドル | 16ビット UUID | Service/サービス |
0x000f | 0x2A26 | Firmware Version ファームウェアバージョン |
0x001e | 0x1525 | Set LED & Buzzer Mode LED点灯とブザーの有効無効の設定 |
0x0020 | 0x1526 | Set Alert Time アラーム時間の設定 |
0x0022 | 0x1527 | Start/Stop LED & Buzzer |
アトリビュート/属性データの取得
目的とするアトリビュートのハンドル番号が取得できたら、このハンドル番号を使って
Characteristicの値を取得します。
gatttool を使って – – char-read コマンドでCharacteristicの値を読み出します。
書式
sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-read -a 0x0f
コマンド | –char-read | キャラクタリスティックの値を取得 |
オプション | -b C5:E6:B7:56:05:42 | 対象とするREX-SEEK2のデバイスアドレスを指定 |
-t random | LEアドレスをランダムに指定にする | |
-a 0x0f | UUID「0x2A26」のハンドル番号「0x0f」を指定 |
実行例
~ $ sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-read -a 0x000f Characteristic value/descriptor: 56 65 72 2e 31 2e 31 2e 31
ここでは、REX-SEEK2のファームウェアのバージョンが文字列 [Ver.1.1.1] として取得されています。
書式
sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-read -a 0x1e
コマンド | –char-read | Characteristicの値を取得 |
オプション | -b C5:E6:B7:56:05:42 | 対象とするREX-SEEK2のデバイスアドレスを指定 |
-t random | LEアドレスをランダムに指定にする | |
-a 0x1e | UUID「0x1525」のハンドル番号「0x1e」を指定 |
実行例
~ $ sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-read -a 0x001e Characteristic value/descriptor: 07
ここでは、REX-SEEK2のLED/Buzzerの有効無効設定「07」として取得され、Buzzer有効、赤LED 有効、
緑LED 有効 を表しています。
ブザーを鳴らす、LEDを点灯させる
REX-SEEK2のブザーを鳴らすとかLEDを点滅させるといった操作は、Characteristicにデータを
書込むことで行えます。
ブザーとLED制御のための 16ビットUUID は [0x1527] でハンドル番号は [0x0022] になります。
Characteristicに書込むデータとその動作は以下のとおりです。
データ | 動作 |
0x00 | 動作中断 |
0x06 | アラートモード:ブザーと赤LEDを動作 |
0x05 | 通知モード:ブザーと緑LEDを動作 |
gatttool を使って – – char-write コマンドで対象のCharacteristicにデータを書き込みます。
書式
sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-write -a 0x22 -n 05
コマンド | –char-write | Characteristicの値を設定 |
オプション | -b C5:E6:B7:56:05:42 | REX-SEEK2のデバイスアドレスを指定 |
-t random | LEアドレスをランダムに指定にする | |
-a 0x22 | UUID「0x1527」のハンドル番号「0x22」を指定 | |
-n XX | 設定する値を指定 |
具体的には以下のようになります。
■ブザーを鳴らして緑LEDを点滅させるために、「05」を設定します。
sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-write -a 0x22 -n 05
ブザーが鳴り、緑LEDが点滅します。
■ブザーを鳴らして赤LEDを点滅させるために、「06」を設定します。
sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-write -a 0x22 -n 06
ブザーが鳴り、赤LEDが点滅します。
■ブザーを止めてLEDを消灯させるために、「06」を設定します。
sudo gatttool -b C5:E6:B7:56:05:42 -t random --char-write -a 0x22 -n 00
ブザーが止まり、LEDが消灯します。
以上が、REX-SEEK2に対するアトリビュート/属性データの取得および設定方法です。
今回は、REX-SEEK2をラズパイから制御する方法として、デバイスアドレスの取得、
設定情報の取得、ブザーを鳴らす、LEDを点灯させる と説明してきました。
最後に、今回紹介しているREX-SEEK2 の機能を応用し呼出タグとして使用している商品を紹介します。
ナンバー呼出表示システム「Vango(バンゴ)」4月下旬出荷開始
ナンバー呼出表示システム「Vango(バンゴ)」は、既存のサイネージシステムやテレビに
番号呼出機能を追加し、診療所や受付窓口などの呼び出し改善を図ります。
テレビへの表示ほか、スピーカーや呼出タグによる「音」での呼び出しにも対応できます。
呼び出し操作は、タブレットやパソコンからWebブラウザーから行えます。
また、これまでの紛失防止タグやBeaconといったBluetoothタグの開発実績を活かし、
番号呼び出し時に対象者の手元へ通知するための呼出タグもオプションとして用意しています。「Vango」の詳しい製品情報は以下のサイトをご覧ください。
ナンバー呼出表示システム (HDMI入力モデル)
ナンバー呼出表示システム (テレビ放送切替モデル)※ REX-SEEK2等のBLEタグを利用したシステム開発のご相談は⇒法人様からのお問い合わせ
次回以降も引き続き REX-SESEK2をラズパイから制御する方法として「通知の読み取り」「距離の判定」
の説明を予定しています。
「ラズパイでREX-SEEK2 Bluetooth+LE対応 紛失防止タグを使う(その2)」に続く…
ラズパイ対応製品の紹介
REX-SEEK2 Bluetooth+LE対応 紛失防止タグ
RAL-KCM3MB1 - Raspberry Pi CM3対応キャリアボード
[…] ▼Bluetooth4.0+LE対応 紛失防止タグ REX-SEEK2(e2eブログ) http://www.ratoc-e2estore.com/blog/2017/04/seek2-01 […]