gpt4 book ai didi

android - 将 Philips Hue 与端口转发结合使用

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:55:56 32 4
gpt4 key购买 nike

我正在开发利用 Philips Hue SDK 的 Android 项目。

我已经实现了一些功能,以便我可以成功地控制灯光,但我也试图让应用程序在用户不在家时控制灯光。

我已经设置了端口转发,这样我就可以通过端口 80 连接到我的公共(public) IP 地址,并将它转发到网桥。

这个想法是用户连接到网桥并在其本地 IP 地址上通过网桥进行身份验证。然后用户可以输入外部地址。

我有一个功能,当连接到网桥时,我会检查用户是否连接了 Wifi,他们是否在自己家里的 wifi 上,然后我设置用户本地网桥网桥地址的 PHAccessPoint 的 IP 地址。

如果用户不在 wifi 上,或者他们在家庭 wifi 上,则 PHAccessPoint IP 地址将更新为用户输入的外部地址。

当我执行此操作时,我不断收到 Bridge 未响应、未连接或 Bridge 已连接的情况,并且这种情况一直在快速发生。即使在错误处理程序中,如果我的网桥没有响应或未连接,我也会确保断开 PHAccessPoint 并尝试再次重新连接。

我试过禁用或增加心跳间隔,但没有任何区别。

但是,如果我在 wifi 上,但仍然通过我的公共(public) IP 地址连接,它就可以工作,我只有在通过移动数据时才会遇到这个问题。

是否有任何技巧可以让这项工作发挥作用?我看到其他应用程序也在做类似的事情,但它不是开源的,所以看不到他们是如何实现的。

我已经注册了 Philips Hue Remote API,但我没有收到他们的回复。

最佳答案

经过大量试验和错误,Android Studio 能够反编译 SDK,因此我可以看到一些代码,我认为这是官方 SDK 实现方式的限制。

基本上我认为问题在于您创建了一个 PHAccessPoint 对象并设置了您的外部 ip,例如86.85.84.83,当你连接到网桥时,你成功连接并获取网桥详细信息,并将网桥配置存储为 PHBridge 对象。该对象包含网桥的本地网络 IP,例如192.168.x.x.当您随后执行任何其他操作时,连接的网桥对象和 PHAccessPoint 对象不匹配,因此在尝试处理并重新连接时返回无连接错误,因为 SDK 已将网桥设置为已连接SDK 返回您已连接,您最终陷入循环。

我认为解决这个问题的唯一方法是拥有一个通过端口转发公开的服务器,并将消息从服​​务器传递到本地网桥,然后通过服务器返回(因此实际的网桥保持在本地) 或使用 RESTful API 滚动您自己的 SDK 实现

关于android - 将 Philips Hue 与端口转发结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799909/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com