ページ

ラベル IRKit の投稿を表示しています。 すべての投稿を表示
ラベル IRKit の投稿を表示しています。 すべての投稿を表示

2015年12月17日木曜日

IRKitで遊ぶ1

前回ちょこっと触れてみましたが、 今回からじっくり遊んでみたいと思います。

   IPアドレス検索


公式ページを参考にBonjourを使ってIRKitのIPアドレスを検索してみます。
$ dns-sd -B _irkit._tcp
DATE: ---Sun 13 Dec 2015---
13:34:59.796  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
13:35:00.955  Add        2   4 local.               _irkit._tcp.         IRKitXXXX
名前(IRKitXXXX)がわかった所で、そのIPアドレスを取得します。
$ dns-sd -G v4 IRKitXXXX.local
DATE: ---Sun 13 Dec 2015---
14:35:05.507  ...STARTING...
Timestamp     A/R Flags if Hostname                               Address                                      14:35:06.874  Add     2  4 irkitxxxx.local.                       192.168.XXX.XXX

   信号の取得


公式ページの通りにcurlを使って最新の赤外線信号を取得。
$ curl -i "http://192.168.XXX.XXX/messages" -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/X.X.X.X.XXXXXXXX
Content-Type: text/plain

{"format":"raw","freq":38,"data":[4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150]}
ちなみに↑は我が家のテレビの電源ボタン押下時の赤外線信号ですw。
リモコンの赤外線信号はNEC/家製協/SONYフォーマットの3種類あるみたいです。
我が家のテレビはSONYなので、SONYフォーマット?

次は逆にIRKitに↑の赤外線信号を送信してみます。
$curl -i "http://192.168.XXX.XXX/messages" -H "X-Requested-With: curl" -d '{"format":"raw","freq":38,"data":[4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,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/X.X.X.X.XXXXXXXX
Content-Type: text/plain
いや〜、ターミナルから家電の操作ができるって不思議な感じがします^^;

   一連の動作をスクリプト化


通常リモコン使う場合は、一連の動作をする場合があるかと思います。
例えば、「テレビの電源付ける」→「番組表を開く」
などなど。
この一連の動作をスクリプトで書いて一気に実行してみたいと思います。
スクリプトは分かりやすいrubyを使って書いていこうと思います。
  • Http Client
net/httpを使わず、扱いやすいREST Clientを使う。
早速gemをインストール
$ bundle init
$ vi Gemfile # gem "rest-client" を追加
$ bundle install --path vendor/bundle
以下のようなmain.rbを作成(送信データに関しては環境に合わせて修正)
#!/usr/bin/env ruby
require 'rest-client'

data1 = [4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,50610,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150]

data2 = [4713,1319,2288,1275,2288,1275,1150,1275,2288,1190,2288,1190,1190,1190,2288,1190,1073,1190,1073,1190,2211,1275,1150,1150,1150,1275,2288,1275,1150,1150,2288,38433,4713,1275,2288,1275,2288,1275,1073,1275,2288,1275,2288,1275,1037,1319,2288,1275,1111,1111,1111,1111,2288,1275,1111,1275,1275,1275,2288,1190,1190,1190,2288,38433,4713,1190,2288,1190,2288,1190,1190,1190,2288,1190,2288,1190,1190,1190,2288,1190,1190,1190,1190,1190,2288,1190,1190,1190,1190,1190,2288,1190,1190,1190,2288]

# POST request with modified headers
RestClient.post 'http://192.168.0.21/messages', {'format' => 'raw', 'freq' => '38', 'data' => data1}.to_json, {'X-Requested-With' => 'ruby'}

sleep(10) # 我が家のテレビの反応が悪いので10秒待ってますorz

RestClient.post 'http://192.168.0.21/messages', {'format' => 'raw', 'freq' => '38', 'data' => data2}.to_json, {'X-Requested-With' => 'ruby'}
実行してみます
$ bundle exec ruby main.rb
我が家の環境では実行して、テレビの電源が付いて番組表が表示されました^^。

2015年12月12日土曜日

IRKit 購入


以前からIRKit面白そうだな〜と思ってたんですが、
rebuild.fmで紹介されていた事もあり、勢いに任せてポチりました^^;

購入して2日で到着しました。



中身は本体と簡単な説明書とMacアドレスWi-Fiパスワードが載った紙が入っていました。


早速アプリをダウンロードしてリモコンを学習させてみます♪。


IRKitシンプルリモコン
カテゴリ: ユーティリティ, 仕事効率化





アプリを起動すると早速電源〜とあるので、MicroUSBをIRKitに接続し、
セットアップを行います。

家のWi-Fi環境を設定してやるんですが、IRKitは
802.11b/g/n にしか対応してないので、802.11a(5GHz)を設定すると使えません。
自分もいつもの癖で802.11a(5GHz)を設定してました(笑)




セットアップが完了すると、以下のように青く光ります。


試しにテレビの電源入り切りを学習させてみます。


画面に従ってIRKitに向けてテレビの電源ボタンを押します。
成功するとボタンが追加されます。


ボタンを押してみると・・・おおおっテレビが付く!!(当たり前^^;)
これは楽しいw

他にもIRKit iOS-SDKを使ってのiOSアプリの作成や、
IRKit自体にHTTPサーバがあるので、色んな事が出来そうですw。
しかもIRKitはArduinoIDEで使ってプログラムの書き込みができるという事で
これから色々触っていきたいと思います。