2015年2月4日水曜日

Volumio を赤外線リモコンでコントロールする (3) リモコンコマンドと自動起動の設定

(前回からの続き)
なんとか動くようになったので,ブレッドボードから本体直付けに変更したところ.

リモコン信号は認識できるようになったので,信号に対応したアクションを設定する.
受け取った信号を元にコマンドを発行するには irexec を使う.デフォルトではユーザのホームディレクトリの .lircrc ファイルを読み込むようだ.

.lircrc の書式は,

begin
   prog = irexec
   button = next
   config = mpc next
end

というのをコマンドごとに書いていく.


config のところが実際に実行されるコマンドだが,複数処理であれば,

  config = mpc ; mpc

というように ; でつなげればよい.また今回は使わなかったが,config 行を2つ書くと,そのふたつをトグルで実行するようだ.
また複数のキーを順番に押したときの動作は,button 行を複数書くことで指定できる.たとえば,

begin
  prog = irexec
  button = 1
  button = 2
  config = mpc
end

これで,1 を押して 2 を押すと mpc が実行される.
テスト用には echo "test" くらいを割り付けておくのが簡単.

どのキーにどういう動作を割り付けるかは自由なのだが,
再生操作については
▶ : mpc play
|| : mpc toggle
■ : mpc stop
<< : mpc prev
>> : mpc next
|<< : mpc cdprev (再生中の曲を頭から再生し直す)

ボリューム用には
▲ : mpc volume +5
▼ : mpc volume -5

を割り当てた.
このほか,consume の on/off,repat の on/off あたりを適当に振ってみて様子を見ている.
残りのボタンは未定義.

shutdown 用には,左上の [open-close] から順に並んでいるキーを三つ順に押すというのを割り当ててみた (誤操作防止のため).同じキーを複数押すのなら,repeat = 3 というような設定も可能.長押しは,ignore_first_events ディレクティブでできるようだが,未検証
→ 追記: 検証できたので,button=open-close と ignore_first_events=15 としてある
→ 再追記: Volumio 用の lirc は現時点では 0.9.0-pre1 で,ignoro_first_events が実装されていないため,この設定は無視される.そのため,今は button 行を3行続けて,3回連続で押すと shutdown にしてある.
なお,実際にはただ shutdown に入るのではなく,まず GPIO25 の LED を点灯させるようにしてみた (echo 1 > /sys/class/gpio/gpio25/value を実行してから shutdown -h now を実行する).
そのために,shutdown ボタン用のスクリプト もちょっと変えて,読み込み時に GPIO25 を開いてしまうようにした (元々は shutdown 直前まで GPIO25 は何も設定していなかった).

ついでに,reboot も組み込んでみた.

これらの動作の確認は,

# irexec

とやって,受信状態に入り,指定コマンドが実行されることを確認すれば良い.終了は ^C.

問題がなさそうであれば,これを daemon として自動起動するようにする.
/etc/rc.local に以下を追記.

/usr/bin/irexec -d /root/.lircrc

-d は daemon の指定,念のため .lircrc のありかも明示的に指定している.
これでリモコンが動けばOK.

音量調整だけでも結構便利.

受光モジュールと分圧抵抗はまたショートジャンパでお手軽にくっつけてみた.





0 件のコメント:

コメントを投稿