夏休みに突入ということで、キャンプにも行くし、旅行にも行く機会が増えます。
家を開けることが多くなるので、何か防犯的な事を…と考えていたら、IRkitという家の中のリモコン機器をiphoneから操作できるというブツがあるとの事で、購入してみました。
これ使って、リビングの照明とか外出先から点けられれば、それなりの防犯にはなるのかなと。
まぁ、クソ暑い日とかの帰宅時にエアコンを点けておいて、帰ったら冷え冷えで天国ー、みたいな使い方がほとんどだと思うが。
で、ポチって届いたんだが、なんだこれ的なサイズ。
拍子抜けするくらいの大きさ。つか、関係ないんだけど「これでこの値段かぁ…」って思ってしまう、それくらいの大きさ。
開封すると、本体と紙っペラが2枚。形状はバブを連想。
もう一枚の紙には、本体のmacアドレスとwi-fiのパスワードが書いてあった。
で、電源はUSBなので、とりあえずパソコンに繋いでみる。
iphoneにインストールしたアプリからwi-fi接続して、とりあえずエアコンのONとか学習させてみると、簡単に操作が可能に。
ほほー、これは面白いなぁ。
テレビとか扇風機とか、とりあえず赤外線リモコンのある家電を登録。
何の問題もなく操作できるようになった。
で、肝心の照明だが、リビングの照明はリモコンが無いので、これで対応。
これもまた、サクッと登録完了して、リビングの照明がiphoneから操作可能となりました。
で、ここからが本番。
目的は「外出先から操作可能にする」ことなので、家のwi-fiに接続した状態で操作が可能になっても、あまり意味がありません。
試しに、iphone側を4Gにして、先ほどのアプリから操作しようとすると、
「認証エラーがおきました」
とか出てきて、案の定操作できません。
これは、同じネットワーク上にある状態でしか操作できないようです。
外出先から操作可能とするには、
IRKit Internet HTTP API
てのを使って、ゴニョゴニョしないとダメみたいです。
で早速やってみる。
基本的には、外部サーバ(IRkit社が用意してくれているサーバ)に自分のIRkitを登録して、そこ経由(外部サーバにPOST)する事で、自分のIRkitに赤外線出力の指示を行うって感じ。
まずは、IRkitのローカルIPを調べます。これ分からないとアクセスできないんで。
私の場合は、wi-fiルータ側の設定画面を見て分かりました。
で、ローカルのIPが分かったら、clienttokenというのを取得します。→POST/keys
IRkitのアクセストークンですかね。
で、トークンが取得できたら、外部サーバへ登録を行います。→POST/1/keys
ここで、deviceidとclientkeyが外部サーバから取得できます。
この2つのキーを外部サーバにPOSTする事によって、自分のIRkitとの紐付けを行う感じですね。
次に、外部サーバ経由で送信するJSON形式の赤外線情報を取得します。
先ほど、iphoneアプリの所で登録したような感じで、再度リモコンをIRkitへ向けて、操作したいリモコンのボタンをポチっと押すと、LEDが点滅してIRkitが一時的に記憶してくれます。
そこで、PC側からIRkitに登録されたJSONコードを取得する感じ。→GET/messages
複雑で長いコードだと、IRkit側から接続が切られてしまう事があるので、その場合は諦めずに何度も行ってみる。
ここで取得したJSONコードを、先ほど取得したdeviceid、clientkeyと共に、外部サーバへPOSTで送ってやると、目出度く外出先から操作できるようになるという事みたいです。
で、早速やってみます。→POST/1/messages
今更だが、https://api.getirkit.comこれが外部サーバのURLですね。
あと、-iとかは、ヘッダの出力なので特に付ける必要もありません。
あとあと、windowsのコマンドプロンプトでは、そもそもcurlが無いのかも知れないのでmacかlinuxマシンが無いと無理かもですね。
で、コマンド書いてパソコンのenterで実行すると、部屋の照明が点いたり消えたりする。これは面白いw
で、こいつをiphoneから操作するためには、適当な自分のサーバにhtml(php)のページでも置いて、アクセスするようになりますね。
適当にPOSTするページを書いて、そのページをiphoneからブラウザで開いてボタン押下で送信すると、おお!リビングの照明が点いたり消えたりです!w
<form action="https://api.getirkit.com/1/messages" method ="POST"> <input type="hidden" name="clientkey" value="<?php echo $clientkey;?>"> <input type="hidden" name="deviceid" value="<?php echo $deviceid;?>"> <input type="hidden" name="message" value='{"format":"raw","freq":38,"data":[5049,5049,1679,1679,1679,1679,1679,1679,1679,3704,1679,3704,1679,3704,1679,3704,1679,1679,1679,65535,0,42612,5049,5049,1679,1679,1679,1679,1679,1679,1679,3704,1679,3704,1679,3704,1679,3704,1679,1679,1679,65535,0,42612,5049,5049,1679,1679,1679,1679,1679,1679,1679,3704,1679,3704,1679,3704,1679,3704,1679,1679,1679,65535,0,42612,5049,5049,1679,1679,1679,1679,1679,1679,1679,3704,1679,3704,1679,3704,1679,3704,1679,1679,1679]}'> <input type="submit" value="照明ON"> </form>
こんな感じ。
問題は、このIRkitをどうやって設置するかだなぁ。