在自动化和物联网 (IoT) 领域,Node-RED 是一款强大的流式编程工具。它允许我们通过拖拽节点来实现各种复杂的逻辑操作。其中,Delay 节点是一个非常有用的工具,能够帮助我们实现消息的延迟发送和限流。本文将详细讲解 Node-RED Delay 节点的使用方法和应用场景。
什么是 Delay 节点?
Delay 节点是 Node-RED 中的一个核心节点,用于控制消息的发送时间。它有两个主要功能:
1. 延迟消息发送:在指定的时间后发送消息。
2. 限流:控制一定时间内通过节点的消息数量。
如何配置 Delay 节点?
1. 消息延迟
双击 Delay 节点打开配置面板,行为设置选择 “延迟每一条消息 “,然后设置延迟时间(根据需求可以选择延迟一个固定时间或随机事件,同时页可以使用 msg.delay 进行配置具体的延迟事件)。例如,如果我们希望每条消息延迟 5 秒发送,可以配置如下:
2. 消息限流
双击 Delay 节点打开配置面板,行为设置选择选择 “限制信息速率”,然后设置发送消息的频率 (可以设置在固定的时间内发送多少条消息),同时也可以设置要如何处理被限制的中间消息如何进行发送, 处理方式有以下三种:
- 1. 将中间消息排队
- 2. 不传送中间消息
- 3. 在第二个输出端发送中间消息
用的比较多的是 2 和 3 这两种选项,使用第一种选项时由于中间消息会缓存在消息队列中,当需要将中间消息队列的数据进行发送时在发送的消息中设置 flush 属性即可触发所有中间消息的发送。
例如,如果希望在一分钟内最多只发送 10 条消息,可以配置如下:
实际案例
案例一: 消息延迟处理
在智能家居的场景,假设房间内有一个人体感应器,希望在人离开后延时 30s 后自动关闭所有的灯光。可以通过使用 delay 节点的延迟每一条消息的进行实现。如下图所示:
案例二: 消息去抖动
在一些传感器数据采集场景中,传感器可能会频繁的发送数据,导致数据抖动。通过 delay 节点可以对消息进行去抖动处理。如下图所示:
总结
Node-RED 的 Delay 节点是一个强大且灵活的工具,能够帮助我们有效地控制消息的发送时间和频率。无论是进行消息去抖动、API 调用频率限制还是简单的消息延迟,Delay 节点都能够提供解决方案。通过合理配置 Delay 节点,可以大大提升流的稳定性和可靠性。
希望通过这篇文章,大家能够更加深入地了解 Node-RED Delay 节点的使用方法,并在实际项目中灵活运用。如果有任何问题或需要进一步的讨论,欢迎在评论区留言。
欢迎关注我的公众号 “nodered-co”,原创技术文章第一时间推送。
关注公众号并回复 “教程” 获取约 200 页 "Node-red 中文教程 "