こんにちは。
Nature社サーバへの依存度を下げるために、公開されているLocal APIを利用して家電操作を自宅ネットワーク内で完結することにしました。
結論から言うと上手くいかず凍結しています。
結論から言うと上手くいかず凍結しています。
セットアップ
Local APIの具体的な利用についてはもうたくさんの情報がネット上にあるので割愛します。
ざっくり書いておくと以下の段取りとなります。
ざっくり書いておくと以下の段取りとなります。
- Nature Remo本体のホスト名とIPアドレスを調べる。
- 実行したい家電操作に対応したIRシグナル情報を取得する。
- IRシグナル情報をHTTPリクエストする。
我が家での問題
セットアップに従って上手く行くには行くのです。
しかし、数時間のインターバルを空けて実行すると、最初の1発目が100%失敗します。
Nature Remo本体からは何のレスポンスもなく原因の特定に至っていません。
失敗の5秒後以降はまた問題なく成功します。
しかし、数時間のインターバルを空けて実行すると、最初の1発目が100%失敗します。
Nature Remo本体からは何のレスポンスもなく原因の特定に至っていません。
失敗の5秒後以降はまた問題なく成功します。
自宅ネットワークの問題?
問題の切り分けが出来ていません。
Nature社もAPI利用の問い合わせには消極的な態度です。
Nature社もAPI利用の問い合わせには消極的な態度です。
ネット上には同様の例が上がっていないので、もしかしたら我が家のネットワーク固有の問題でインターバル明け1発目のルーティングが失敗している可能性もあります。
自宅ネットワーク内のパケット監視などしてみるとボトルネックがハッキリするかもしれませんが、そこまでやる気もないです。
自宅ネットワーク内のパケット監視などしてみるとボトルネックがハッキリするかもしれませんが、そこまでやる気もないです。
追記
パケット監視まではしていませんが、様々なパターンで検証してみました。
結果として私はNature Remo本体の問題と結論づけています。
指定したタイムアウト期限までにクライアントに応答できないことが多く家電操作も実行されず、受信後の処理がスタックしてしまってる印象を受けます。
またHTTPレスポンスステータスコード200(=成功)を返してくるもののやはり家電操作が行われなかったりといったことがありました。
いずれも数時間のインターバルを空けた最初のリクエストです。その数秒後からは正常に動作します。
久しぶりのリクエストを受けるとコンディションを整えきれずに失敗するようです。
暖機が必要になる冬の自動車みたいな感じ。
私はHTTPプロトコルについては全くの素人です。
クライアント側はこうしたことを想定して実装するのが常識なのでしょうか?
例えば、まずはサーバにお伺いを立ててから正式にリクエストする所謂コネクション型でリクエストすべき等。
ただしNature RemoのLocal API仕様にはその点には触れていません。
もしかしたらNature Remo本体はNature社サーバと常にコネクションを維持しており、LocalAPIに対しコネクションレスでリクエストしても聞く耳を持たないのかもしれません。
今後この分野に携わることは無いと思いますが、一つの貴重な経験として記憶しておこうと思います。
凍結
Cloud APIは問題なく利用できていて、Nature社サーバがメンテしたり障害が発生しない限りは困ることもありません。
というわけで、Local APIの利用は凍結しました。
というわけで、Local APIの利用は凍結しました。
.