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

如何在NODE-RED中将字符串、数值参数传递给Python函数并触发运行

Node-RED传参调用Python函数实现方案

1. 仪表盘参数采集配置

  • 从Node-RED仪表盘组件库拖入3个组件:text input(对应字符串参数)、numeric/slider(对应数值参数)、button(对应启动按钮),三个组件绑定到同一个仪表盘分组,方便在同一页面操作
  • 两个参数输入节点后分别接change节点,分别将msg.payload赋值到flow.str_param和flow.num_param流上下文变量,实现参数调整后实时存储
  • 启动按钮节点后接change节点,将msg.payload设置为如下JSON结构:
    {
      "str_val": $flowContext("str_param"),
      "num_val": $flowContext("num_param")
    }
    
    实现点击按钮时直接打包当前最新的两个参数
  • 可在change节点后接debug节点,验证打包后的参数是否符合预期

2. 与Python侧通信方案

根据部署场景选择以下任意一种即可:

方案1:本地调用Python脚本(适合同设备部署)

  • 打包参数的消息节点后接exec节点,配置命令为:
    python3 /绝对路径/你的自定义脚本.py "{{payload.str_val}}" {{payload.num_val}}
    
    字符串参数加双引号避免带空格时解析错误
  • Python侧脚本通过sys.argv接收参数,示例代码:
    import sys
    
    if __name__ == "__main__":
        str_param = sys.argv[1]
        num_param = float(sys.argv[2])
        # 此处编写你的自定义业务逻辑
        print(f"执行完成,接收参数:字符串={str_param},数值={num_param}")
    
  • exec节点的输出端口可以接后续节点处理Python脚本的返回结果

方案2:HTTP接口调用(适合跨设备部署)

  • Python侧用轻量框架启动HTTP服务接收参数,示例代码:
    from flask import Flask, request, jsonify
    app = Flask(__name__)
    
    @app.route("/trigger", methods=["POST"])
    def trigger_task():
        params = request.get_json()
        str_param = params["str_val"]
        num_param = params["num_val"]
        # 此处编写你的自定义业务逻辑
        return jsonify({"code": 0, "msg": "执行成功"})
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=5678)
    
  • Node-RED侧打包参数的消息节点后接http request节点,配置请求方法为POST,URL为http://Python运行设备IP:5678/trigger,返回格式为JSON,同时提前设置msg.headers['Content-Type'] = 'application/json'即可

3. 常见问题排查

  • 用exec节点时优先写Python、脚本的绝对路径,避免环境变量、权限问题导致调用失败
  • 字符串参数包含特殊字符时,可先在Node-RED侧做base64编码,Python侧接收后解码,避免解析异常
  • 跨设备调用时注意Python侧设备的防火墙开放对应端口,确保网络连通

内容的提问来源于stack exchange,提问作者Andoni Izaguirre Arrieta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:06:05