raspberry piとirMagicianを使って赤外線で家電を操作

スポンサーリンク
レクタングル大

はじめに

我が家では去年からhomekitを使ったスマートホーム化を部分的に行っています。

※スマートホームとは、家庭内の電化製品を赤外線や無線、有線にて接続し、制御することによっての自動化、他の機器との連動やリモートコントロール等を行える家の事です。

我が家のスマートホームの代表的な使い方は、平日の毎朝起床時間に寝室の照明が自動で点灯し、外出時に消し忘れた照明やエアコンを自動で消したり、外出先から帰宅前にエアコンのスイッチだけ入れて帰宅時に快適な温度になるようにし、寝る時にはSiriに話しかけて家中の電気を消したりしています。

もちろんこれ以外にもアイデアや労力次第で様々な事が出来ます。
(毎朝自動でカーテンを開けるとか室温を出先でも確認できるとか)

しかし、いきなりスマートホーム化を一記事にするのは無理があり判りづらいので、今回はラズベリーパイとirMagicianを使って、電化製品の赤外線リモコンの信号を学習し、ラズベリーパイで様々な電化製品を赤外線で操作するまでの方法を記載したいと思います。

これだけでもcronを使って決められた時間に電化製品の操作を行ったりする事が可能ですし、homekitを利用したSiriでの操作や、外出先からのリモートコントロールなんかも今回の内容をベースにするのでそれらに興味の有る方もまずはこちらから御覧下さい。

irMagician

なぜ赤外線の操作にirMagicianを使うのか?

赤外線の送受信の出来るパーツは他にも幾つかありますが、他の赤外線学習リモコンはエアコンの赤外線信号に対応できていないものも多く(エアコンの赤外線はデータ量が多くメモリが足りないケースが多い)、対応するもの(irkit)は価格が高く若干クセも強いモノのようでした。

irMagicianはUSBで接続でき、外部電源が不要、プラットフォームを選ばないデバイスかつ価格的にもこなれているので採用しました。

公式サイトirMagician製品ページ

環境

ラズベリーパイ(私はRaspberry Pi 3)にRaspbian LiteをインストールしてirMagicianをUSBで接続します。

ハードウェア:ラズベリーパイ(私はRaspberry Pi 3)
OS:Raspbian Lite
赤外線送受信部:irMagician

公式サイトRaspbian Liteダウンロードページ

Raspbian Liteのインストール方法がわからない方は他のOSのイメージファイルのインストール記事ですが、2017年2月24日リリース(v8.0.0)のLibreELEC公式HPダウンロード版のインストールを参考にimgファイルだけ上記公式サイトダウンロードページの物で行えばインストールできるかと思います。

ちなみに
ユーザー:pi
パスワード:raspberry

設定及び操作

設定

実はirMagicianを接続したラズベリーパイは、そのままの状態ではirMagicianをデバイスとして認識することが出来ませんので認識できるようにします。

まずはカーネルパラメーターを編集します。

“sudo vi /boot/cmdline.txt”

と打ち込んでcmdline.txtの”console=serial0,115200″を削除

/boot/cmdline.txtの内容

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=6f789a98-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

↑上記cmdline.txtの”console=serial0,115200″を削除して下記のようにします。

dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=6f789a98-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

次に/etc/inittabを編集します。(私の環境ではinittabがありませんでした。無い方は不要ですが念のために記載)

“”sudo vi /etc/inittab”

と打ち込んで”Spawn a getty on Raspberry Pi serial line””T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100″の2行ををコメントアウト

↓コメントアウト前

Spawn a getty on Raspberry Pi serial line
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

↓コメントアウト後

#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

これでデバイスとして認識できるようになりましたので一旦再起動します。
(再起動しないと認識しません)

再起動後

“ls /dev/”

と打ち込むとリストの中に”ttyACM0″が表示されるはずです。

確認できたらpythonで書かれた制御プログラムを利用するのでpythonをインストールします。

“sudo apt-get install python-pip”

“sudo pip install pyserial”

pythonで書かれた制御プログラムがMIT Licenseでgitに有りますのでまずgitをインストール

“sudo apt-get install git”

gitをインストールしたら制御プログラムをgitで取ってきます。

私はホーム直下に入れましたがお好みのディレクトリに入れても構いません。

“git clone https://github.com/netbuffalo/irmcli.git”

“irmcli”というディレクトリが出来、その中に“irmcli.py”という制御プログラムが入りました。

操作

ここからは実際に赤外線の受信学習、ファイルに書き出し、ファイルから読み込んだ赤外線データの送信を行います。

“irmcli”に移動します。

“cd irmcli”

赤外線の受信学習

“sudo python irmcli.py -c”

と打ち込み、irMagicianに学習させていリモコンのボタンを押して赤外線を当てて学習させます。(以下、照明の赤外線リモコンの信号を例にさせて頂きます。)

学習した赤外線データのファイルへの書き出し

“sudo python irmcli.py -s -f light_on.json”

と打ち込むと”light_on.json”というファイルが作成され中に上記”赤外線の受信学習”で記憶されたデータが書き込まれます。(照明を付ける赤外線データとして”Light_on.json”と命名しましたがご自身の覚えやすい名前にして下さい)

書き出し後、再び上記”赤外線の受信学習”で記載の通り、違う赤外線データを受信学習しファイルへ書き出しを繰り返せば複数の赤外線信号のファイルが貯めれます。

ファイルから読み込んだ赤外線データの送信

“sudo python irmcli.py -p -f light_on.json”

と打ち込むと、irMagicianから赤外線が発信されますので、コントロールしたい機器にirMagicianを向けとくと作動するはずです。

赤外線データの送信をcronに設定しておけば毎朝信号を発信したり出来ますのであとはアイデア次第となります。

homekitとの連携等に関しては後日別記事にてご紹介できればと思いますので、その際にはリンクも貼っときたいと思います。

スポンサーリンク
レクタングル大