2016-04-22 30 views
8

私は、Philips Hue SDKを利用したAndroidプロジェクトに取り組んでいます。Philips Hueをポートフォワーディングで使用する

私はライトをうまくコントロールできるようにいくつかの機能を実装しましたが、ユーザーが外出しているときにもアプリケーションのライトを点灯させようとしています。

ポート80を介してパブリックIPアドレスに接続できるようにポートフォワーディングを設定し、ブリッジに転送します。

考えられるのは、ユーザーがブリッジに接続し、そのローカルIPアドレスでブリッジで認証することです。ユーザは、外部アドレスが何であるかを入力することができる。

私は、ブリッジに接続するときに、ユーザーがWifiに接続しているかどうかを確認し、自分の家にいることを確認する機能を持っています。次にユーザーのローカルブリッジブリッジアドレスのPHAccessPointのIPアドレスを設定します。

ユーザーがWi-Fiに接続していない場合、または家庭内のWi-Fiに接続している場合、PHAccessPointのIPアドレスは、外部アドレスとして入力したものに更新されます。

これを行うと、私はブリッジが応答していないか、接続されていないか、ブリッジが既に接続されている状態を維持し続けます。エラーハンドラでは、ブリッジが応答しない、または接続されない場合でも、PHAccessPointを切断して、再度接続を試みます。

ハートビート間隔を無効にするか、または増やしてみましたが、違いはありません。

私はWi-Fiを使用していますが、私のパブリックIPアドレスを介して接続している場合、モバイルデータを経由する場合にのみこの問題が発生します。

この仕事をするための秘訣はありますか他のアプリは似たようなことをしていますが、オープンソースではないので、彼らの実装方法はわかりません。

私はクリスマスの前にやったPhilips Hue Remote APIにサインアップできることを知っていますが、回答はありませんでした。

ご協力いただきありがとうございます。

答えて

4

多くの試行錯誤の末、アンドロイドスタジオがSDKを逆コンパイルできるようになったので、コードの一部を見ることができます。正式なSDKの実装方法の限界だと思います。

基本的には、PHAccessPointオブジェクトを作成して外部IPを設定するという問題があると思います。 86.85.84.83、ブリッジに接続すると、ブリッジの詳細を接続して取得し、ブリッジ設定をPHBridgeオブジェクトとして保存します。このオブジェクトは、ブリッジのローカルネットワークIPを含む。 192.168.x.x.その後、何か他のことをすると、接続されたブリッジオブジェクトとPHAccessPointオブジェクトが一致せず、したがって、SDKが接続されているように設定されているため、接続を処理しようとすると接続エラーが返されて再接続されます。 SDKは、既に接続されていることを返し、ループに陥ってしまいます。

私は、ポート転送を介して公開されているサーバーを持つ唯一の方法は、サーバーからローカルブリッジにメッセージが渡され、その後サーバーを経由して戻されることだと考えています(実際のブリッジはそのままですローカル)またはRESTful APIを使用してSDKの独自の実装をロールバックする

+0

RE:「RESTful APIを使用してSDKを独自に実装する」これが私のやり方です。私はobjective-cのHue APIとの戦いに飽き飽きしていました。そして、色相ブリッジにJSONを読み書きするだけでなく、ハブJSONをオブジェクトに分解してアプリケーションのデータモデルを提供することはずっと簡単でした。同じモデルと解析コードを使用してOS XとiOS上で動作します。 –

関連する問題