分类: Node-RED

0

Node-RED处理上下文

Node-RED是一个开源的流处理平台,允许用户在多个节点之间共享数据而不通过流传递消息。它提供了三种上下文作用域:Node、Flow和Global,分别对应节点、同一流上的所有节点和所有节点。选择哪种作用域取决于如何使用上下文。例如,如果一个值只需要由单个节点访问,则Node上下文就足够了;而更常见的情况是,上下文允许在多个节点之间共享某种状态。从0.20版本开始,子流中的节点可以通过附加$parent.来访问父流的上下文。此外,Node-RED还提供了两个内置模块:memory和localfilesystem,以及自定义存储插件来将数据保存在其他地方。

1

Node-RED处理消息

Node-RED是一个开源的网络自动化平台,它使用节点来传递消息。这些节点通过在网络中传递消息来执行各种任务,例如跟踪数据流、处理事件等。

Node-RED的核心概念是流程(flow),它是一个由一系列节点组成的序列,用于完成特定的任务。每个节点都有一组属性,可以配置以执行特定的操作。例如,一个节点可能有一个payload属性,该属性包含要传递给下一个节点的消息。

Node-RED还添加了一个名为_msgid的属性,这是一个标识符,用于跟踪消息的进度。默认情况下,Debug节点将显示这个消息,但也可以配置为显示其他属性或整个消息。

Node-RED还提供了一些内置的节点,如HTTP RequestFunction节点,它们允许用户在节点之间传递消息并执行自定义操作。

此外,Node-RED还支持修改消息属性的功能,这可以通过Change节点实现。这个节点允许用户更改消息的属性,包括值、类型、内容等。

最后,Node-RED还提供了对消息序列的支持,这使得用户可以将多个消息组合成一个更大的消息。

1

Node-RED编写Functions

以下是基于您提供的文章内容生成的Function节点简介:

Function节点简介

Function节点是Node-RED中的一个核心节点,允许用户利用JavaScript代码对传入的消息进行编程处理。在Function节点中,变量使用、运算符、if分支语句、switch语句等用法与JavaScript基本一致。

一、基本功能

1. 对传入的消息进行处理:传入的消息作为一个名为“msg”的对象,通常包含消息主体(msg.payload)。
2. 返回值:函数必须始终返回一个msg对象,对msg.payload或其他属性进行修改后返回。如果函数返回null,则不传递任何消息。
3. 构造新的消息对象:函数可以在返回对象之前构造一个全新的对象。

二、特殊功能

1. 多个输出:Function节点允许通过编辑对话框配置输出的数量,以处理编辑对话框中设置的可变数量的输出。
2. 异步发送消息:如果函数需要在发送消息之前执行异步操作,它必须使用node.send()函数传入消息。在node-red 1.0之前,Function节点不会克隆传递给node.send的第一条消息,但现在会克隆所有消息以确保重用的消息对象不会意外修改。
3. On Start选项卡:从Node-RED 1.1.0开始,Function节点提供了一个On Start选项卡,用于在节点启动时运行的代码。
4. 上下文存储:除了msg对象外,该函数还可以在上下文存储区中存储数据。有三个预定义的变量可用于访问内容:context(节点的本地上下文)、flow(流作用域上下文)和global(全局作用域上下文)。
5. 状态功能:通过node.status函数设置状态。例如,可以通过该函数显示节点是否已连接或断开连接等状态信息。

三、其他功能及注意事项

1. 可以在Function节点中使用JavaScript的setTimeout和setInterval函数,但需要注意,Function节点在停止或重新部署时会自动清除所有未完成的超时或间隔计时器。
2. Function节点还提供Buffer、console和util等模块和功能,但建议使用node.log进行日志记录。
3. 从Node-RED 3.1.0开始,可以在Setup选项卡上为Function节点设置超时,以防止函数运行时间过长导致错误。
4. 在Node-RED 0.19及更高版本中,可以配置多个上下文存储,如基于内存和文件的存储。
5. 通过在settings.js文件中添加配置,可以在Function节点中加载和使用其他模块。

总的来说,Function节点是Node-RED中非常强大的节点之一,允许用户根据自己的需求编写代码来处理消息和数据进行各种操作。

0

Node-RED核心节点Nodes

Node-RED调色板包括一组默认的节点,用于创建流。Inject节点允许手动触发流或定期自动触发流。消息具有payload和topic属性集,可以设置多种类型。示例展示了如何使用Inject节点发送不同类型的消息。此外,还介绍了其他节点的功能,如Function、Change、Switch和Template,以及如何使用Mustache模板生成文本。