raspberry pi と AB Shutter3(bluetoothボタン) の連携
概要
- raspberry pi を扱うにあたり、できるだけ簡易なアクションで操作したい
- ダイソーで300円のbluetoothボタン「AB Shutter3」と連携させてコマンド実行させる仕組みを構築する
参考
連携前の注意点
AB shutter3 は購入時にお試し用のボタン電池が付いていますが新しいものに絶対替えた方が良いです。
というのも私が電池をケチって替えなかった為に数時間無駄にした為です。
どういう問題が起きるかというと、ペアリングは出来るのにボタンを押した時のイベントが拾えないという中途半端な状態になりました。
bluetoothペアリング作業
# 必要に応じて $ sudo apt-get install bluetooth $ sudo hciconfig hci0 down $ sudo hciconfig hci0 up $ sudo bluetoothctl [bluetooth]$ power on [bluetooth]$ scan on # ここでペアリング状態(AB shutter3 は電源ONにするだけ)にする # 検知すると「[NEW] Device XX:XX:XX:XX:XX:XX AB Shutter3」と表示されるのでMACアドレスをメモして [bluetooth]$ pair XX:XX:XX:XX:XX:XX [AB Shutter3 ]$ trust XX:XX:XX:XX:XX:XX [AB Shutter3 ]$ quit
イベントが拾えているか確認(必須ではない、オプション)
$ sudo apt-get install evtest $ sudo evtest # 「Select the device event number [*-*] :」と聞かれるので「AB Shutter3」の番号を入力する # 後はボタンを押してキーイベントが拾えていればOK # ここで拾えない場合は電池を交換してみるとうまくいくかもしれない
こんな感じ
Event: type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9 Event: type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1 Event: -------------- SYN_REPORT ------------ Event: type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9 Event: type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0 Event: -------------- SYN_REPORT ------------
bluebuttonのインストール
$ sudo apt-get install ruby $ sudo gem install bluebutton
設定ファイルの準備
$ vi ~/.config/bluebutton keyup=echo UP keydown=echo DOWN longup=echo LONG UP longdown=echo LONG DOWN
お試し実行
$ sudo bluebutton -c ~/.config/bluebutton
iosボタンとandroidボタンを区別する
現行のプログラムでは2つあるボタンの区別は出来ておらず、アップかダウンか、長押しアップか長押しダウンかを判定できる。
諸事情でiosボタン(大きい方のボタン)とandroidボタン(小さいほうのボタン)を区別したかったのでプログラムを少し変更。
変更点は下記のコミット分だけ
https://github.com/miya15/bluebutton/commit/e2b9b4e475c71886a7b3bf41691f6a022c94c4de
gem化はしていないのでやってみたい方は下記(環境によってパスは異なる場合がありますが)に個別にコピーしてください。
- /var/lib/gems/2.3.0/gems/bluebutton-0.2.1/lib/bluebutton.rb
- /var/lib/gems/2.3.0/gems/bluebutton-0.2.1/bin/bluebutton
$ vi ~/.config/bluebutton # ※下記が追加できるようになる # 注意:反応するタイミングはボタンを離した時です pushandroid=echo PUSH android pushios=echo PUSH ios