Skip to content

根据是否有人做灯控(独立办公室)

前置条件

此能力需要先登录

需求

某客户独立办公室安装了人体感应器,当检测到人员离开后,等待 30 分钟,关闭办公室灯光。

分析

人体感应器上报人员离开事件时,我们可以启动一个 30 分钟的定时器,当定时器超时后,关闭灯光。

注意

此需求有一个关键点,就是当人员再次进入办公室时,要取消 30 分钟的定时器。否则就会出现一个尴尬的情况,由于之前离开时启动了一个 30 分钟的定时器,明明办公室还有人,灯光却被关闭了。

陷阱

也许我们会这样思考:当定时器超时的时候,我们再判断一下当前是否有人不就可以了吗?这样会有一个时间上的误差。假设用户离开后,在第 29 分钟再次进入办公室,然后立即离开,这时由于之前的定时器没有取消,灯光会在第 30 分钟关闭。这不满足原始需求,我们期望的是,当用户离开后,等待 30 分钟再关闭灯光。

方案

以下是鸿图方案:

注意我们新建了一个变量来保存定时器,关于变量的使用,请参考变量章节。