Boa*_*rdy 8 android philips-hue
我正在开发利用飞利浦Hue SDK的Android项目.
我已经实现了一些功能,以便我可以成功控制灯光,但我也试图让应用程序在用户离家时控制灯光.
我已设置端口转发,以便我可以通过端口80连接到我的公共IP地址,然后将其转发到网桥.
这个想法是用户连接到网桥并在其本地IP地址上与网桥进行身份验证.然后,用户可以输入外部地址.
我有一个功能,当连接到网桥时,我检查用户是否连接了Wifi并且是他们自己的家庭wifi我然后设置用户本地桥接桥地址的PHAccessPoint的IP地址.
如果用户不在wifi上,或者他们在家庭wifi上,那么PHAccessPoint IP地址将更新为用户输入的内容,因为它们是外部地址.
当我这样做时,我不断得到Bridge没有响应,没有连接或桥接已经连接,这一切都在迅速发生.即使在错误处理程序中,如果我得到桥接器未响应或未连接,我确保断开PHAccessPoint并尝试再次重新连接.
我已经尝试禁用心跳间隔或增加它,它没有任何区别.
但是,如果我在wifi上,但仍然通过我的公共IP地址连接它工作,我只有通过移动数据时才会遇到这个问题.
是否有任何技巧来完成这项工作我已经看到其他应用程序做类似但它不是开源的,所以无法看到他们是如何实现它的.
我已经注册了飞利浦Hue Remote API,但我没有回复.
经过大量的反复试验,Android Studio 能够反编译 SDK,所以我可以看到一些代码,我认为这是官方 SDK 实现方式的一个限制。
基本上我认为问题在于您创建了一个 PHAccessPoint 对象并设置了外部 IP,例如 86.85.84.83,当您连接到网桥时,您成功连接并获取网桥详细信息,并将网桥配置存储为 PHBridge 对象。此对象包含网桥的本地网络 IP,例如 192.168.xx 当您执行其他任何操作时,连接的网桥对象和 PHAccessPoint 对象不匹配,因此在尝试处理并重新连接时返回无连接错误,因为 SDK 有一个设置为已连接的网桥,SDK 返回您已经连接并且最终陷入循环中。
我认为解决此问题的唯一方法是使用通过端口转发公开的服务器,并将消息从服务器传递到本地网桥,然后通过服务器返回(因此实际网桥保持在本地)或使用 RESTful API 推出您自己的 SDK 实现