本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Node-Red 的官方 DEMO 示栗(一)
Node-Red 快速上手指北(一)
概述:design\project\Node-Red 读书笔记(IOT)(一)
通用节点:
- 捕获节点:try catch
- 完成节点:complted 事件
- 调试节点:log.debug
- 调试信息输出到状态区域
- 注入节点
- 每当节点RED启动时触发
- 定期触发
- 在特定时间触发
- 链接节点:相当于 BPMN 的事件
- 跨页签链接
- 状态变化捕获节点 函数节点(一):
- 设定函数(change)
- 延迟函数(delay)
- 限流(整流)
- 指令函数(exec)
- 功能节点(脚本语言)
- 返回消息数组(多个出口)
- 异步发送消息
- 记录日志
- 异常处理
- 在上下文中存储数据
- 展示状态信息
- 使用外部模块
- Setup 和 close
- 异步 setup
- 数值范围映射(range)
- 分支函数(switch)
- 消息体格式化(template)
- 触发器(trigger)
- 断线检测
- 双 Trigger 自动重发模型
- 超时处理模型
通用节点
1. 捕获节点(catch)
2.完成节点(complete)
3. 调试节点(debug)
- 调试输出完整对象
- 调试信息输出到控制台
- 调试信息输出到状态区域
- 使用JSONata格式化输出
4. 注入节点(inject)
用于手动触发流程,或者定期触发流程
- 每当节点RED启动时触发
- 定期触发
- 在特定时间触发
5. 链接节点(link)
- 跨页签链接
- 链接调用
- 状态变化捕获节点
函数节点(一)
1. 设定函数(change)
- 将消息属性设置为固定值
- 设置任何属性值
- 使用JSONata设置值
- 从环境变量设置值
- 设置 flow 上下文
- 删除消息属性
- 转移消息属性值
2. 延迟函数(delay)
- 按消息属性延迟消息
- 重置或刷新延迟消息
- 大家看到延迟节点下有个状态数字 7,标识目前有 7 条消息阻塞在延迟节点
- reset 就是设置 msg.reset = true ,让延迟节点中的 7 条消息全部 byebye 放弃执行
- flush 就是设置 msg.flush = true ,让延迟节点中的 7 条消息全部立即执行
- 限流(整流)
- 跟 Java 中的限流一样,让消息每秒多少条,不过对比专业的限流就比较 low 了,算整流?
- 按主题 topic 限流(整流)
3. 指令函数(exec)
- 执行外部命令并获得错误输出
- spawn 模式下执行外部命令
4. 功能节点(脚本语言)
- 返回消息数组(多个出口)
- 异步发送消息
- 记录日志
- 异常处理
- 在上下文中存储数据
- 展示状态信息
- 使用外部模块
functionGlobalContext: {
// os:require('os'),
// jfive:require("johnny-five"),
// j5board:require("johnny-five").Board({repl:false})
},
- Setup 和 close
功能节点代码提供 Setup 和 close 代码。
- “设置(Setup)”选项卡包含的代码将在节点启动时运行
- “关闭(close)”选项卡包含节点停止时将运行的代码。
- 异步 setup
执行异步工作的“Setup”代码可以返回工作的promise对象。在启动功能体之前,要等待承诺的完成。
5. 数值范围映射(range)
相当于统计学中的上扬,将分数 0~100 分,映射为 不及格,及格,优秀
- 下卷
6. 分支函数(switch)
- switch 各个 case 不 break
- switch 各个 case 加 break
- 根据 payload 的数据类型选择输出
- 使用JSONata表达式选择分支
- 使用JSONata表达式选择分支(二)
- 消息序列重建
- 根据消息的一个属性路由消息
- 根据上下文值路由消息
7. 消息体格式化(template)
- 将结果解析为JSON
- 将结果解析为YAML
8. 触发器(trigger)
- 2 秒后执行
- 如果在定义的时间后没有收到消息,则触发流(断线检测)
- 双 Trigger 模型
- 超时处理模型