赤外線リモコンでコマンドを実行する


前回は赤外線リモコンでGPIOを制御する方法を紹介しました。
今回は赤外線リモコンを使って、様々なコマンドを実行する方法を紹介します。
GPIOを操作するコマンドを実行すれば、前回と同じ結果となります。

使用するリモコンは前回と同じ「RW-PCM37BK」です。
lircのインストールとリモコンの学習も前回と 同じです。

定義ファイル

以下のファイルを[/etc/lirc/lircrc](Raspbian Jessieの場合)、あるいは[/etc/lirc/irexec.lircrc](Raspbian Stretchの場合)として作成します。
button=XXXXの部分は「/etc/lirc/lircd.conf」に定義したボタン名称
config=XXXXの部分はそのボタン が押されたときに、実行するコマンドです。
begin
 button = POWER
 prog   = irexec
 config = sudo shutdown -h now
end

begin
 button = ButtonB
 prog   = irexec
 config = sudo shutdown -r now
end

begin
 button = Play
 prog   = irexec
 config = mpc play
end

begin
 button = Stop
 prog   = irexec
 config = mpc clear;mpc stop
end

begin
 button = VolUp
 prog   = irexec
 config = mpc volume +10
end

begin
 button = VolDown
 prog   = irexec
 config = mpc volume -10
end

上記のファイルを作成後、以下のコマンドを実行します。
$ irexec /etc/lirc/irexec.lircrc

この状態でリモコンを発射するとボタンに応じたコマンドが実行されます。



Jessieの場合、[/etc/lirc/lircrc]が有ると、システム起動時にirexecが自動的にデーモンで起動し、リモコンを受け 付けます。
$ ps -ef | grep irexec
root       489     1  0 Jun21 ?        00:00:00 /usr/bin/irexec -d /etc/lirc/lircrc
pi        3154  3132  0 09:58 pts/0    00:00:00 grep --color=auto irexec

Stretchの場合、[/etc/lirc/irexec.lircrc]が有ると、システム起動時にirexecが自動的にデーモンで起動 し、リモコンを受け付けます。
$ ps -ef | grep irexec
root       306     1  0 23:43 ?        00:00:00 /usr/bin/irexec /etc/lirc/irexec.lircrc
pi         625   607  0 23:44 pts/0    00:00:00 grep --color=auto irexec

Bullseyeの場合、[/etc/lirc/irexec.lircrc]が有っても、システム起動時にirexecが起動し ません。
以下のコマンドでirexecサービスを有効にする必要が有ります。
$ sudo systemctl enable irexec --now

$ sudo systemctl status irexec
● irexec.service - Handle events from IR remotes decoded by lircd(8)
     Loaded: loaded (/lib/systemd/system/irexec.service; enabled; vendor preset>
     Active: active (running) since Fri 2022-11-11 05:17:24 GMT; 2h 22min ago
       Docs: man:irexec(1)
             http://lirc.org/html/configure.html
             http://lirc.org/html/configure.html#lircrc_format
   Main PID: 280 (irexec)
      Tasks: 1 (limit: 268)
        CPU: 1.440s
     CGroup: /system.slice/irexec.service
             mq280 /usr/bin/irexec /etc/lirc/irexec.lircrc

これで、システム起動時にirexecが自動的にデーモンで起動し、リモコンを受け付けます。
リモコンを操作すると、irexecデーモンがボタンに応じたコマンドを実行してくれます。
$ ps -ef | grep irexec
root       265     1  0 11:49 ?        00:00:00 /usr/bin/irexec /etc/lirc/irexe .lircrc
pi         534   522  0 11:50 pts/0    00:00:00 grep --color=auto irexec

続く....