• V
 

在定义的时间内未收到消息时触发流程

问题

如果在定义的时间内未收到消息,您希望触发一个流程。 例如,您期望每5秒收到一个传感器读数,并需要知道是否未能到达。

解决方案

使用触发器节点来检测在定义的时间间隔后是否未收到消息。

示例

[{"id":"6ea53ad8.2362a4","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":450,"y":1160,"wires":[]},{"id":"3da6946e.184a5c","type":"inject","z":"ac14500e.2c57d","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":1160,"wires":[["38caaff4.03f6d","6ea53ad8.2362a4"]]},{"id":"38caaff4.03f6d","type":"trigger","z":"ac14500e.2c57d","op1":"","op2":"timeout","op1type":"nul","op2type":"str","duration":"5","extend":true,"units":"s","reset":"","bytopic":"all","name":"看门狗","x":270,"y":1200,"wires":[["ae477709.016088"]]},{"id":"ae477709.016088","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":1200,"wires":[]}]

讨论

在示例流程中,顶部分支代表消息的正常流动。 它们也会被传递到流程的第二个分支上的触发器节点。

触发器节点配置为最初不发送任何内容,然后在发送"timeout"消息之前等待5秒。如果有新消息到达,则选择扩展延迟的选项。这意味着只要消息继续到达,节点将不会做任何事情。一旦最后一条消息到达后超过5秒,它将发送"timeout"消息。