jimaoka blog

ライトなインフラエンジニアです

IRKitで毎朝自動的に電気をつける

f:id:jimaoka:20150704140321j:plain IRKit - Open Source WiFi Connected Infrared Remote Controller
IRKitを購入したので、ちょっと利用してみます。
IRKitは基本的にHTTPリクエストを送ることで操作が可能です。

例: 最後に受信した赤外線信号を取得

% curl -i "http://192.168.x.x/messages"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.2.0.g424fa95
Content-Type: text/plain

{"format":"raw","freq":38,"data":[873,873,873,...]}

常にcurlコマンドで操作するのは難儀なので、ruby-irkitというRubyGemを利用して操作します。ありがたい。
GitHub - shokai/ruby-irkit: IRKit Client for Ruby

# bonjourを利用するため、avahiをインストール
% sudo apt-get install libavahi-compat-libdnssd-dev
 
# ruby-irkitのインストール
% gem install irkit
 
# LAN内のIRKitリストを取得
% irkit --list
~> /home/jimaoka/.irkit.json
== Data
== Devices
192.168.x.x irkit479e (bonjour)

今回は朝に電気を点けるために電灯をONにする信号を学習させます。

# IRKitに向けてリモコン信号を送信した後に実行する
% irkit --get roomlight_on
finding IRKit with bonjour...
using #<IRKit::Device @address="192.168.x.x" @bonjour_name="irkit479e">
{"format":"raw","freq":38,"data":[17421,8755,1190,...]}
"roomlight_on" saved!

# irkitコマンドのフルパスを確認
# rbenvを使用している為、ホーム以下にあります
% which irkit
/home/jimaoka/.rbenv/shims/irkit

# crontabをいじる(毎朝6時50分に電気を点ける)
% sudo vim /etc/crontab
50 6  * * * jimaoka /home/jimaoka/.rbenv/shims/irkit --post roomlight_on

一度これで試してみる。。が上手く動作しない。
失敗している場合はbonjourのサービス検索がタイムアウトになっているっぽいので、
5分毎にデバイス検索をしてbonjourのキャッシュを作っておく。

# crontabをいじる(5分毎にデバイス検索)
% sudo vim /etc/crontab
*/5 * * * * jimaoka /home/jimaoka/.rbenv/shims/irkit --list

これで上手く動いた!

【使用した感想】
テレビの電源ONも併用するとかなり起きれます。