外から家のエアコンをつけたいので『IRKit』とAndroidでがんばってみた

新年あけましていきなり関東でも雪が降ったし! 1月になったとたん急に寒すぎるよ。これだけ寒いと何があれかって、帰宅時に部屋が寒いのが最高にあれですよね。……外より寒いんだよ、部屋が!
そんなわけで、どーにかならないかなと活用し始めたのが『IRKit』というアイテム。以前、本誌で紹介したような気もしますがそれはさておき。
あ、忘れてた、明けましておめでとうございます。

blog20150106_ph01
▲『IRKit』本体。Amazon.co.jpで7700円です。後ろにぴろーんと伸びているのは電源ケーブルで、端子はスマホなどと同じmicroBタイプ。

まずは『IRKit』について軽く説明をば。
『IRKit』は簡単に言うと“Wi-Fi搭載の学習リモコン”。赤外線リモコンで操れる家電(エアコン、照明、テレビなど)をスマホやタブレットで操作できるようにする機器です。『IRKit』をルータに接続しておけば、外出先からも利用できちゃいます。詳しい使い方とかセットアップ方法とかは公式サイト(http://getirkit.com)を読んでみてください。

blog20150106_ph02
▲手の平サイズなのもポイントで、LEDの横にあるのが赤外線の照射部分。

この『IRKit』には、公式アプリが用意されているほか、独自アプリも多数公開されていて、中にはGPSと連動して特定の場所に着いたらエアコンをオンにしたり、玄関から出たら照明オフにしたりできるものもあります。何だか便利そうですよねー。……でもこれ全部iOSの話な!

Androidはアプリも数が少なく、機能も乏しい感じ。でも僕はAndroidで使いたい! 試行錯誤して行き着いたのが『Tasker』というアプリを使う方法。『IRKit』がJavascriptに対応しているため、『Tasker』で『IRKit』用のJavascriptを動作させるというわけです。

『Tasker』は「○○という条件になったら××する」というように、あらゆることを自動化することができるアプリ。GPSとも連携してくれるので、例えば「自宅の近くに来たらエアコンをオンにする」といったことも可能です。399円の有料アプリですが、かなり便利ないわゆる神アプリなのでおすすめです。

さて肝心の『Tasker』で『IRKit』を操作する方法ですが、結構めんどくさいので覚悟してください。

■STEP 1
『IRKit』をルータに接続。

ひとまずiOS機器を使うのが簡単ですが、手元にiOS機器がない場合は「IRKit-js」(http://irkitjs.herokuapp.com)というウェブサービスを利用するのが良いかも。

■STEP2
『IRKit』の「IPアドレス」を調べる。

ここからはPCを使います。コマンドプロンプトやターミナルからBonjourを使って、以下のコマンドで『IRKit』を探します。(Windowsの場合はBonjourのインストールが必須、同一ネットワーク内で作業する必要あり)

$ dns-sd -B _irkit._tcp

コマンドを入力した結果の中に「RKit****」(*は固有記号)という表示があるので、それを使って以下のコマンドを入力する。

$ dns-sd -G v4 IRKit****.local

すると「IPアドレス」が表示されるので、メモしておきましょう。

■STEP3
「deviceid」と「clientkey」を取得する。

まずは先程の「IPアドレス」を使い、以下のコマンドを入力して「clienttoken」を確認する。

$ curl 「IPアドレス」/keys

表示された「clienttoken」を使い以下のコマンドを入力する。

$ curl “https://api.getirkit.com/1/keys” -d “「clienttoken」”

表示された表示された「deviceid」と「clientkey」をメモしておく。

■STEP4
登録するリモコンの信号を取得する

登録したいリモコンを『IRKit』に向けて、登録したい信号を送る。(例えばエアコンのオンボタンを登録したい場合は、エアコンのオンボタンを押す)LEDが青く点滅したら信号を受信した合図です。それを確認した後、以下のコマンドを入力。

$ curl -i “http://「IPアドレス」/messages”

するとこんな感じのメッセージが表示されます。

HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.0.0.0.g992a4a5
Content-Type: text/plain

{“format”:”raw”,”freq”:38,”data”:[6881,3458,843,843,………………省略]}

このメッセージの”data”の部分が赤外線信号になります。(6881,3458,843,843,………………の部分。省略していますが、実際はかなり長いはず。[ ]の中の数字全てが信号です。)

blog20150106_ph03
▲こんな感じで登録したい赤外線信号を読み込ませます。

■STEP5
赤外線信号送信用のJavascriptを作成する。

以下のような感じで、送信用のJavascriptを作成する。

var id = “「deviceid」を入力”;
var key = “「clientkey」を入力”;
var msg = {“format”:”raw”,”freq”:38,”data”:[赤外線信号を入力]};

function send(message){
var xhr = new XMLHttpRequest();
xhr.open(“post”, “https://api.getirkit.com/1/messages”, false);
var form = new FormData();
form.append(“deviceid”, id);
form.append(“clientkey”, key);
form.append(“message”, JSON.stringify(message));
xhr.send(form);
}

function main(){
send(msg);
}

try{
main();
}
catch(e){
flash(e.message);
}
exit();

■STEP6
『Tasker』に送信用のJavascriptを登録する。

先程作成した送信用のJavascriptを『Tasker』に登録すれば、ひとまずおしまい。
上記の手順を繰り返して、各種信号を登録していこう。あとは位置情報との連動など細かい設定をすればOK。

blog20150106_ph04 blog20150106_ph05
▲『Tasker』に登録してみたところ。「Code」のところに記載しましょう。

最初はちょっと面倒ですが、やり方さえ分かれば簡単です。
Androidユーザーで『IRKit』の導入を躊躇していたという方、ぜひお試しあれー。