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 编辑器对应面板中做初始化与清理

参考

相关推荐
jkyy20141 天前
健康座舱:健康有益赋能新能源汽车开启移动健康新场景
人工智能·物联网·汽车·健康医疗
想放学的刺客1 天前
单片机嵌入式试题(第27期)设计可移植、可配置的外设驱动框架的关键要点
c语言·stm32·单片机·嵌入式硬件·物联网
李永奉1 天前
杰理芯片SDK开发-ENC双麦降噪配置/调试教程
人工智能·单片机·嵌入式硬件·物联网·语音识别
Acrelhuang1 天前
工商业用电成本高?安科瑞液冷储能一体机一站式解供能难题-安科瑞黄安南
大数据·开发语言·人工智能·物联网·安全
TDengine (老段)1 天前
金融风控系统中的实时数据库技术实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
柱子jason1 天前
使用IOT-Tree Server中的RESTful模块为前端开发提供数据Api
物联网
才盛智能科技1 天前
元K:自助KTV行业AI生态领航者
大数据·人工智能·物联网·自助ktv系统·才盛云自助ktv系统
csg11071 天前
PIC单片机驱动BH1750光照传感器,轻松获取环境光照数据
单片机·嵌入式硬件·物联网
Acrelhuang1 天前
工厂配电升级优选 安科瑞智能断路器安全提效又节能-安科瑞黄安南
大数据·运维·开发语言·人工智能·物联网
柱子jason1 天前
使用IOT-Tree Server和InfluxDB对采集数据进行记录
物联网