音声で家のテレビやオーディオを操作したいと妻からの要望があったので作る。100%仕様を満たす物は1日以上かかりそうなので、まずはiPhoneからタップでそれぞれ操作できるようにした。
完成図
学習リモコンの選定
まずは学習リモコンの選定。PlutoかIRKitかどちらにしようか悩んだが、LANケーブルを引き回すのが困難なのでIRKitに決定。amazonで7,700JPY也。同時に無線LANを安定化させるために古い機器を引退させて、新たにAtermの無線LANルーターを導入した。IRKitの設置
設置に必要な物はMicroUSBの電源供給のみ。適当な場所に設置してまずは自宅の家電が操作できるか試す。ここではApp Storeから入手したIRKit シンプルリモコンを使った。IRKitのwifiへの参加もやってくれて便利。
IRKitの赤外線は割と貧弱で、家具の配置や日光の影響を受けてしまう。設置場所は微調整を繰り返した。
IRKitの赤外線は割と貧弱で、家具の配置や日光の影響を受けてしまう。設置場所は微調整を繰り返した。
HTTP APIのテスト
ここでは家にいる時に操作するユースケースのみを想定して、IRKit Device HTTP APIを使う。IPアドレス直指定で叩くため、ルーターの設定でIRKitのmacアドレスについて固定IPアドレスを割当するようにしておく。
% dns-sd -B _irkit._tcp Browsing for _irkit._tcp DATE: ---Sat 25 Oct 2014--- 23:14:31.983 ...STARTING... Timestamp A/R Flags if Domain Service Type Instance Name 23:14:32.183 Add 2 4 local. _irkit._tcp. iRKitXXXXX % dns-sd -G v4 irkitXXXXX.local DATE: ---Sat 25 Oct 2014--- 23:15:35.078 ...STARTING... Timestamp A/R Flags if Hostname Address TTL 23:15:35.239 Add 2 4 irkitXXXXX.local. 192.168.10.4 10 # IRKItに向けて保存したいリモコンのボタンを押してから % curl -i "http://192.168.10.4/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":[5408,4107,640,4107,640,1738,663,1738,663,1738,663,4107,663,1738,640,1738,640,4107,663,1738,663,4107,710,1679,686,1679,686,1679,686,1679,686,50610,640,4107,640,4107,640,4107,640,1738,640,1738,640,1738,640,4107,663,1738,640,1738,640,4107,686,1738,640,4107,663,1738,640,1738,640,1738,640,1738,640,50610,640,4107,640,4107,640,4107,640,1679,640,1679,640,1679,640,4107,619,1738,640,1738,640,4107,640,1738,640,4107,640,1738,640,1738,640,1738,640,1738,640]}% # 上で得られたIRデータをPOSTで投げて、リモコンと同じ動作になるかテスト % curl -i "http://192.168.x.x/messages" -d '{"format":"raw","freq":38,"data":[686,41 ….' HTTP/1.0 200 OK Access-Control-Allow-Origin: * Server: IRKit/2.1.2.0.g424fa95 Content-Type: text/plain
このあたりの手順は公式サイトに詳しくのっている。あとはここで得られたIRデータをIRKitに投げる画面を書けば良い。
UIを書く
IRKitのHTTP APIは Access-Control-Allow-Origin: * ヘッダを返してくるので、ブラウザのXMLHttpRequestで叩いてもレスポンスが確認できる。なのでHTMLとJavaScriptだけで完結する。コードはgithubにアップしました。
hagino3000/my-home-remote-controller
https://github.com/hagino3000/my-home-remote-controller
https://github.com/hagino3000/my-home-remote-controller
iPhoneのSafariで「ホームに追加」をしておくとSafariのタブの一つでは無く、個別アプリとして扱われるので便利。
音声認識の実装はどうしようかと悩みつつ今日はここまで。
IRKit - iPhone,iPadを使って外出先からエアコン等の家電を操作できる学習リモコン maaash.jp 売り上げランキング : 2255 Amazonで詳しく見る by AZlink |