Node-RED 物联网实践系列(4.1):核心节点精讲(Inject/Debug/Change/Switch/Function)

编辑器与消息调试,来源:https://nodered.org/docs/user-guide/messages

目标

  • 熟练掌握核心节点:Inject、Debug、Change、Switch、Function
  • 理解 msg 消息结构与常见路由/清洗模式
  • 通过可导入 Flow 快速上手并验证结果

消息结构与调试

  • 消息对象:msg,默认使用 msg.payload
  • 使用 Debug 节点观察结构与类型,支持查看完整消息

来源:https://nodered.org/docs/user-guide/messages

示例一:时间戳→清洗→调试

描述:每秒生成一个时间戳,将其转为可读字符串并输出到 Debug。

导入以下 JSON,Deploy 后观察右侧 Debug 面板:

json 复制代码
[
  {
    "id": "i1",
    "type": "inject",
    "z": "f1",
    "name": "every second",
    "props": [{ "p": "payload" }],
    "repeat": "1",
    "once": true,
    "payloadType": "date",
    "x": 170,
    "y": 120,
    "wires": [["c1"]]
  },
  {
    "id": "c1",
    "type": "change",
    "z": "f1",
    "name": "format date",
    "rules": [
      {
        "t": "set",
        "p": "payload",
        "pt": "msg",
        "to": "\"$millis := $.payload;\n$moment($millis).format('YYYY-MM-DD HH:mm:ss')\"",
        "tot": "jsonata"
      }
    ],
    "x": 360,
    "y": 120,
    "wires": [["d1"]]
  },
  {
    "id": "d1",
    "type": "debug",
    "z": "f1",
    "name": "out",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "payload",
    "targetType": "msg",
    "x": 540,
    "y": 120,
    "wires": []
  }
]

示例二:Switch 条件路由与告警高亮

描述:温度数据 >= 30 走告警分支,否则走正常分支。

json 复制代码
[
  {
    "id": "inj",
    "type": "inject",
    "z": "f2",
    "name": "temp=28",
    "props": [{"p":"payload"}],
    "payload": "{\"temperature\":28}",
    "payloadType": "json",
    "x": 150,
    "y": 180,
    "wires": [["sw"]]
  },
  {
    "id": "sw",
    "type": "switch",
    "z": "f2",
    "name": ">=30?",
    "property": "payload.temperature",
    "rules": [
      {"t": ">=", "v": "30", "vt": "num"},
      {"t": "else"}
    ],
    "checkall": "true",
    "repair": false,
    "x": 330,
    "y": 180,
    "wires": [["chg"],["dbg"]]
  },
  {
    "id": "chg",
    "type": "change",
    "z": "f2",
    "name": "set alert",
    "rules": [
      {"t":"set","p":"topic","pt":"msg","to":"alert","tot":"str"},
      {"t":"set","p":"payload","pt":"msg","to":"\"HIGH TEMP\"","tot":"jsonata"}
    ],
    "x": 500,
    "y": 160,
    "wires": [["dbg"]]
  },
  {
    "id": "dbg",
    "type": "debug",
    "z": "f2",
    "name": "out",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": true,
    "complete": "true",
    "targetType": "full",
    "x": 680,
    "y": 180,
    "wires": []
  }
]

示例三:Function 节点与上下文计数

描述:统计消息到达次数,并将计数返回到 msg.payload

json 复制代码
[
  {
    "id": "inj3",
    "type": "inject",
    "z": "f3",
    "name": "trigger",
    "props": [{"p":"payload"}],
    "payload": "1",
    "payloadType": "num",
    "repeat": "1",
    "once": true,
    "x": 150,
    "y": 260,
    "wires": [["fn"]]
  },
  {
    "id": "fn",
    "type": "function",
    "z": "f3",
    "name": "counter",
    "func": "let counter = context.get('counter') || 0;\ncounter += 1;\ncontext.set('counter', counter);\nmsg.payload = counter;\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "// On Start 里可初始化 context 值\nif (context.get('counter') === undefined) {\n  context.set('counter', 0)\n}",
    "libs": [],
    "x": 330,
    "y": 260,
    "wires": [["dbg3"]]
  },
  {
    "id": "dbg3",
    "type": "debug",
    "z": "f3",
    "name": "out",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "payload",
    "targetType": "msg",
    "x": 520,
    "y": 260,
    "wires": []
  }
]

常用技巧

  • Change + JSONata:在不写 JS 的情况下高效清洗/映射
  • Switch:选择 checkall=true 支持多条件依次匹配
  • Function:优先修改原始 msg,避免丢失链路信息(如 HTTP req/res)
  • On Start/On Stop:在 Function 编辑器对应面板中做初始化与清理

参考

相关推荐
环球科讯4 小时前
金融赋能焕新居——建行广东江门分行启动家装补贴季助力消费升温
大数据·人工智能·物联网
2401_865261634 小时前
亦唐科技(YIKTANG):创新引领国产贴片机发展,稳居行业领军地位
大数据·人工智能·物联网
NocoBase18 小时前
如何用 AI 和 NocoBase 搭建一套可投入生产的 CRM
低代码·ai·开源·无代码·无代码开发平台
小僧景贤18 小时前
单片机全方位调试实战指南:串口/RTT/逻辑分析仪/示波器/内核排错分层避坑教程
单片机·嵌入式硬件·物联网
汤姆yu1 天前
基于ESP32的玫瑰大棚智能系统
物联网·esp32·arduino·大棚温湿度
星空真迷人1 天前
嵌入式鸿蒙并非精简版,核心究竟是什么?
stm32·单片机·嵌入式硬件·物联网·华为·harmonyos·iot
hongmai6668881 天前
GK7205V300芯片深度解析:H.265低功耗视觉主控,助力安防监控高效选型
arm开发·嵌入式硬件·物联网·智能家居·h.265·risc-v
微硬创新1 天前
耐达讯自动化:16路4-20mA模拟信号,该怎样平稳接入PROFINET控制系统?
人工智能·物联网·网络协议·自动化·信息与通信
云边云科技_云网融合1 天前
金融医疗混合云组网如何满足数据安全与合规要求?
大数据·人工智能·物联网
鲁邦通物联网1 天前
弱网环境下的工业数据高可用架构:基于边缘节点的离线缓存与异步上传实战
数据采集·工业数据采集·边缘计算网关·物联网网关·5g数采·边缘计算盒子·工业级边缘计算网关