当前位置: 首页 > news >正文

Node-RED:输入节点全家桶:数据从哪里来?

头图

Node-RED:输入节点全家桶:数据从哪里来?

文章目录

  • Node-RED:输入节点全家桶:数据从哪里来?
    • 摘要
    • 一、Inject 节点:你的“手动开关”
      • 📌 适用场景:
      • 🔧 核心配置:
      • 💡 高级技巧:
    • 二、HTTP In 节点:把 Node-RED 变成 Web 服务
      • 📌 适用场景:
      • 🔧 核心配置:
      • 🌰 典型流程:
      • 💡 关键细节:
    • 三、MQTT In 节点:物联网的“神经末梢”
      • 📌 适用场景:
      • 🔧 核心配置:
      • 💡 最佳实践:
    • 四、Watch 节点:监听文件系统变化
      • 📌 适用场景:
      • 🔧 核心配置:
      • 🌰 实战案例:
    • 五、Serial In 节点:与硬件“对话”
      • 📌 适用场景:
      • 🔧 核心配置:
      • 💡 调试技巧:
    • 六、TCP In / UDP In 节点:底层网络通信
      • 📌 适用场景:
      • 🔧 配置要点:
      • 🌰 示例:解析十六进制温度数据
    • 七、其他实用输入节点
      • 1. **Email In**(需额外安装)
      • 2. **Twitter / Telegram In**
      • 3. **Cron 节点**(社区节点:node-red-contrib-cron-plus)
    • 八、输入节点选择指南:一张表说清楚
    • 九、通用调试建议
    • 写在最后:输入是自动化的起点

关键字: Node-RED输入节点数据接入MQTT配置HTTP请求 定时任务串口通信

摘要

去年我帮一个工厂做设备监控系统,客户问:“能不能把 PLC 的数据、微信告警、定时任务、本地文件都接进来?”
我当时没多想,直接在 Node-RED 里拖了四个输入节点——10 分钟搞定演示。客户惊讶地说:“原来数据接入可以这么简单?”

其实,Node-RED 的强大,首先体现在它能“感知”世界的方式足够多
无论是定时触发、网络请求、硬件信号,还是文件变更,它都有对应的“输入节点”作为入口。这些节点就像人的感官:眼睛看(HTTP)、耳朵听(MQTT)、皮肤触(串口)……没有它们,再复杂的流程也只是空转。

今天这篇文章,我们就来系统盘点 Node-RED 中最常用的 7 类输入节点,告诉你:

  • 它们分别适合什么场景?
  • 配置时有哪些隐藏选项?
  • 如何避免常见陷阱?

这不是功能列表,而是一份“输入节点使用地图”。


一、Inject 节点:你的“手动开关”

📌 适用场景:

  • 调试流程
  • 手动触发任务(如“立即备份”)
  • 模拟测试数据

🔧 核心配置:

  • Payload type:支持 string、number、boolean、JSON、Buffer、timestamp 等
  • Repeat:可设置定时循环(秒/分/小时)
  • Inject once after deploy:部署后自动触发一次(适合初始化)

💡 高级技巧:

  • 使用 表达式 动态生成内容(Node-RED 3.0+):

    当前时间:{{ $now() | $formatTime('YYYY-MM-DD HH:mm') }}
    
  • JSON 模式下,可直接写复杂对象:

    { "cmd": "reboot", "target": "device_01" }
    

⚠️ 注意:Inject 节点只能手动或定时触发,不能响应外部事件。


二、HTTP In 节点:把 Node-RED 变成 Web 服务

📌 适用场景:

  • 接收 Webhook(如 GitHub、企业微信)
  • 构建轻量 API 网关
  • 与前端页面交互

🔧 核心配置:

  • Method:GET / POST / PUT 等
  • URL:如 /api/sensor,最终访问地址为 http://ip:1880/api/sensor
  • Return:通常选 “HTTP Response”(需搭配 HTTP Response 节点)

🌰 典型流程:

HTTP In
Function 处理数据
Debug 或 存数据库
HTTP Response

