You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使Function 1仅在mode:0注入时触发且每日仅执行一次?

如何在Node-RED中实现每日特定时间仅触发一次函数计算

我有一个持续变化的BMS SOC数值,可选择在每次变化时(高频)或每5秒注入新值,但希望每24小时仅使用一次当前数值,让function 1仅在mode:0注入时触发,避免每次BMS SOC数值注入时重复执行。

我的使用场景是:每天晚上22:15需要计算电池在次日早晨充满所需的充电电流。试过Delay节点,但它只能限制参数注入频率,没法让消息在特定时间传递。

可行解决方案:

  • 定时触发+最新值存储组合

    1. 添加一个Inject节点,设置为「重复」->「每天」,时间固定为22:15,消息内容设为{"mode":0},这个节点作为function 1的唯一触发源。
    2. 在BMS SOC的数值输出节点后接一个Trigger节点,配置为「保持状态」,这样会始终保留最新的BMS SOC数值。
    3. 当定时Inject节点触发时,让function 1读取Trigger节点存储的最新数值,完成充电电流计算。
  • 用Switch节点过滤触发条件
    在function 1前添加Switch节点,设置规则为仅当消息中包含mode:0时才允许通过,直接屏蔽BMS SOC数值变化产生的触发请求,只响应每日定时的mode:0消息。

  • 上下文存储替代方案
    如果Trigger节点不够灵活,可在BMS SOC数值更新时用Function节点把值存入全局上下文:

    global.set("latestSOC", msg.payload);
    return msg;
    

    然后在定时Inject节点后加一个Function节点,取出最新值传入function 1:

    msg.payload = global.get("latestSOC");
    return msg;
    

内容的提问来源于stack exchange,提问作者Jan Ossowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:33:10