パソコンで家電をリモコン操作する IRKit
Last update 2017-07-10 18:27
私のように起きている時間は、パソコンに向かっている人にとって、パソコンで家電(エアコン、シーリングライト、テレビなどなど)を操作できたら便利ですよね。
というわけで、パソコンで家電用のリモコンを操作できるようにしてみました。
Sponsored Link
このページの目次
- パソコンでリモコン操作するのに必要なもの
- curlをインストール
- IRKitのIPアドレスを調べる
- コマンドプロンプトからIRKitと通信をしてみる
- パソコン上からIRKitを操作
- JavaScriptで高度なリモコン操作
一見難しそうに見えますが、今ページ通りにやれば簡単にできると思います。
JavaScriptなどに詳しい人なら、組み合わせて複雑な操作もできるかと思います。
準備
必要なもの
IRKit
パソコンで家電を操作するようにするには、IRKitというリモコンが必要です。
本来はiPhoneやスマートフォンなどで操作するための機会なのですが、パソコンなどでも操作可能です。
IRKitの詳しい使い方については、iPhoneを家電のリモコンにするアプリを参考にしてください。
curlをインストール
まずはcurlというソフトが必要です。
ダウンロードページへ行き、下の方(だいぶ下にあります)にあるWindows版curlをダウンロードします。
「Win64 x86_64 zip」がWindows版 curlになります。
ファイルをダウンロードした、右クリックし、「すべて展開」を選択します。
展開されたフォルダの中に「src」というフォルダがあるので、これを開きます。
この「curl.exe」というファイルをCドライブのWindowsフォルダに移動か、コピーします。
これで準備が整いました。
IRKitのIPアドレスを調べる
続いてIRKitのIPアドレスを調べます。ルーターにアクセスして調べてもいいのですが、iTunesをインストールしている人であれば、簡単に次のようにして調べることが出来ます。
スタートボタンをクリックして、「すべてのプログラム」の中にある「W」の項目の「Windowsシステム ツール」を開き、「コマンド プロンプト」をクリックします。
コマンドプロンプトが立ち上がるので、ウィンドウの左上にある小さなコマンドプロンプトのアイコンをクリック。
「プロパティ」を選択します。
「従来のコンソールを使う」のチェックを外し、画像のようにチェックを入れておきます。
OKをクリック。
dns-sd -B _irkit._tcp
と入力(もしくはコピペ)します。
*「dns-sd」「-B」「_irkit._tcp」の間は半角スペースです
すると、購入したIRKitの「Instance Name」を調べることが出来るので、これをメモしておきます。(画像だと「irkit9394」です。)
「Ctrl」と「Cキー」を同時に押すと、コマンドプロンプトが再び入力受付になるので、
dns-sd -G v4 irkitXXXX.local
と入力します。
irkitXXXX の部分は、今調べた「Instance Name」に表示されたものを入力します。
「Address」のところに表示された、192.168.X.XX のような数字とドットのアドレスが、IRKitのIPアドレスになります。
このIPアドレスを覚えておきます。
同じように「Ctrl」と「Cキー」を同時に押して、入力受付モードにします。
IRKitとコマンドプロンプトで通信してみる
では、実際にパソコン上でIRKitと通信してみましょう。ここまで出来たら、あとは簡単です。
続けてコマンドプロンプトで、
curl -i "https://192.168.X.XXX/message"
と入力します。
192.168.X.XXX の部分は先ほど調べたIPアドレスが入ります。
HTTP/1.0 200 OK
というような返事が返ってきたら、IRKitとの通信が成功しました。
リモコンを数値化する
さて、続いては家電を操作するリモコンの赤外線を「数値化」してみましょう。
難しくはありません。やり方は以下。
IRKitに向けて何かリモコンを操作してみます。
IRKitが赤外線を受信すると、点滅すれば受信完了です。
今度はいま受信した赤外線を数値化したものを表示させてみます。
コマンドプロンプトで
curl -i "https://192.168.X.XXX/messages" -H "X-Requested-With: curl"
と入力(もしくはコピペ)して、エンターキーを押します。
192.168.X.XXX の部分はそれぞれ変わるので、適当に変更してください。
すると、画像のようにごちゃごちゃと数字が返ってきます。
これが受信した赤外線を数値化したものです。
なお、一度この数字が表示されると、IRKitに受信した赤外線がリセットされてしまうので、もう一度取得したい場合は、再びリモコンをIRKitに向けて発射してください。
パソコンをリモコン化してみる
この数値の部分( {#format": で始まる部分)をマウスで選択します。
選択した部分が白抜きになるので、最後まで選択したら、「Ctrl」と「Cキー」を同時に押して、コピーします。
続いて、IRKit jQuery Sampleのページを開きます。
ページ右側の部分をクリックして、入力可能状態にします。
「IRKit hostname」の部分に、IRKitのIPアドレスを入力します。
その下の「IR signal JSON representation」の部分に、先ほどコピーした赤外線を数値化したものをペーストします。
最後に「Send」をクリックしてください。
私の場合は、シーリングライトのつける、という赤外線を送信したものだったのですが、ちゃんと天井のシーリングライトが点灯しました!
JavaScriptで高度なリモコン操作
これだけだと、いちいちコピペをしたりしてめんどくさいので、もっと楽に操作できるようにします。
先ほどのページに「Download」というボタンがあるので、ここをクリックしてファイルをダウンロード。
ZIPで圧縮されているので、解凍します。
すると先ほどのページにアクセスしなくても、入力してリモコン操作ができるようになりました。
JavaScriptで改良する
いちいち操作するたびに、コマンドプロンプトで入力したり、コピペするのもめんどくさいので、以下の様なJavaScriptを追加します。
arr = new Array();
arr[0] = '{"format":"raw","freq":38,"data":[6881, 3341,815,904,904,815,904,2537,710,2537,904, 787, 904,2537,815,904,904,787,904,787,904, ................ ,2537,904,787,904,787,904]}';
function set(n){
document.remotecontroller.message.value = arr[n];
}
</script>
ヘッダ部分に上のようなソースを追加します。
■色の部分は、コマンドプロンプトで取得した、赤外線を数値化したものです。
パソコンで操作したいリモコンの数だけ、arr[0]、arr[1]、arr[2]のように作成していきます。
今度は、BODY部に、
のようなボタンを作成します。わかりやすいように「 value 」の部分になんの操作なのか入力しておくといいでしょう。
私の場合はこんな感じになりました。
JavaScriptに詳しい人であれば、1分後に電気を消す。とか、複数のリモコン操作をクリック1回で出来るようにしたり・・・など、色々なアイデアが実現できると思います。
ただし注意点として、先ほどダウンロードしたHTMLファイルは、パソコンが起動していないと動作しないし、外部からアクセスして・・・ということは出来ないので注意。
もし、屋外から自宅のエアコンを操作したい。なんて場合は、iPhoneやスマホで操作するほうが簡単でしょう。
まとめ
リモコンは本当に便利なアイテムですが、増えてくると一瞬でどれがどのリモコンかわからないのが難点。
特にエアコンなんかは、ちょうどいい温度になったらすぐに消して省エネ対策にしたいので、意外とこのPCリモコン化は役に立っています。
特にパソコンのモニターとテレビのモニターを1つのディスプレイで実現させているので、すごく便利になりました。
関連ページ
最終更新日 2017-07-10 18:27
Sponsord Link
【 大和 】 2017/10/19 01:19
IRKitのIPアドレスが調べられません。
OSはWindows7なのですが、コマンドプロンプトで
dns-sd -B _irkit._tcpを入力しても反応がありません。
また、コマンドプロンプトのプロパティでは「従来のコンソールを使う」がなく、簡易編集モードと挿入モードしかチェックボックスがありません。
ちなみにiTunesはインストールしています。
Bonjourを単独でインストールもエラーが出て途方にくれています。
ご教示よろしくお願いします。
【 管理人 】 2017/10/19 09:58
>大和さん
えっと、コマンドプロンプトはWindows10から仕様が大幅に変更になったので、Windows10でないとプロパティのあの設定はできません。
IRKitのIPアドレスがわかればいいだけなので、ルーターの管理画面からIRKitのIPアドレスを探してみてください。
ルーターのメーカーによって違うのですが、「DHCPクライアント」とか「ネットワーク」とか書かれている部分に接続している機器のIPアドレスの一覧が乗っていると思います。
【 ハマー 】 2018/01/14 20:15
大変参考にさせていただいております。
赤外線コードを取得し、説明通りコマンドを打ち込みシーリングライトは操作できたのですが、その他の機器(テレビ、エアコン、その他)は赤外線コードを取得できるものの、同じようにJSONSIGNALを入れてSENDを押してもJASON signal is invaliedと表示され操作できません。
どうか対策を御教示下さい。よろしくお願いいたします。
【 管理人 】 2018/01/14 23:18
>ハマーさん
お役に立ててうれしいです。
詳細がわからないので、なんともアドバイスし難いのですが、(おそらくですが)入力部にシーリングライトのコードが残っていたり、他の機器のコードの一部が欠けている・・・ということはないでしょうか?
「signal is invalied」は「信号が無効です」という意味なので、調べたコードの一部がおかしいのではないかと思われます。
【 ハマー 】 2018/01/16 20:58
管理人様
丁寧に返信頂きありがとうございます。
入力欄を全て消去し、新たにシグナルの必要範囲を指定し、コピーし貼り付ける(シグナルの欠けは無いと思います)のですが、無効のエラーメッセージが出ます。その他の機器でシグナルを再取得し、試すのですが…シーリングライトだけ送信でき反応します。あと少しのとこまで来ているのでなんとかしたいです!気がつくような事があれば教えて下さい。シグナルを入力する下にpresets: aircon-on offの欄がありますが関係はあるのでしょうか?aircon-onにもoffにも選択すれば
シグナルの表示がされます。(以前貼り付けたと思われるもの)是非、シーリングライト以外もコントロールしたいです。よろしくお願い致します。
【 管理人 】 2018/01/16 22:53
>ハマーさん
うーん。私にもよくわからないです・・・。
私の場合、シーリングライト、エアコン、PCモニター、BDレコーダーなどなど全てうまくいきました。iPhoneを使って、複雑なコントロールもできました。。。残念ながらだいぶ昔に書いた記事(2015年10月)なので、設定に関しては記憶が曖昧です。
シグナルを貼り付けるページの左上に、作成者さんのプロフに飛べるので、ツイッターで伺ってみてはどうでしょう。
私もあと一息のところまで来ていると思います。
投稿日:2015-10-12 | | |