💡 关键细节:

  • POST 请求的 body 会自动解析为 msg.payload(JSON 或 form-data)
  • 请求头在 msg.headers
  • 查询参数在 msg.req.query 中(如 ?id=123msg.req.query.id

❌ 常见错误:忘记连接 HTTP Response 节点,导致客户端一直 pending。


三、MQTT In 节点:物联网的“神经末梢”

📌 适用场景:

  • 接收传感器数据(温湿度、光照等)
  • 设备状态上报
  • 消息队列消费

🔧 核心配置:

  • Broker:需先配置 MQTT 服务器(支持用户名/密码/TLS)
  • Topic:支持通配符(sensor/+/temp
  • QoS:建议用 0(最多一次)或 1(至少一次)

💡 最佳实践:

  • 不同 topic 区分设备,如 factory/device_01/temp

  • 在 Function 节点中提取设备 ID:

    // topic = "sensor/device_01/temp"
    msg.deviceId = msg.topic.split('/')[1];
    return msg;
    

🔒 安全提示:生产环境务必启用 TLS 和认证,避免数据泄露。


四、Watch 节点:监听文件系统变化

📌 适用场景:

  • 监控日志文件更新
  • 自动处理上传的 CSV/JSON 文件
  • 配置文件热加载

🔧 核心配置:

  • Filename:要监听的文件或目录(支持通配符,如 /data/*.csv
  • Watch for:文件创建 / 修改 / 删除
  • Output:可选“文件名”或“文件内容”

🌰 实战案例:

监控 /uploads/ 目录,新文件一出现就解析并入库:

Watch → File In → CSV → Function → Database

⚠️ 注意:Watch 节点不会读取文件内容,只触发事件。需配合 File In 节点读取。


五、Serial In 节点:与硬件“对话”

📌 适用场景:

  • 读取 Arduino / STM32 串口数据
  • 连接工业设备(Modbus RTU)
  • 调试嵌入式设备输出

🔧 核心配置:

  • Port:如 /dev/ttyACM0(Linux)或 COM3(Windows)
  • Baud rate:波特率(常见 9600、115200)
  • Data bits / Parity / Stop bits:按设备要求设置

💡 调试技巧:

  • 数据默认是 Buffer 类型,需转字符串:

    msg.payload = msg.payload.toString('utf8').trim();
    
  • Split 节点按换行符 \n 切分多行数据

🛠️ 权限问题(Linux):
将用户加入 dialout 组:sudo usermod -a -G dialout $USER,然后重启。


六、TCP In / UDP In 节点:底层网络通信

📌 适用场景:

  • 接收自定义协议设备数据
  • 与旧系统对接(无 HTTP/MQTT 支持)
  • 高性能数据流(UDP 广播)

🔧 配置要点:

  • TCP In:需指定端口,每次连接生成一个会话
  • UDP In:监听端口,接收广播或多播包
  • 数据均为 Buffer,需自行解析协议

🌰 示例:解析十六进制温度数据

// 假设 payload = <Buffer 01 2c> 表示 300(0x012c = 300)
let temp = msg.payload.readUInt16BE(0) / 10; // 30.0℃
msg.payload = { temperature: temp };
return msg;

⚠️ 注意:TCP In 节点需配合 TCP Out 回复,否则连接可能被设备断开。


七、其他实用输入节点

1. Email In(需额外安装)

  • 监听邮箱新邮件(IMAP)
  • 适合审批流、告警确认

2. Twitter / Telegram In

  • 接收社交媒体消息
  • 可做聊天机器人入口

3. Cron 节点(社区节点:node-red-contrib-cron-plus)

  • 比 Inject 的定时更强大
  • 支持 cron 表达式(如 0 9 * * 1 表示每周一 9 点)

八、输入节点选择指南:一张表说清楚

场景推荐节点数据格式是否需外部服务
手动测试Inject任意
Web APIHTTP InJSON / Form否(Node-RED 自带)
传感器数据MQTT InJSON / String是(MQTT Broker)
文件监控Watch + File In文件内容
硬件串口Serial InBuffer
自定义协议TCP/UDP InBuffer
定时任务Inject(简单) / Cron(复杂)任意

九、通用调试建议

  1. 所有输入节点后,先接 Debug 节点
    确认数据是否正确到达,格式是否符合预期。
  2. 注意数据类型
    Buffer、string、JSON 处理方式完全不同,用 typeof msg.payload 判断。
  3. 善用 Context 查看原始数据
    在 Function 节点临时保存:flow.set("raw_input", msg);
  4. 网络类节点务必检查防火墙
    云服务器需开放对应端口(1883、80、5000 等)。

写在最后:输入是自动化的起点

Node-RED 的哲学是:先让数据进来,再决定怎么处理
你不需要一开始就设计完美流程,只要选对输入节点,把真实数据“接”进来,后续的转换、判断、输出自然水到渠成。

在此之前,不妨打开你的 Node-RED,试着用 三种不同的输入节点 获取当前时间:

  1. Inject(手动)
  2. HTTP In(浏览器访问)
  3. Cron(定时)

你会发现,同一个目标,Node-RED 提供了多种“感知”路径——而这,正是它的魅力所在。


博客签名2021
http://www.dtcms.com/a/594111.html

相关文章:

  • AI 大模型训练 / 推理的 CPU/GPU 选型指南整理 (仅供参考)
  • 桂林网站优化公司wordpress换空间搬家
  • 青岛网站建设制作公司WordPress 网站成本
  • 现代数据库系统数据结构 B+Tree
  • 佛山专业网站营销企业官方网站管理制度
  • 竞价单页网站制作教程阿里巴巴国际站怎么找客户
  • Attention复杂度解析与改进方向
  • 化工网站建设推广南通做网站的
  • 寻找网站建设员网站开发要跑道吗
  • 集成式智能体开发流程提示词
  • 保定免费建站服务医院男性男科
  • 农业数据集目标检测分割分类数据集汇总介绍
  • 做网站公司在深圳培训学校机构有哪些
  • 织梦 两个网站网站该怎么找到
  • vscode实现ssh远程连接
  • 网站设计过时九江市建设规划局网站
  • 外贸网站平台哪个好ico wordpress
  • 做的网站不能放视频播放器html简单网页代码作业
  • 鄠邑区建设和住房保障局网站永安城乡建设局网站
  • Flutlab使用详解
  • Spring 配置解析与 @Value 注入核心流程详解
  • 亳州网站开发wordpress文章阅读数更改
  • 数据结构**优先级队列**超详细入门到进阶宝典
  • 新药研发项目管理的困境与挑战,医药项目管理系统助推新药研发水平提升
  • 网站首页生成静态页面logo公司商标设计
  • 高校保卫处网站建设工作欧洲十大服务器的推荐
  • 济南网站建设公司选济南网络wordpress4
  • PQL Rate函数
  • C语言数组详解
  • 网上做网站网站开发的评论界面模板