NatureRemoをスマホから自動的に操作する案を考えてみた

Narure Remoを外部から操作する方法について検討してみました

数日前にMakuake経由で活動レポートの更新が届いたが、iPhoneアプリの更新ばかりでAndroid版は未だに気温表示すら実装されない。IFTTTもまだテスト中のようだし、公開すると約束されていたapiに関しては予定すら公表されていないようだ。

正直IRKitの後継を望んでた人はapiすらあれば8割方満足する気がするが、開発者の方にも事情はあるだろう。正直、新規案件でうまく進まない中、周りから進捗を聞かれ続ける辛さも少しは共感できるので頑張ってほしい気持ちの方が強いくらいだ。

だが、それはそれとして僕はapiが自由に叩ける日を2016年8月からずっと待ってるし、外は暑い、疲れて帰っても部屋は暗くムシムシしているし、全然NatureRemoの恩恵を受けられていない。

正直今の機能だけではリモコンをスマホに集約するだけだし、ロック解除、ランチャー開く、アプリ選択、機器選択、ボタン選択とか操作数が多すぎて結局普通のリモコンの方が使い易い結果になってしまう。せめてショートカットさえ対応してくれれば少しは使う頻度が上がるかもしれないけど。

ただ、ショートカットやアプリの機能が充実したとして満足するかといったら嘘になる。僕がNatureRemoに求めていた機能はただの便利学習リモコンではないし、外出先から操作できるだけのリモコンでもない。

というわけでAndroidから(多分iPhoneからでも)様々なトリガーを起因として場所を問わずに家電を操作できる環境を考えてみる。

IRKit互換のapi残ってるんじゃないか案

クラウドファンディングで出資していたNature Remoが届きました!当初は12月お届け予定でしたが待つこと半年、突然Am...

前回の記事で、IRKitと互換性のあるapiがあることはわかっていたので、IRKitと同じ方法を試してみる。IRKitでは本体と用意されているサーバにapiを投げて登録ができるらしい。

$ curl -i "http://192.168.0.72/keys" -H "X-Requested-With: curl"
HTTP/1.0 404 Not Found
Server: Remo/1.0.39-g41c1188
Content-Type: text/plain

最初に本体のクライアントコードを取得するところから失敗してしまった。他のapiは通っているので、おそらくNatureRemoと通信するサーバとの登録方法は変更されたんだと思う。次案へ。

外部からローカルapiを直接叩く案

正直公式apiがダメな時点で半分諦めモードだけど意地で考える。要はNatureRemoにHTTP通信が届けばいいんだ。

外部用のapiを直接叩くんじゃなくて、ローカル用のapiを外出先から叩ければ動くはず。

こんな時はポートフォワーディングってのをするらしい、多分特定のポートに来た通信を特定のipアドレスとマッピングする機能。別名ポート開放。ネットゲームなんかしてた人は聞き覚えがあるかもしれない。

多分これで普通はうまくいくんだけど、我が家はマンションで既設されている無料のネットを使っている。これが大体全戸で「グローバルIPアドレス」を共有しているため、それぞれの部屋には「プライベートIPアドレス」しか割り振られていない。

具体的には家のルータでポートフォワーディングの設定をすればいいはずが、すでにもう一台マンション側でルータをかませているためそちらでもポートフォワーディング設定をしてもらわなければいけない。

ちなみにポートフォワーディングに関しての回線業者の対応は二つで、「対応なし」か「有償対応」かになるそう。僕の使っている業者は後者らしいが、これだけのためにお金を払うのもあれなので次案に進む。

 VPN通す案

VPN(Virtual Private Network)を使うと外からも個人のローカルネットワークに接続できるらしい。お金がかかる&難しそうなので次案へ。

アプリの通信を真似する案

アプリが外からでも通信できてるなら何か方法はあるはず案。パケットキャプチャアプリで通信を確認して、「Tasker」のHTTP POSTタスク通信をエミュレートする。

結果としてこれがうまくいった、書くのに疲れてきた&長くなるのでまた次回に分けて書く。

※2017/11/19 Nature Remo apiの叩き方公開しました
Nature RemoのapiをMac/Androidで叩く方法について説明します。Windows/iPhoneもやり方は同じなので参考にしてください。