使用 API 的飞利浦 Hue 应用程序可以对打开的灯做出反应吗?

Can a Philips Hue app using the API react to a light being turned on?

我正在努力完成一些简单的事情。当有人打开 hue 灯时,如果是在下午 6 点之后,请将灯设置为特定颜色。

如果不不断轮询(这看起来很蹩脚),我无法找到一种方法来做到这一点。

主要的 Hue iOS 应用程序有警报,但灯只有在打开时才会响应警报。因此,当晚上 7 点开灯时,应用程序的闹钟也无法在下午 6 点后设置特定颜色。

但是使用 API 的 Hue 应用程序已经在轮询桥,无论心跳设置为什么。因此,当心跳触发时,您读取缓存,检查灯的状态,并存储其 "reachable" 值,如果灯物理关闭则为 false,如果灯物理打开则为 true。下次通过循环时,再次检查。如果它是错误的,现在是正确的,宾果游戏:灯刚刚打开,所以向它发送一个命令来设置你想要的颜色。

因为 API 使用基于心跳的轮询,而不是回调或中断,这是检测外部变化(比如灯被物理打开或关闭,或者灯被改变)的最佳方法通过其他应用程序、IFTTT 规则等)您确实可以按类型控制资源的心跳间隔,因此您可以更频繁地轮询灯以便能够更快地做出反应。

API 现已更新以支持此功能。具有以下条件的规则可以存储在网桥上,因此无需保持来自应用程序的轮询。第一个条件指定您希望规则触发的次数,第二个条件指定某个灯必须打开,第三个条件指定灯必须刚刚从关闭变为关闭。

"address":"/config/localtime", "operator":"in", "value":"T18:00:00/T23:00:00"

"address":"/lights/1/state/on","operator":"eq","value":"true"

"address":"/lights/1/state/on","operator":"dx"