lircのソースコードをRaspberry Piにコンパイルしてインストールしてみた。

なんと1年半ぶりの投稿です。仕事にかまけて趣味をさぼっておりました。ラズパイなど久しぶりにいじりましたが、完全に浦島太郎状態となっており、基本的なことをいろいろ思い出すまでに一か月くらいかかってしまいましたね。(;^_^A

今回からしばらくは安価なhome IoTの製作に取り組んでみようと思います。具体的にはラズパイから赤外線LEDを光らせてエアコンのオンオフを操作してみようと思います。

Googleで「raspberry pi エアコン」などと検索すれば結構たくさんの記事が見つかります。これらの記事ではlircという赤外線リモコンパッケージソフトがよく利用されているのですが、エアコンについてはテレビなどと違ってリモコンの信号が長いので、lircのirrecordという学習ソフトではうまく対応できません。そこでいろいろ調べたところ、ソースコードをちょこっと編集してインストールすることで対応できそうということでこれをやってみました。結論からいうとダメでした!(笑) しかしlircをラズパイ用にコンパイルして動くようにするには幾つか余分な(?)手順が必要で、折角なのでその手順を以下に残しておくことにします。なお、エアコンの信号についてはirrecordではなくmode2で比較的簡単に対応できます。これについては次回以降の記事で紹介しようと思います。

今回使用する私のラズパイ環境です。

  • ラズパイ本体:Raspberry Pi Zero
  • OS:Raspbian Stretch

まずは、もしlircが既にapt-getでインストールされている場合はアンインストールしておきます。

エアコンのリモコンの信号は一回の信号に設定温度やルーバーの動きなどの全ての設定値をまとめて送信するために非常に長くなってます。lircのデフォルトでは対応する信号の長さの最大値が短く設定されているためにエアコンに対応できません。この最大値がconfigファイルなどの編集で簡単に設定変更できればよいのですが、ソースコードを編集しないと変更できない仕様になっているのですよね。(なんでだろう…)

というわけでlircのソースコードをディレクトリごとダウンロードします。

なお、この現在のlircの最新のバージョンは0.11.0(開発版)でしたね…。(;^ω^)
リリース版は0.10.0ですね。以下でダウンロードと解凍ができます。

以下の手順は開発版の方で試した手順です。0.10.0のリリース版の方はdebian向けのパッケージのようですから以下の手順より簡単に済むかもしれないですね…。

ダウンロードしたディレクトリ内に移動します。

lirc/lib/irrecord.h の61行目の200という値をテキストエディタで600に書き換えます。ただし、結局これではエアコンの信号をirrecordで学習できるようにはなりませんでした。(ちなみにirrecord.h内には他のパラメータも定義されているので、これらを変更してコンパイルするとひょっとしたらうまくいくかもしれません…。)

次に、コンパイルに必要なautoreconfとxsltprocおよびpython3-yamlを事前にインストールします。

では、コンパイルとインストールを実行します。

共有ライブラリへのパスが通っていないので、新しくエイリアスを作成します。

lircの設定ファイルを編集します。

3、4行目にあるdriverとdeviceの値を以下に書き換えます。

次に/boot/config.txtを編集します。

lirc-rpiモジュールに関する項目があるので、dtoverlayの行頭の#をはずしてアンコメントし、以下のようにしてください。(gpioのアウトに17番ピン、インに18番ピンを使用する場合)

ラズパイを再起動して以上の設定変更を有効にします。

lircパッケージにあるmode2を使ってテレビなどの赤外線リモコンの信号を試しに受信してみましょう。

上記コマンドで待ち受け状態になりますので、もし既にラズパイに赤外線受信器を接続済みであれば、受光部に向かってリモコンボタンを押してみましょう。うまく成功すればspaceとpulseが交互に表示されるはずです。適当なところで^C(ctrl + Cキー)を押してmode2を終了します。

次にirrecordの動作確認です。

上記のようにメッセージが出て待ち受け状態になればOKです。^C(ctrl + Cキー)で抜けます。

では、lircの本体であるlircdを起動してみましょう。まずはlircd.socketを起動します。

途中でパスワード認証が必要です。同様にlircd.serviceも起動します。

正常に起動しているかどうかステータスの確認をしてみます。

緑色にActiveと表示されていればOKです。

最後に、ラズパイの起動時に自動で立ち上がるように設定します。

なぜかlircd.socketを設定するとlircd.serviceも一緒に設定されました。

自動起動の設定が反映されているかを確認します。

両方enabledになっていればOKです。念のためラズパイを再起動して確認するとより確実でしょう。

ちなみに自動起動を解除するには以下の方法です。

手順としては以上になります。

apt-getでパッケージをインストールする場合とインストールされるディレクトリが異なるので注意が必要ですね。それからコンパイルに必要なソフトをいくつかあらかじめインストールする必要があるのと、共有ライブラリのパスがそのままだと通っていないのがハマりやすいポイントでしょうか。

それではまた次回。☕️

スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です