音声で家のテレビやオーディオを操作したいと妻からの要望があったので作る。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 |