Bluetoothをプログラム動作の条件にしてみる

 自分が外出している時だけ実行するようなプログラムを作ろうとした時、どのようにしてそれをプログラムに判断させるか?と考えた時、手っ取り早いのは物理的にスイッチでポートの状態を拾うことだが、スイッチを入れ忘れることも有ろう。人感センサーでは検出範囲は部屋内が限界だ。現状では常日頃持ち歩くスマフォのBluetoothで何か如何にかできないか?と思うのが普通だろう。以前、C#で考えた時はどうにも判らなかったが、Linuxでは簡単に出来る。

 先ず、Raspberry PI2のUSBにBluetoothのトングルを挿す。続いてBluetoothスタックのbluezをインストールする。
sudo apt-get install bluez

 hcitool scanコマンドでデバイスをスキャンする。この時、端末によってはスキャンにかかるように一時的に制限を解除する必要がある。対象のアドレスが判ればhcitool name コマンドでペアリングしなくても、スキャンにかからない設定にしていてもBluetooth端末が圏内にいるか判る。