Nature Remo Local API でローカルからリモコン信号を送る
Nature Remo には、ローカル用の API が用意されています。
サーバ障害時やインターネット接続障害時でも、Local API 経由であれば利用可能です。
※以前の記事で触れた Cloud API とは別物
Nature Remo Local API
公式サイトの Swagger に詳細が記載されています。
https://local-swagger.nature.global/
Remo で登録済みのリモコン信号はサーバ側に保存されているらしく、今回使用するローカルから呼び出すことはできません。個別に赤外線信号を指定する必要があります。
IP アドレスを調べる
Remo の持つ IP が分かっていればスキップ可能。(ルータの管理画面で調べるのが楽)
まずはじめに、Remo が利用しているホスト名を確認。dns-sd -B _remo._tcp
で検索できます。
$ dns-sd -B _remo._tcp
Browsing for _remo._tcp
DATE: ---Thu 26 Nov 2020---
22:53:10.166 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
22:53:10.388 Add 2 4 local. _remo._tcp. Remo-1ABCDE
見つかった Instance Name 末尾に .local
を付加すれば呼び出しできます。
IP アドレスまで調べたい場合は dns-sd -G v4 Remo-1ABCDE.local
でも取得可能。
$ dns-sd -G v4 Remo-1ABCDE.local
DATE: ---Thu 26 Nov 2020---
22:56:47.590 ...STARTING...
Timestamp A/R Flags if Hostname Address TTL
22:56:47.591 Add 40000002 4 Remo-1ABCDE.local. 10.0.0.99 120
赤外線信号の受信
送信したいリモコン信号を JSON 形式で取得します。
あらかじめ、Remo に向けてリモコンの赤外線信号を送っておきましょう。(青く光れば OK)
その後 http://<Remo IP>/messages
エンドポイントを叩けば JSON が返ってきます。X-Requested-With
ヘッダがないと怒られるので適当に付けます。
$ curl http://10.0.0.99/messages -H "X-Requested-With: local"
{"format":"us","freq":37,"data":[3429,1784,384,482,381,480,386,1347,386,1349,384,479,386,1348,386,481,384,477,387,479,380,1354,388,482,379,477,388,1348,388,478,386,1347,384,480,388,1344,386,480,376,489,384,1348,383,480,385,483,381,478,388,477,386,1345,388,477,389,1347,383,1350,384,475,389,1348,385,479,385,477,388,479,385,479,387,1347,384,480,388,472,389,1347,388,472,394,472,389,65535,0,9093,3428,1775,390,474,390,475,390,1342,390,1341,394,471,412,1319,393,473,418,450,388,475,389,1342,391,479,379,479,411,1320,396,470,412,1321,391,472,412,1322,412,453,381,484,411,1320,411,458,410,448,414,453,408,456,410,1322,415,452,417,1312,413,1322,408,458,410,1323,410,454,411,457,407,459,409,450,413,1322,410,457,387,474,411,1324,408,457,409,457,412]}
赤外線信号の送信
使用したいリモコン信号を JSON 形式で POST するだけです。
先ほど取得した文字列をそのまま送ってみます。
$ curl -XPOST http://10.0.0.99/messages -H "X-Requested-With: local" -d '{"format":"us","freq":37,"data":[3429,……]}'
{}
成功すれば Remo から信号が送信され、レスポンスとして {}
が返ってきます。
JSON さえ把握しておけば POST だけでリモコン送信可能です。
使いやすくしてみる
JSON を記録しておいて毎回 POST するのも大変なので少し工夫してみましょう。
ちょっとしたリクエストを投げたいときには iPhone のショートカット機能が結構便利です。
- テキストモジュールに JSON をセット
- URL モジュールにエンドポイントをセット
- リクエストモジュールで POST を送信
の3ステップだけで実現できます。
作成後はホーム画面やウィジェットに配置すればワンタップで実行可能。
iOS の機能でスケジュール実行やトリガー実行もできるので使い勝手も悪くありません。
サンプルとして実際に作成したショートカットを置いておきます。
https://www.icloud.com/shortcuts/70d21ce1d7d949b39cf8836a8538effd
HTTP リクエストを投げているだけなので、Android でも同様のアプリケーションを使えば割と簡単に実現できるはず。
どのシーンで活躍するか
先日のようにクラウド側で障害が発生したときや、オフラインで使う場合なども Local API が活躍しそうです。
Nature Remoのクラウドシステムが障害により不安定になっています。それによりNature Remoがお使いいただけない状況が発生しています。
現在原因調査中です。ご迷惑をおかけして申し訳ありません。— Nature株式会社 (@NatureRemo_JP) November 25, 2020
ディスカッション
コメント一覧
まだ、コメントがありません
フォローする
カテゴリー
最近の投稿
ブログについて