概要
RaspberryPi に無線キーボードの設定をしたあとで無線キーボードからの入力が一定時間ないと bluetooth が切断されてしまう現象が発生しました
切断のたびに bluetoothctl コマンドを実行するのは面倒なので、cron を使って一定間隔で bluetoothctl を実行させるようにしてみました
環境
- Raspberry Pi Type B Single Board Computer 512MB
- Raspbian 8.0 (Jessie)
- Kernel Version 4.1.10
- expect 5.45
スクリプト
とりあえず expect スクリプトの全貌です
#!/usr/bin/expect -f
set timemout 5
set prompt "#"
spawn sudo bluetoothctl -a
expect -re $prompt
send "connect xx:xx:xx:xx:xx:xx\r"
expect -re $prompt
send "quit\r"
expect eof
Mac アドレスの部分は接続する無線キーボードの Mac アドレスを入力してください
デプロイする
pi ユーザで実行しています
- cd
- mkdir script
- cd script
- touch connect_keyboard.sh
- 上記のスクリプトを記載
- chmod 755 connect_keyboard.sh
- crontab -e
*/1 * * * * /home/pi/script/connect_keyboard.sh
で1分おきに connect の命令が実行されます
切断されたキーボード側をペアリング状態にしておけば5分以内には再接続されて使えるようになるはずです
Tips
postfix のインストール
postfix がインストールされていない場合 cron のログに以下のようなエラーが出てうまく cron が動かないことがあります
CRON[2369]: (CRON) info (No MTA installed, discarding output)
この場合は素直に postfix をインストールしましょう
途中設定するために config 画面に切り替わりますが、ローカル用で設定すればOKです
- sudo apt-get -y install postfix
また cron のメールが送られているのが嫌な場合は crontab -e の設定に以下を追記してください
MAILTO=”“
手動でスクリプトを実行する場合
最後の expect eof を interact に書き換えて実行してください
それ用のスクリプトを準備しておくのがいいかもしれません
0 件のコメント:
コメントを投稿