IRKit
遠隔操作できる家電リモコン。
お布団の中からリビングのエアコンを入れてみたり 外出先からエアコンを入れてみたり
・・・寒いので、エアコンネタばかり出てきてしまいましたが、、
前職の先輩のmashさんが、そういったことを手軽に行えるようにするデバイス「IRKit」をなんと作り上げてしまったので、お試し版をお借りしました。
まだお試し版ということで、専用アプリがリリースされていなかったりと通常より手順がむずいですが、正式リリース時にはすごく使いやすいデバイスになっていると思います。
たぶんWifiが入っている家なら、IRKitを電源に差し、専用アプリからIRKitにアクセスするだけで使えちゃえます。
ということで、設定して遊んでみました。
IRKitの初期設定
まずはIRKitをWifiに接続するためにアプリをインストールします。
先ほど、専用アプリがリリースされていないと書きましたが、githubにはソースコードがありますので、そちらをインストールして使います。
Minimal
というプロジェクトが設定アプリ+αです。
ビルドにはCocoaPodで必要ライブラリをインストールする必要がありますが、正式版ではあまり関係のない話だと思いますので省略します。
アプリを起動して、画面の指示にしたがって設定するだけです。
と、言ってもたったの3STEPです。
- MicroUSBでIRKitを電源に接続
- アプリに接続する無線LANの情報を入力する
- モールス信号で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が受信した直近のリモコンから送信された赤外線データを見るにはmessages
APIをつかいます。
$ 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をmessages
APIに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なので私はここに温度センサをつけて、ハイテクアクアリウムを構築する予定です。