2016年1月29日金曜日

IRKit+Tasker+Pebbleでスマート家電(1)

いつもベッドに入ってから、「あ、電気つけっぱだ」「暖房切ってない」とかやらかします。
今のような寒い時期や、すっごい眠いときにはこれが辛い。

そこで昔買った iPhoneを学習リモコンにする『L5 remote』を引っ張り出したのですが、
設定したものが全部ふっとんでる。やむなく設定しなおしたのですが、以下のような問題が。
 ・新しく買った加湿器に使うと、ON/OFFを際限なく繰り返すw
 ・そもそも冷暖房には使えてなかった(エアコンは学習する赤外線信号が複雑)
 ・PS3を赤外線操作できる周辺機器も買ってたのだが、設定が復活できない

最後のは『L5 remote』にあったクラウドがサービス終了してたため、
自分が持ってないリモコン設定を持ってことができなくなってしまったためです。
PS3を赤外線操作できるリモコンはほとんどありません(公式リモコンは Bluetooth)。
だが赤外線ならリモコンの一本化が狙えるので復活したい。

そこで一念発起して、スマート家電化を目指そうと考えました。
どうせならリモコンやスマホではなく、スマートウォッチ Pebbleから操作したい。
睡眠管理のために寝る時もつけてますからね。

で、買ったのが『IRKit』。WiFi経由で指示を出すと赤外線を出します。
この手の製品にしては手頃な値段で、やれることも多く、一方で設定はちょっと難しい。


ネット記事を参考に試行錯誤した顛末が誰かの参考になるかもしれないので残しておきます。
比較的古めの記事が多くてひっかかったというのもあったので。
あと Taskerや Pebbleでここまでやったという記事も見かけなかったので。

● IRKit初期設定編(iPhone)


iPhone だと公式のリモコンアプリも出ていて、普通に使う分には実は超簡単です。
まずアプリを使って初期設定と簡単なリモコン登録をしてみました。



ここは簡単に流してしまいますが、アプリの指示に従って
 家のWiFi情報入力>IRKitに接続>同梱のパスワードを入力>家のWiFiに接続
これで初期設定完了です。次にリモコンに天井のライトを登録してみます。
 追加ボタン>アプリの指示が出るので、ライトのリモコンをIRKitに向けて押す


で、作ったライト用のボタンを押すと、
 iPhoneアプリ>WiFiでIRKit>赤外線でシーリングライト
と指示が飛んで、電気がつきます。

● IRKit初期設定編(Android/Windows)


私は今は Androidをメインに使っているのと、やりたいのが Pebbleからの操作なので、
次はPCで少し難しめのことをします。といってもちょっと PC慣れた人なら大丈夫。

さて。ここで知りたいい情報は以下の2つ。信号送信スクリプトを書くために必要です。
・IRKitの DeviceID
・IRKitの ClientKey

まずIRKitのIPアドレスを確認します。
ルーター設定眺めたり、コマンド送ったりしたけど、以下が一番楽でした。


【追記】 アプリ紹介がうまく動いてないようなので。
     Fing - Network Tools というアプリです。

教えてくれたのはオフブレさんのブログ「87miles.net」。

次に DeviceIDと ClientKeyを知るために、IRKitから ClientTokenを貰います。
コマンドプロンプトから cURL というコマンドを使います。

まずこのサイトから cURL プログラムをダウンロード、解凍し、C:\Windows の下に置きます。
私のマシンは 64bitなので、"Win64 ia64 zip"(SSLの方)ってのを落としてきました。

このあたりの流れは以下のサイトを参考にさせてもらいました。
パソコンで家電をリモコン操作する IRKit

で、コマンドを打ってみるも、返ってきた答えが「404 Not Found」。
あれれーと30分ほどネットの海をさまよい、答えは公式サイトと製作者ブログにありました。

maaash.jp - IRKitの脆弱性とファームウェアアップデートのお願い
IRKit

% curl -i "http://(Fingで調べたIRKitのIP)/keys" -d '' -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.3.13.gbe33d36
Content-Type: text/plain

{"clienttoken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

最新ファームではヘッダ(-H から後)を付けないといけないのです。
これが参考にした幾つかのブログでは書かれてなくて引っかかった。

で、得られた ClientTokenを使って、DeviceIDと ClientKeyをゲットします。

% curl -i -d "clienttoken=XXXXXXXXXXXXXXXXXXXXX" "https://api.getirkit.com/1/keys"
HTTP/1.1 200 OK
Server: ngx_openresty
Date: Tue, 07 Jan 2014 08:46:06 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 94
Connection: keep-alive
X-Content-Type-Options: nosniff

{"deviceid":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","clientkey":"XXXXXXXXXXXXXXXXXXXXXXX"}

ここまでで下準備は完了です。
長くなりそうなので、続きは次の記事で。

0 件のコメント:

コメントを投稿

Evernote

Clip to Evernote