我正在尝试完成一些简单的事情。当有人打开色调灯时,如果是在下午 6 点之后,请将灯设置为特定颜色。
如果不经常轮询(这似乎很蹩脚),我无法找到一种方法来做到这一点。
主色调 iOS 应用程序具有警报,但灯仅在打开时响应警报。因此,当晚上 7 点打开灯时,应用程序的警报在晚上 6 点之后也无法设置特定颜色。
我正在尝试完成一些简单的事情。当有人打开色调灯时,如果是在下午 6 点之后,请将灯设置为特定颜色。
如果不经常轮询(这似乎很蹩脚),我无法找到一种方法来做到这一点。
主色调 iOS 应用程序具有警报,但灯仅在打开时响应警报。因此,当晚上 7 点打开灯时,应用程序的警报在晚上 6 点之后也无法设置特定颜色。
API 现在已更新以支持此功能。具有以下条件的规则可以存储在网桥上,因此无需继续从应用程序轮询。第一个条件指定您希望规则触发的时间,第二个条件指定某个灯必须打开,第三个条件指定灯必须刚刚从关闭状态更改。
“地址”:“/config/localtime”,“操作员”:“in”,“值”:“T18:00:00/T23:00:00”
“地址”:“/lights/1/state/on”,“运算符”:“eq”,“值”:“true”
“地址”:“/lights/1/state/on”,“运营商”:“dx”
但是使用 API 的 Hue 应用程序已经在轮询网桥,无论心跳设置如何。因此,当心跳触发时,您读取缓存,检查灯的状态,并存储其“可访问”值,如果灯在物理上关闭,则为 false,如果在物理上打开,则为 true。下次循环时,再次检查。如果它是假的,现在是真的,宾果游戏:灯刚刚打开,所以给它发送一个命令来设置你想要的颜色。
因为 API 使用基于心跳的轮询,而不是回调或中断,所以这是检测外部变化的最佳方法(如物理上打开或关闭的灯,或其他应用程序更改的灯,IFTTT 规则等.) 您确实可以按类型控制资源的心跳间隔,因此您可以更频繁地轮询灯以更快地做出反应。