IRKitを使用してターミナルから部屋の家電を操作

Irkit mac terminal control 00

以前ブログで紹介したIRKit。今回はHTTPを使ってMacのターミナルからアクセスしてみます。
コマンドラインから、任意の赤外線を発射させたりIRKitが認識した赤外線をJSONで取得することも可能になります。

[前回の記事]iPhoneから操作できるWiFi搭載赤外線リモコン「IRKit」を使ってみた。

スポンサードリンク

既にセットアップは済んでいるとし、当方の環境はMac OS X 10.9です。
それでは、公式ドキュメントhttp://getirkit.comを参考にたらたらと書いていきます。


※以降は全て同じWi-Fi環境下で実行

IRKitのIPアドレスを調べる

Irkit mac terminal control 01

IRKitへアクセスするには割り当てられたIPアドレスを調べる必要があります。
Bonjourを使ってデバイスを探します。

$より右側をターミナル.appの画面に入力しエンター。

$ dns-sd -B _irkit._tcp
そしてこんな結果が出てきます↓
Browsing for _irkit._tcp
DATE: ---Fri 04 Apr 2014---
22:15:41.265  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
22:16:00.942  Add        2  10 local.               _irkit._tcp.         IRKit****

「…STARTING…」から何も出てこない!という場合は、この画面のまま一度IRKitの電源を切って再度接続してみてください。(マルチキャストの間隔が長くて?自分はそうしないと出てこない)

デバイスが出てきたらControl + Cでプロセスを中断します。

Instance Nameが分かったのでIPアドレスを調べます。
ここでは「IRKit****」としますが、出てきた値を入れて下さい。

$ dns-sd -G v4 IRKit****.local
結果がこんな感じ
DATE: ---Fri 04 Apr 2014---
23:17:23.451  ...STARTING...
Timestamp     A/R Flags if Hostname                               Address                                      TTL
23:17:38.464  Add     2 10 IRKit****.local.                       192.168.2.9                                  10

同じく「…STARTING…」から進まない場合は、IRKitを再起動。
デバイスが検出されたらControl + Cで終了。

IPアドレスが「192.168.2.9」と判明したので、これでIRKit Device HTTP APIにアクセスできるようになりました!

赤外線信号を取得、発信

Irkit mac terminal control 02

赤外線信号を取得

IRKit本体に向けてリモコンを押して認識させておきましょう。
水色のLEDが点滅したら信号を受信した合図です。

そして以下のコマンドを入力

curl -i "http://192.168.2.9/messages"
数字の部分は先ほど取得したIPアドレスを入れます。
すると結果が
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":[1275,3704,1275,3704,...省略]}

formatの部分が、直前に認識した赤外線信号のデータになります。
公式ドキュメントによると、一度データをGETすると端末からデータが削除され、もう一度信号を受信するまでは値が返らない仕様のようです。

ちなみに-iを抜くとJSONデータだけが返ってきます。

赤外線信号を発信

先ほどGETしたリモコンの赤外線信号を、今度はIRKitから発信してみます。

curl "http://192.168.2.9/messages" -d '{"format":"raw","freq":3704,1275,37...省略]}'

-dの引数にはGETでずらずらと出てきたJSONデータをコピペ。
これでIRKitは先ほど認識した赤外線信号と同じ信号を発射します。

エアコンなりテレビなりが反応して、ひとりでに動き出しました・・・
コマンドラインで家電を動かすのは、なかなか新鮮な感覚(笑)

まとめ

要は、IPアドレスさえ分かっちゃえば後はHTTPでアクセス可能ということ。
かなりシンプルですし、なんにでも応用できそうですね!

適当に「irkit」というコマンドを作って遊んでみたのが以下の動画。


他にもRubyのgemで作った方がおられます。
[参考]赤外線学習リモコンIRKitのrubygemを作った

僕は動かして遊ぶだけなんで、誰か作ってくれないかなぁ〜と他力本願。
暇があったら今度は、IRKit Internet HTTP APIを使ってLAN外から操作してみようと思います。

[前回の記事]iPhoneから操作できるWiFi搭載赤外線リモコン「IRKit」を使ってみた。

No Responses