首先,我正在开发自己的C#库来控制飞利浦Hue,这意味着我没有使用官方SDK.(我猜这个SDK会确保你没有任何问题)
我对API中核心概念页面的限制感到有些困惑,该页面指出:
我们不能太快地向灯光发送命令.如果你坚持每秒大约10个命令到
/lights资源,你应该没问题.对于/groups命令,您应该每秒最多保持1次.
我打算尊重这个限制,但是当您在/lights资源上执行GET请求时,限制是否仍然适用,或者仅用于发送具有PUT请求的实际命令以/lights/<id>/state改变灯的状态?同样的问题适用于/groups资源.
通过发送太多请求甚至可能损坏任何内容,还是只需要更长时间才能获得所有响应?
编辑:
我的整体问题是:我应该如何理解API限制?
一个更具体的子问题是:我应该在发送另一个/lights命令之前等待100毫秒,相对于我收到响应时,还是相对于我发送上一个命令的时间?
另一个子问题是:我是否应该仅在例如/lights/<id>/state或在所有请求类型上使用PUT请求时考虑此限制GET/PUT/POST/DELETE
我不知道固件更新中是否有任何改变,但我发现桥可能没有您想象的那么简单,并且API描述不是很清楚.我在运行固件时做了一些测试01009914.
这座桥似乎有某种传入命令的队列.我派{"bri":254}了9次和1次最终指挥{"bri":1}.从第一个命令到灯光实际变暗时,大约需要3-4秒.每次我发送命令时,桥接器都会立即回复success令牌.
我做了相同的小测试,发送其他命令,每个JSON对象10个:
{"bri":254} 3-4秒{"on":true, "bri":254} 6-7秒{"on":true, "bri":254, "alert":"none", "effect":"none"} 12-13秒这实际上表明,每次更改属性大约需要0.3秒才能处理桥.
我将声称,对于我们更改的每个属性,桥接器需要大约300毫秒才能完成,并且命令的限制应该理解为:只要您坚持每秒更改一个组的一个属性,您应该没问题.
注意:我只试过一个由三个灯组成的组,我不知道桥是否确实有一个传入命令的队列,如果它有一个队列,我不知道项目的限制是什么在它是.
编辑:
现在我们对Hue系统性能进行了一些官方澄清.