irMagicianで家電制御に挑戦してみた
がじです。
最近更新が滞っておりますが、サボっていただけではありません。WordPressに脆弱性が見つかったり、サーバーのセキュリティ工場とか地味に色々作業はしてたのですよ。
読者さんには関係ない話ですが。
家電のPC制御というものをやってみたくてまあ、方法はいろいろあるわけですが、今回は大宮技研さん(http://www.omiya-giken.com/)の学習型赤外線リモコンボードirMagicianを買ってみました。まあ、日経Linuxの2014年12月号で紹介されてたので知ったのですけどね。
※大宮技研さんのPR記事ではありません。
irMagicianはどこで手に入るかというと大宮技研さんのサイトから通販で買う方法以外に、ITプラザさん(http://www.itplaza.co.jp/)とかRTアイルさん(http://www.rt-shop.jp/)から購入できるようです。
完成品と組み立てキット、温度センサ付き完成品があるようですが、今回は完成品を買ってみました。いやこの歳になると組み立てとか面倒で。
(^_^;)
PCにirMagicianをUSB接続するとデバイスファイル/dev/ttACM0が作成されます。数字は環境によっては違うかもしれませんが通常は0になるはずです。
公開されているコードがpythonだったりするのでpython pipパッケージマネージャを使ってシリアルライブラリをインストールします。
$ sudo apt-get install python-pip
$ sudo pip install pyserial
で、日経Linuxで紹介されていたhttps://github.com/netbuffalo/irmcli.gitのアプリケーションをgit cloneで取得しておきます。
詳しいことは上記のアプリの使い方のヘルプ
$ sudo python irmcli.py -h
でみてもらうとして、ここではSONY製のTVのリモコン電源ONを学習させてみました。
$ sudo python irmcli.py -c
Capturing IR…
… 132
コマンドを実行させて2〜3秒以内にTVリモコンの発光部をirMagicianの黒いリモコン受光部に向けてリモコンの電源ボタンを押すと上記のような結果が表示されます。
リモコンデータのキャプチャに失敗した場合は
$ sudo python irmcli.py -c
Capturing IR…
!2 Err: TX Buffer overrun
こんな感じのメッセージが表示されるのでもう一度操作してください。最初のうちはタイミングがつかめなくて何度も失敗しましたが、慌てなくて大丈夫です。
キャプチャができたら、今度はirMagicianの赤外LEDをTVに向けて次のコマンドを実行します。
$ sudo python irmcli.py -p
Playing IR…
… Done !
うまく行けばTVの電源が入ります。入らない場合は再度コマンドを入力してみてください。それでもダメなら最初から学習しなおしてみたほうが良いかもしれません。
TVの電源操作がコマンドからできたら、キャプチャした赤外線コマンドをファイルに保存します。
sudo python irmcli.py -s -f sonyTV_on.json
Saving IR data to sonyTV_on.json …
Done !
一度ファイルに保存しておけばいつでもファイル指定でコマンドを再生できます。
$ sudo python irmcli.py -p -f sonyTV_on.json
Playing IR with sonyTV_on.json …
… Done !
作成されるファイルはJSON形式です。上記ソニー製TVなら
{“postscale”: 100, “freq”: 38, “data”: [247, 1, 20, 37, 8, 18, 8, 9, 8, 18, 8, 9, 8, 18, 8, 9, 8, 9, 8, 18, 8, 9, 8, 9, 8, 9, 8, 9, 132, 37, 8, 18, 8, 9, 8, 18, 8, 9, 8, 18, 8, 10, 7, 10, 7, 19, 8, 9, 8, 9, 8, 9, 8, 9, 132, 37, 8, 18, 8, 9, 8, 18, 8, 9, 8, 18, 8, 9, 8, 9, 8, 18, 8, 9, 8, 9, 8, 9, 8, 9, 132, 37, 8, 18, 8, 9, 8, 18, 8, 9, 8, 19, 8, 9, 8, 9, 8, 19, 8, 9, 8, 9, 8, 9, 8, 9, 132, 37, 8, 18, 8, 9, 8, 18, 8, 9, 8, 18, 8, 9, 8, 9, 8, 18, 8, 9, 8, 9, 8, 9, 8, 9], “format”: “raw”}
こんな感じになります。これでWEBサーバー連携とか、node.jsを使用すればPCやWebサーバーから家電を制御できるはずです。
これだけだとつまらないので自宅にあったOlasonic製のWalkmanドック付きスピーカーOlasonic TW-D7WMの電源ONとWalkman再生コマンドを学習させてみました。
尚、TW-D7WMはすでに生産完了のようですね。ハイレゾ対応じゃないし仕方ないか。
参考商品
— Amazon アソシエイト—
— アソシエイトここまで—
閑話休題。
ところがTW-D7WMの挙動が癖があるようで最初のうちに学習させたコマンドで正常に動作しないことがままありました。
何度化試行錯誤を繰り返しているうちにどうもWalkmanとTW-D7WMの状態によってコマンドの受付条件が変わるらしいことがわかりました。
一番シンプルなパターンだけを書くと
・TW-D7WMをWalkmanと接続しWalkman再生モードにセットした状態で電源をOFFする。
・irMagicianから電源ONコマンドを送る。
・irMagicianからWalkman再生コマンドを送る。
という手続きを踏むと再生できます。
間に別の操作をしたり、違う赤外線コマンドを送ると失敗しやすいようです。
TW-D7WMの電源ONコマンドのJSONファイルはこんなかんじでした。
{“postscale”: 100, “freq”: 38, “data”: [101, 1, 45, 136, 65, 10, 7, 9, 24, 10, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 24, 9, 24, 9, 7, 9, 7, 9, 24, 9, 24, 9, 24, 9, 24, 9, 24, 9, 7, 9, 7, 9, 7, 9, 24, 10, 7, 9, 7, 9, 7, 9, 7, 9, 24, 9, 24, 9, 24, 9, 7, 9, 24, 9, 24, 9, 24, 9, 24, 9], “format”: “raw”}
本格的に使えるようになるまでどのくらいかかるんだろうか・・・(-_-;)
—以下広告リンク—