跳到主要内容

Node-RED 05:Delay 节点的使用

· 阅读需 5 分钟

在自动化和物联网 (IoT) 领域,Node-RED 是一款强大的流式编程工具。它允许我们通过拖拽节点来实现各种复杂的逻辑操作。其中,Delay 节点是一个非常有用的工具,能够帮助我们实现消息的延迟发送和限流。本文将详细讲解 Node-RED Delay 节点的使用方法和应用场景。

什么是 Delay 节点?

Delay 节点是 Node-RED 中的一个核心节点,用于控制消息的发送时间。它有两个主要功能:

1. 延迟消息发送:在指定的时间后发送消息。

2. 限流:控制一定时间内通过节点的消息数量。

如何配置 Delay 节点?

1. 消息延迟

双击 Delay 节点打开配置面板,行为设置选择 “延迟每一条消息 “,然后设置延迟时间(根据需求可以选择延迟一个固定时间或随机事件,同时页可以使用 msg.delay 进行配置具体的延迟事件)。例如,如果我们希望每条消息延迟 5 秒发送,可以配置如下:

2. 消息限流

双击 Delay 节点打开配置面板,行为设置选择选择 “限制信息速率”,然后设置发送消息的频率 (可以设置在固定的时间内发送多少条消息),同时也可以设置要如何处理被限制的中间消息如何进行发送, 处理方式有以下三种:

  1. 1. 将中间消息排队
  2. 2. 不传送中间消息
  3. 3. 在第二个输出端发送中间消息

用的比较多的是 2 和 3 这两种选项,使用第一种选项时由于中间消息会缓存在消息队列中,当需要将中间消息队列的数据进行发送时在发送的消息中设置 flush 属性即可触发所有中间消息的发送。

例如,如果希望在一分钟内最多只发送 10 条消息,可以配置如下:

实际案例

案例一: 消息延迟处理

在智能家居的场景,假设房间内有一个人体感应器,希望在人离开后延时 30s 后自动关闭所有的灯光。可以通过使用 delay 节点的延迟每一条消息的进行实现。如下图所示:

案例二: 消息去抖动

在一些传感器数据采集场景中,传感器可能会频繁的发送数据,导致数据抖动。通过 delay 节点可以对消息进行去抖动处理。如下图所示:

总结

Node-RED 的 Delay 节点是一个强大且灵活的工具,能够帮助我们有效地控制消息的发送时间和频率。无论是进行消息去抖动、API 调用频率限制还是简单的消息延迟,Delay 节点都能够提供解决方案。通过合理配置 Delay 节点,可以大大提升流的稳定性和可靠性。

希望通过这篇文章,大家能够更加深入地了解 Node-RED Delay 节点的使用方法,并在实际项目中灵活运用。如果有任何问题或需要进一步的讨论,欢迎在评论区留言。

欢迎关注我的公众号 “nodered-co”,原创技术文章第一时间推送。

关注公众号并回复 “教程” 获取约 200 页 "Node-red 中文教程 "