最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Node-RED系列(五):Node-RED序列节点的使用

    正文概述 掘金(Fizz在掘金38275)   2021-02-19   815

    Node-RED系列(五):Node-RED序列节点的使用

    上一期我们讲到了Node-RED中函数节点的使用,利用函数节点我们可以调试程序,捕获错误,监听状态的改变,本篇文章我再来给大家讲一下Node-RED中序列sequence分类下的节点,该分类下有4个节点,

    主要是用于对消息体的处理,四个都是仿照着数组的方法来实现的. 分别是split, joib,sort,batch,让我们来一个一个地分析如何使用这些节点完成Iot中流的处理。

    split

    split节点可以将一msg.payload基于一个字符串进行分割, 比如有一个字符串 msg.payload = '1;2;3;4;5' 调用split节点后,使用;来分割msg.payload,那么split的下一级节点将会被触发5次

    Node-RED系列(五):Node-RED序列节点的使用

    此节点也可以用于处理二进制,使用长度分割。

    关于这个节点详细的解释

    输入

    • payload

    节点的行为由msg.payload的类型决定:

    • 字符串/buffer - 使用指定的字符(默认值:\n),缓冲区序列或固定长度将消息拆分。
    • 数组 - 消息被拆分为单个数组元素或固定长度的数组。
    • object - 将为对象的每个键/值对发送一条消息。

    输出 partsobject 此属性包含有关如何将消息与原始消息分开的信息。如果传递给join节点,则可以将序列重组为单个消息。该属性具有以下属性:

    • id - 一组消息的标识符
    • index - 组中的位置
    • count - 如果已知组中的邮件总数。请参阅下面的“流媒体模式”
    • type - 消息的类型-字符串/数组/对象/buffer
    • ch - 对于字符串或buffer,用于将消息拆分为字符串或字节数组的数据
    • key - 对于对象,创建此消息的属性的键。可以将节点配置为也将此值复制到另一个消息属性,例如msg.topic
    • len - 使用固定长度值拆分消息时,每段子消息的长度

    在使用join节点将序列重新组合为单个消息之前,推荐使用此节点来轻松地创建跨消息序列,执行通用操作的流。 它使用msg.parts属性跟踪序列的各个部分。

    流媒体模式

    该节点还可以用于重排消息流。例如,发送换行符终止命令的串行设备可能会传递一条消息,并在其末尾带有部分命令。 在“流模式”下,此节点将拆分一条消息并发送每个完整的段。如果末尾有部分片段,则该节点将保留该片段,并将其添加到收到的下一条消息之前。

    在此模式下运行时,该节点将不会设置msg.parts.count属性,因为流中期望的消息数还是未知的。这意味着它不能在自动模式下与join节点一起使用。

    join

    将消息序列合并为一条消息. 此模式假定此节点与split相连, 或者接收到的消息有正确配置的msg.parts属性.

    共有三种模式:

    • 自动模式 与split节点配对时,它将自动将已被拆分的消息进行合并。
    • 手动模式 手动地以各种方式合并消息序列。
    • 列聚合模式 对消息列中的所有消息应用表达式以将其简化为单个消息。

    输入 parts 使用自动模式时,所有的消息都应包含此属性。split节点会生成此属性,但也可以手动进行设置。该属性具有以下属性:

    • id - 消息组的标识符
    • index - 组中的位置
    • count - 如果已知组中的邮件总数。请参阅下面的“流媒体模式”
    • type - 消息的类型-字符串/数组/对象/buffer
    • ch - 对于字符串或buffer,用于将消息拆分为字符串或字节数组的数据
    • key - 对于对象,创建此消息的属性的键。可以将节点配置为也将此值复制到另一个消息属性,例如msg.topic/li>
    • len - 使用固定长度值拆分消息时,每段子消息的长度

    complete 如果设置,则节点将以其当前状态发送其输出消息

    详细

    • 自动模式

    自动模式使用传入消息的parts属性来确定应如何连接序列。这使它可以自动逆转split节点的操作。

    Node-RED系列(五):Node-RED序列节点的使用

    • 手动模式

    设置为以手动模式时,该节点能以各种不同的方法来处理消息:

    字符串或缓冲区-通过将每条消息的选定属性与指定的连接字符或缓冲区连接起来。 数组 - 通过将每个选定的属性或整个消息添加到输出数组 键/值对象 - 通过使用每个消息的属性来确定存储所需值的键。 merged object - 通过将每个消息的属性合并到一个对象下。 输出消息的其他属性都取自发送结果前的最后一条消息。

    可以用计数来确定应接收多少条消息来进行合并。对于对象输出,可以设置为达到此计数后的每条后续消息都发送一条输出。

    可以用超时来设置发送新消息之前的等待时间。

    如果收到设置了msg.complete属性的消息时发送输出消息并重置消息列数。

    如果收到设置了msg.reset属性的消息,则部分收到的消息将被删除而不发送,同时重置消息列数。

    • 列聚合模式

    选择列聚合模式时,将表达式应用于组成消息列的每条消息,并使用聚合值组成一条消息。

    sort

    对消息属性或消息序列进行排序的函数。

    当配置为对消息属性进行排序时,节点将对指定消息属性所指向的数组数据进行排序。

    当配置为对消息序列排序时,它将对消息重新排序。

    排序顺序可以是:

    • 升序
    • 降序

    对于数字,可以通过复选框指定数字顺序。

    排序键可以是元素值,也可以是JSONata表达式来对属性值进行排序,还可以是message属性或JSONata表达式来对消息序列进行排序。

    在对消息序列进行排序时,排序节点依赖于接收到的消息来设置msg.parts。拆分节点将生成此属性,但也可以手动创建。它具有以下属性:

    • id - 消息组的标识符
    • index - 组中的位置
    • count - 群组中的邮件总数

    注意:在此节点的处理中,消息在内部存储。通过指定要累积的最大消息数,可以防止意外的高内存使用。默认设置是不限制消息数量。

    nodeMessageBufferMaxLength属性在settings.js中设置。

    Node-RED系列(五):Node-RED序列节点的使用

    batch

    根据各种规则创建消息序列。

    详细 有三种创建消息序列的模式:

    • 讯息数 将消息分组为给定长度的序列。 overlap(重叠)选项指定在一个序列的末尾应重复多少消息。

    • 时间间隔 对在指定时间间隔内到达的邮件进行分组。如果在该时间间隔内没有消息到达,则该节点可以选择发送空消息。

    • 串联序列 通过串联输入序列来创建消息序列。每条消息必须具有msg.topic属性和标识其序列的msg.parts属性。该节点配置有topic值列表,以标识所连接的顺序序列。

    储存讯息 该节点将在内部缓冲消息,以便跨序列工作。运行时设置nodeMessageBufferMaxLength可用于限制节点将缓存多少消息


    起源地下载网 » Node-RED系列(五):Node-RED序列节点的使用

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元