Verwenden von Philips Hue mit Portweiterleitung

8

Ich arbeite an einem Android-Projekt, das dieses Philips Hue SDK verwendet.

Ich habe einige der Funktionen implementiert, damit ich die Lichter erfolgreich steuern kann, aber ich versuche auch, die App so zu steuern, dass sie leuchtet, wenn der Benutzer nicht zu Hause ist.

Ich habe eine Port-Weiterleitung eingerichtet, so dass ich über Port 80 eine Verbindung zu meiner öffentlichen IP-Adresse herstellen und diese an die Bridge weiterleiten kann.

Die Idee ist, dass der Benutzer sich mit der Brücke verbindet und sich mit der Brücke über seine lokalen IP-Adressen authentifiziert. Der Benutzer kann dann eingeben, was die externe Adresse ist.

Ich habe eine Funktion, die, wenn ich an die Brücke anschließe, überprüfe ich, ob der Benutzer Wifi angeschlossen hat und sie auf ihrem eigenen Haus wifi sind, stelle ich dann die IP-Adresse des PHAccessPoint der lokalen Bridge-Adresse des Benutzers ein.

Wenn der Benutzer nicht über WLAN verfügt oder sich nur auf dem WLAN befindet, wird die IP-Adresse von PHAccessPoint auf die vom Benutzer eingegebene Adresse aktualisiert, da es sich um eine externe Adresse handelt.

Wenn ich dies tue, bekomme ich entweder Bridge nicht reagiert, nicht verbunden oder Bridge ist bereits verbunden und dies passiert schnell. Auch wenn ich im Fehlerhandler die Bridge nicht oder nicht verbunden bekomme, vergewissere ich mich, dass ich den PHAccessPoint abkopple und versuche, die Verbindung erneut herzustellen.

Ich habe versucht, das Heartbeat-Intervall zu deaktivieren oder zu erhöhen, und es macht keinen Unterschied.

Wenn ich aber auf dem WLAN bin und trotzdem über meine öffentliche IP-Adresse verbinde funktioniert das nur, wenn ich mobile Daten durchführe.

Gibt es irgendwelche Tricks, um das zu funktionieren? Ich habe andere Apps gesehen, die etwas Ähnliches machen, aber es ist keine Open-Source-Software, daher kann ich nicht sehen, wie sie es implementiert haben.

Mir ist bewusst, dass ich mich bei Philips Hue Remote API anmelden kann, was ich vor Weihnachten getan habe, aber ich habe keine Antwort von ihnen erhalten.

Vielen Dank für Ihre Hilfe.

    
Boardy 22.04.2016, 17:22
quelle

1 Antwort

4

Nach vielen Versuchen und Fehlern und Android Studio kann das SDK dekompiliert werden, so dass ich etwas vom Code sehe, was meiner Meinung nach eine Einschränkung darstellt, wie das offizielle SDK implementiert wird.

Grundsätzlich denke ich, das Problem besteht darin, dass Sie ein PHAccessPoint-Objekt erstellen und Ihre externe IP-Adresse z. 86.85.84.83, wenn Sie eine Verbindung zur Bridge herstellen, verbinden Sie sich erfolgreich und rufen Sie die Bridging-Details ab, und die Bridge-Konfiguration wird als PHBridge-Objekt gespeichert. Dieses Objekt enthält die lokale Netzwerk-IP der Brücke, z.B. 192.168.x.x. Wenn Sie dann zu etwas anderem kommen, stimmen das verbundene Brückenobjekt und das PHAccessPoint-Objekt nicht überein, und daher wird kein Verbindungsfehler zurückgegeben, wenn versucht wird, dies zu handhaben und erneut zu verbinden, da das SDK eine Brücke als verbunden eingerichtet hat SDK gibt zurück, dass Sie bereits verbunden sind und Sie in einer Schleife stecken bleiben.

Ich denke, der einzige Weg dahin wäre, einen Server zu haben, der über Port-Forwarding verfügbar gemacht wird und die Nachrichten vom Server an die lokale Bridge und dann wieder über den Server weitergeleitet werden (so bleibt die eigentliche Bridge lokal) ) oder um eine eigene Implementierung des SDK mit der RESTful API

durchzuführen     
Boardy 29.04.2016, 10:35
quelle

Tags und Links