IRKit

IRKit

遠隔操作できる家電リモコン。

お布団の中からリビングのエアコンを入れてみたり 外出先からエアコンを入れてみたり

・・・寒いので、エアコンネタばかり出てきてしまいましたが、、

前職の先輩のmashさんが、そういったことを手軽に行えるようにするデバイス「IRKit」をなんと作り上げてしまったので、お試し版をお借りしました。

まだお試し版ということで、専用アプリがリリースされていなかったりと通常より手順がむずいですが、正式リリース時にはすごく使いやすいデバイスになっていると思います。

たぶんWifiが入っている家なら、IRKitを電源に差し、専用アプリからIRKitにアクセスするだけで使えちゃえます。

ということで、設定して遊んでみました。

IRKitの初期設定

まずはIRKitをWifiに接続するためにアプリをインストールします。

先ほど、専用アプリがリリースされていないと書きましたが、githubにはソースコードがありますので、そちらをインストールして使います。

Minimalというプロジェクトが設定アプリ+αです。

ビルドにはCocoaPodで必要ライブラリをインストールする必要がありますが、正式版ではあまり関係のない話だと思いますので省略します。

アプリを起動して、画面の指示にしたがって設定するだけです。

と、言ってもたったの3STEPです。

  1. MicroUSBでIRKitを電源に接続
  2. アプリに接続する無線LANの情報を入力する
  3. モールス信号でIRKitに無線LANの設定情報を送る

モールス信号で無線の設定情報を送る

右はモールス信号を送っている所です。遊び心があってすごい好きです。

設定が完了すると、赤色だったSTATUSランプが青色になります。

IRKitでリモコンの信号を受信する

IRKitに向けてリモコンを押すだけです。

押すだけ

先ほどインストールしたMinimalというアプリはリモコンの信号を学習する機能がついていますので、そちらを使えば受信したデータを簡易的に管理することができます。

また、IRKit自身にHTTPサーバがあり、APIが動いていますので 直接APIを叩いて直近のリモコンのデータを取得したり、取得したリデータをIRKitから赤外線で送信させたりする事もできます。

IRKit公式サイトに書いてある情報のままですが、簡単にその方法を書きます

IRKitのAPIを叩いてリモコンデータを取得する

まずはIRKitのIPアドレスを取得します

$ dns-sd -B _irkit._tcp

このまま打てばok。

$ dns-sd -B _irkit._tcp
Browsing for _irkit._tcp
DATE: ---Sun 05 Jan 2014---
19:52:09.254  ...STARTING...
Timestamp     A/R Flags if Domain                    Service Type              Instance Name
19:52:09.911  Add     2  4 local.                    _irkit._tcp.              irkitd303

Instance Nameの所を見ます。私の環境だとirkitd303ですね。

で、

$ dns-sd -G v4 [Instance Name].local

です。

$ dns-sd -G v4 irkitd303.local
DATE: ---Sun 05 Jan 2014---
19:52:55.967  ...STARTING...
Timestamp     A/R Flags if Hostname                  Address                                      TTL
19:52:56.606  Add     2  4 irkitd303.local.          192.168.11.9                                 10

Addressが分かりました。

リモコンのデータを見る

IRKitが受信した直近のリモコンから送信された赤外線データを見るにはmessagesAPIをつかいます。

$ curl -i "http://192.168.11.9/messages"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/1.3.0.188.gbc9a662
Content-Type: text/plain

{"format":"raw","freq":38,"data":[4713,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,52381,4713,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150]}

JSONで直近のデータが返ってきました。Bodyが空だった場合、もう一度IRKitにリモコンを向けてボタンを押してください。 STATUSランプが点滅すればOKです。

ちなみのこのデータはテレビのボリュームアップ。

IRKitからデータを送信する

この受信データJSONをmessagesAPIにPOSTすることで、同じ信号をIRKitから送信することができます。

$ curl -i "http://192.168.11.9/messages" -d '{"format":"raw","freq":38,"data":[4713,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150]}'
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/1.3.0.188.gbc9a662
Content-Type: text/plain

IRKitのSTATUSランプが点灯し、テレビのボリュームが上がった。

楽しいw

まとめ

Curlから家電操作するの楽しぃぃぃ!

APIがシンプルですし、いろいろ組み合わせれば*ハイテクな家*が実現できそうです。

今はまだ準備中みたいですけど、そのうち外出先から自宅にあるIRKitへアクセスする手段も用意されるみたいです。

公式サイトのIRKit Server HTTP APIがそうかな。

もちろん今でも少し知識があれば外部からIRKitにアクセスすることは可能です。

外出先から寒ぅい部屋のエアコンをつけたり消したりできて大変捗りそうでwktkですね!

ちなみに僕はエアコンの電源をよく切り忘れて奥さんに怒られるので、「外出先からエアコンの電源を切れる」というだけで精神衛生上とても良い効果がありそう。


ちなみにIRKitは簡単に蓋が開けられて、中はArduinoなので私はここに温度センサをつけて、ハイテクアクアリウムを構築する予定です。

分解した