Ubuntu Weekly Recipe

第267回 Bluetoothデバイスで離席管理する

この記事を読むのに必要な時間:およそ 3 分

Proximity Profileとは

Bluetooth 4.0から利用可能になった最新のプロファイルに,Proximity Profile(PXP)があります。これは近接プロファイルという名前の通り,ペアリングしたデバイスとの距離を判別することができるプロファイルです。

このProximity Profileを利用した製品は既に市場に存在します。たとえばBluetooth 4.0対応ぶるタグなどです。ぶるタグは,ペアリングしたデバイスが一定以上離れた時に振動して通知したり,PCから離れた時に自動的にロックすることができ,スマートフォンの置き忘れ防止や,ちょっと席を立った時のPCのロック忘れ防止などに役立つデバイスです。他にもFind Me Profileを利用して,近くにあるデバイスを探すことも可能なようです。これは「部屋の中でスマートフォンが行方不明」などというシチュエーションで役立つ機能です。

ですがこういった製品は,Bluetooth 4.0(とPXP)に対応したPCとデバイスでなければ利用できません。それは少しくやしいので,今週のレシピでは「Bluetoothデバイスとの距離をトリガーとしてコマンドを実行する」ことで,似たような機能をUbuntuで実現する方法を紹介します。

blueproximityのインストール

それでは前述の「デバイスが一定以上PCから離れた時に,自動的にロックする機能」を,スマートフォンを使って実現してみましょう。

これはデバイスとPC間の距離を計測し,距離がしきい値を越えた際にデスクトップをロックするコマンドを実行するという,単純な仕組みで実現できます。そして使用するデバイスやしきい値,実際に実行するコマンドなどは,BlueProximityというフロントエンドを利用することで,簡単に設定することができます。BlueProxymityはuniverseリポジトリにパッケージが用意されていますので,ソフトウェアセンターからインストールしてください。

ただし,ここで一点注意があります。BlueProximityは,一時停止や終了,設定の変更などをインジケーター上のアイコンから行います。ところが現在のBlueProximityはUnityのAppIndicatorに対応していないため,Unity環境下ではこうした制御が不能になってしまいます※1)⁠一応パッチは存在するようなので,このパッチをあてたUbuntu 12.10用のパッケージを,筆者のPPAに用意しました。Ubuntu 12.10を利用している場合は,次のコマンドで筆者のPPAを追加してから,blueproximityパッケージをインストールしてください。※2

$ sudo apt-add-repository ppa:mizuno-as/blueproximity
[sudo] password for mizuno:
以下のPPAをシステムに追加しようとしています:
 blueproximity - Support for Unity's AppIndicators
http://sourceforge.net/tracker/?func=detail&aid=3349215&group_id=203022&atid=983924
 詳しい情報: https://launchpad.net/~mizuno-as/+archive/blueproximity
[ENTER] を押して続けるか,ctrl-c で追加をキャンセルしてください
(...略...)
※1
初回起動時に設定ダイアログが開くので,動かすだけなら問題ありません。そして設定の変更を行いたい場合は,ホームディレクトリにある.blueproximityディレクトリを削除して最初からやり直すことで,問題を回避することも可能です。ですが使い勝手が劣悪になるのは言うまでもありません。
※2
当然ですが,Xubuntuなどを利用している場合は,このパッチは必要ありません。

デバイスのペアリング

ロックのキーとなるスマートフォンを,PCとペアリングします。PXPを使うわけではないため,PCやスマートフォンがBluetooth 4.0に対応している必要はありません。筆者は,この原稿を執筆しているThinkPad T430sと,USBのBluetooth 2.0アダプタを搭載したThinkPad T61を使い,NTTドコモのGalaxy S IIとXperia Z,それに今となっては懐しいiPhone 3GSを組み合わせて,動作を確認しました。

それではUbuntuの「システム設定」⁠⁠Bluetooth」から「+」ボタンをクリックして「Bluetooth新規デバイスのセットアップ」を開いてください。これで近くにあるBluetoothデバイスが自動的に検出されます。リストアップされたデバイスの中から,ペアリングしたいデバイスを選択してください。ただし一般的なAndroidスマートフォンは自動検出がOFFになっていると思いますので,ペアリング前にあらかじめ検出可能な状態にしておいてください。

図1 キャプション:ペアリングしたいデバイスを選択して「続行」をクリックする

図1 キャプション:ペアリングしたいデバイスを選択して「続行」をクリックする

ダイアログ上にPINコードが表示されます。スマートフォンの画面にも同じPINコードが表示されていますので,PINが一致することを確認した上で,ペア設定を行ってください。

図2 Ubuntu/スマートフォンの両方に表示されているPINコードを確認する

図2 Ubuntu/スマートフォンの両方に表示されているPINコードを確認する

図2 Ubuntu/スマートフォンの両方に表示されているPINコードを確認する

図3 ペアリングが完了した状態

図3 ペアリングが完了した状態

BlueProximityの起動

それではBlueProximityを起動します。Unityの場合はDashから「blueproximity」で検索してください。

図4 DashからBlueProximityを起動する

図4 DashからBlueProximityを起動する

初回起動時は,このような設定ダイアログが開きます。まずは「Bluetooth Device」タブを開き,ロックに使用するデバイスとチャンネルを設定しなければなりません。デバイスが検出可能になっている状態で「Scan for Devices」をクリックすると,デバイスが検出されて,名前とMACアドレスがリストアップされます。使用するデバイスを選択して,⁠Use selected device」をクリックします。

次に,BluetoothのRFCOMMの,どのチャンネルを利用するかを設定します※3)⁠⁠Scan channels on device」をクリックすると,利用できるチャンネルを走査しますので,⁠usable」となっているチャンネル番号をクリックして選択してください。デバイスの設定が正しく行われると,インジケーターの鍵アイコンが緑色に変化します。

図5 デバイスとチャンネルの設定を行う

図5 デバイスとチャンネルの設定を行う

このとき,Ubuntuがスマートフォンに対してメッセージアクセス要求を行います。スマートフォンの画面に確認のダイアログが表示された場合は,要求を許可してください。

図6 メッセージアクセス要求を許可する

図6 メッセージアクセス要求を許可する

図7 正常に設定が完了した状態のアイコン。なお鍵マークは,デバイスが設定されていない場合は赤色,BlueProximityの一時停止中は灰色で表示される

図7 正常に設定が完了した状態のアイコン。なお鍵マークは,デバイスが設定されていない場合は赤色,BlueProximityの一時停止中は灰色で表示される

※3
チャンネル番号が5bitで定義されているため,使えるチャンネルは1から30までとなります。

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

コメントの記入