IRKitはよく「iOSから操作できる赤外線リモコン」と説明されるけど、そのAPIはHTTPなのでiOS以外からももちろん使えます。
というわけでRubyから使いやすいようにした。

ソースコードはgithubにある。不具合等はissuetwitterにお願いします。

irkitコマンドという便利ツールも入れておいた。
bonjourでLAN内のIRKitを発見する機能や、赤外線データのgetとpost(と保存)、家のLANの外からIRKitを操作するInternet API関連が実装されているので
プログラムを書かなくてもirkit gemをインストールすればすぐIRKitが使える。


なんでこういうツールが付いているかというと、デバイス系はコマンド一発で全部実行できるテストコードが書きにくい部分がかなりあって、しょうがないから各機能をテストしやすい実行可能コマンドを作るぐらいしかない。

IRKit


先週買った。うちのエアコンの赤外線はデータが長くて、既存の学習リモコンで学習できない事が多いんだけどIRKitだとokだった。
置き場所もカーテンレールの上に適当に置いてるだけなんだけど、エアコンの赤外線受光部は死角のはずなのに壁で反射してるのかちゃんと届いてる。よくできてると思う。


インストール

https://rubygems.org/gems/irkit
実行にはRuby2.0.0以上が必要。1.8.7は非サポート。(1.9.3でももしかしたら動くかもしれない)
% gem install irkit

なおubuntuやdebianでは事前にavahiをインストールしておく必要がある。これはLAN内のIRKitを見つけるのにbonjourを使っている為。
% sudo apt-get install libavahi-compat-libdnssd-dev

使い方


https://github.com/shokai/ruby-irkit#usageに書いた。サンプルコードもある。

BonjourでLAN内のIRKitを見つけて、赤外線が読み書きできる。
require 'irkit'

irkit = IRKit::Device.find.first
ir_data = irkit.get_messages

irkit.post_messages ir_data

また、Internet APIというプロキシを使うとLAN外からも操作できるんだけど、そのためのclientkeyやdeviceid等の発行もできる。

くわしくはgithubのREADMEとサンプルコード見てほしい。


irkitコマンド

gemをインストールすると実行可能コマンドも付いてくる。
普通のHTTP APIとInternet API両方とも使える。
コマンドからリモコン操作できるので、crontabで朝あらかじめ暖房をつけるとかできる。
エアコンのリモコン探すよりCUI使ったほうが速いので、shellの履歴から「暖房」で検索して「irkit -post 居間エアコンOFF」を探してenter押せば暖房が消せる。

% irkit --help
% irkit --get tv_on # tv_onという名前を付けて赤外線データを保存
% irkit --post tv_on # tv_onを赤外線発射
% irkit --list # デバイスやデータのリストを見る
% irkit --post tv_on --address 192.168.0.123 # IPアドレスを指定してtv_on赤外線発射
% irkit --device:add myhouse # myhouseという名前でInternet APIのclientkey等を保存
% irkit --device myhouse --post tv_on # 自宅のIRKitをLAN外からtv_on発射