问题描述
我一直在尝试通过 python 库 phue - https://github.com/studioimaginaire/phue 对飞利浦色调灯运行多个命令。我遇到的问题是,在 Windows 设备上,每个请求可能需要 5-6 秒,
# PYTHON
import time
from phue import Bridge
# Find and connect to bridge
b = Bridge('<Hue Bridge IP>')
b.connect()
# This takes 5-6 seconds per
b.set_group(1,'on',True)
# Also it does not matter if it a singular light or a group of lights
b.set_group(1,'hue',7000)
我尝试离开 phue 库并用纯请求替换它,如下所示:
# PYTHON
# URL
url = "<The Hue API URL + Key + Specifications>"
# Body
data_on = {"on":True,"sat":254,"bri":254,"hue":c}
data_off = {"on":False}
# Occasionally exceeds this timeout
r = requests.put(url,json.dumps(data_on),timeout=5)
然后我尝试在 Java 中使用 ZeroOne3010 的库运行类似的命令 - https://github.com/ZeroOne3010/yetanotherhueapi(yetanotherhueapi 或 yahueapi),示例脚本在这里:
// JAVA
// Colours
java.awt.Color red = new java.awt.Color(255,0);
// Find Room + Bridge
final String bridgeIp = <IP>;
final String apiKey = <KEY>;
final Hue hue = new Hue(bridgeIp,apiKey);
final Room room = hue.getRoomByName("<ROOM NAME>").get();
// Find Light + Set to red and on
Light light1 = room.getLightByName("<LIGHT NAME>").get();
light1.setState(State.builder().color(Color.of(red)).on());
这比在带有请求或先前库的 python 中运行速度快了不到一秒,所以在这一点上,python 似乎是这里的问题,但是,不是吗?
然后我加载了一个 raspBerry pi 并运行了之前的两个 python 脚本,它们的运行延迟与对 Hue API 的 java 请求类似
所以我的问题是如何或为什么会发生这种情况,更重要的是有没有办法防止这种情况发生?我找不到到底是什么弱点,windows 可以快速发出请求 python 可以快速发出请求,但有时不会。
关于两种设备的额外信息
连接:
- Ras Pi 没有 ethranet,与运行 python 和 java 的 PC 相比具有更低的上下和更高的 ping/
- PC 正在使用以太网电缆/有线连接
操作系统/型号:
- 运行 rasbian OS 32 位的 Ras Pi 4(4GB RAM)
- Windows 10 除了有线连接之外没有其他连接方法(比 pi 规格高得多)
Python 版本:
- Ras Pi 4 运行 3.8
- PC 默认运行 3.9 并安装了 3.7 + 2.7
两者都使用 venv 作为没有安装 anaconda 的虚拟环境。
我一直认为这可能与防火墙有关,但在搜索它时,我收到一页又一页关于如何在 Windows 中加快互联网速度的几乎相同的文章。
这不是问题,因为 PC 的连接速度更快。
所以有什么想法吗? - 对不起,如果我错过了任何重要的事情。 (快速注释改造,适用于 java - https://square.github.io/retrofit/ 也在一秒范围内,pi 和 PC 都在一米之内)我也尝试在我的 IDE (PyCharm) 之外运行它,例如在 pi 上,因为我在终端中运行它,但在 CMD 中没有成功。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)