liy517 发表于 2023-2-3 21:17:09

NodeRed时间的判断

有两个问题想请教:
1、如何设置在某一个时间段只执行一次?即使是状态改变了也不再执行,例如设置上午8点到9点之间,客厅感应器感应到人,自动开窗帘,如果在这个时间段内手动关闭了窗帘,即便是房间还有人,这个开窗的命令不再执行。
2、红外传感器设定为感应不到人后自动关灯,为了避免误关灯,设定的感应不到人5分钟后再关灯,如果5分钟内有人走动,重新计时。

dengxiao 发表于 2023-2-3 21:52:33

第一个我实现方法是用函数节点,在执行规则后赋值一个变量值为1,然后在触发后就检查这个变量值,如果为1就不执行,再加一个流,定时把变量更改为0.
第二个可以用 stoptimer 插件实现,或者delay节点里面修改如下https://bbs.hassbian.com/data/attachment/forum/202101/13/174455nvplfvy8yj9n9yvn.jpg

Solita 发表于 2023-2-4 12:13:40

有各种办法,我这个也简单,每天这个时间段经过只播报1次,时间段之外自动复位计数


Solita 发表于 2023-2-4 12:17:07

第2个问题就更简单了,一个stoptimer节点就能搞定


ciasdmxhxjjpd@c 发表于 2023-2-4 12:32:57

Solita 发表于 2023-2-4 12:17
第2个问题就更简单了,一个stoptimer节点就能搞定

麻烦分享 下 代码,谢谢

sctale 发表于 2023-2-4 12:40:48

第一个用计数器,但是这个其实容易失效的,你还不如检测下窗帘状态来得简单;
第二个用默认的events: state节点For那边设个延迟时间就行了,没那么复杂。

liy517 发表于 2023-2-4 20:16:05

dengxiao 发表于 2023-2-3 21:52
第一个我实现方法是用函数节点,在执行规则后赋值一个变量值为1,然后在触发后就检查这个变量值,如果为1就 ...

感谢指点:handshake第一个的nodered流能不能分享一下?

liy517 发表于 2023-2-4 20:19:29

Solita 发表于 2023-2-4 12:13
有各种办法,我这个也简单,每天这个时间段经过只播报1次,时间段之外自动复位计数




能否分享一下你这个流的文件?

liy517 发表于 2023-2-4 20:21:55

Solita 发表于 2023-2-4 12:17
第2个问题就更简单了,一个stoptimer节点就能搞定

有个疑问:人体感应后加一个延迟200MS的目的是什么?省略这个节点应该也没问题吧?

Solita 发表于 2023-2-4 22:05:31

liy517 发表于 2023-2-4 20:19
能否分享一下你这个流的文件?

流很简单啊,就是累加1,然后后面判断是否等于1,等于1才执行
至于延时200ms是因为我用的蓝牙人体包含关照,光照只在人体动作时才上报,如果不延时有可能动作先上报,光照后上报,这个流就失效了
页: [1] 2 3
查看完整版本: NodeRed时间的判断