Transformation节点用于更改入站的消息字段例如:发起者、消息类型、playload和元数据。

改变发起人节点

image.png
Thingsboard中的所有入站消息都有“发起者”字段该字段标识提交消息的实体可以是Device, Asset, Customer, Tenant等。
当提交的消息是来自另一个实体的消息处理的情况下使用此节点;例如:设备上传遥测并且遥测应复制到更高级别的资产或客户中。
在这种情况下管理员必须在“保存时序”节点之前添加此节点。
发起者可以更改为:

  • 发起人的客户
  • 发起人的租户
  • 关系查询所标识的相关实体

在’Relations query’管理员可以选择所需的Directionrelation depth level还可以使用必需的关系类型和实体类型配置Relation filters
变换 - 图2
如果找到多个相关实体则仅第一个实体当作新的发起者其他实体则被丢弃。
如果未找到相关实体/客户/租户则使用Failure链否则Success链。
出站邮件将具有新的发起者ID。

转换脚本节点

image.png
使用已配置的JavaScript函数更改消息payload、Metadata或消息类型。
JavaScript函数接收3个输入参数:

  • msg - 消息payload
  • metadata - 消息metadata
  • msgType - 消息类型

脚本应返回以下结构
{ msg: new payload, metadata: new metadata, msgType: new msgType }
变换 - 图4
结果对象中的所有字段都是可选的如果未指定则将从原始消息中获取
来自此节点的出站消息将是使用已配置的JavaScript函数构造的新消息。
JavaScript转换功能可以使用Test JavaScript function进行验证.

Example
节点收到带有payload的消息:

  1. {
  2. "temperature":22.4,
  3. "humidity":78
  4. }

Original Metadata:
{ “sensorType” : “temperature” }
原始Message Type - POST_TELEMETRY_REQUEST

应该执行以下修改:

  • 将消息类型更改为’CUSTOM_UPDATE’
  • 将其他属性version添加到payload中值为v1.1
  • 将元数据中的sensorType属性值更改为roomTemp

以下转换函数将执行所有必要的修改:
var newType = “CUSTOM_UPDATE”; msg.version = “v1.1”; metadata.sensorType = “roomTemp” return {msg: msg, metadata: metadata, msgType: newType};

转换邮件信息节点

image.png
通过使用从消息元数据派生的值填充电子邮件字段后将消息转换为电子邮件并设置’SEND_EMAIL’为输出消息类型后使用发送邮件节点发送。
可以将所有电子邮件字段配置为元数据中的值。
变换 - 图6
例如入站消息在元数据中具有deviceName字段并且电子邮件正文应包含其值。
在这种情况下可以像下面的示例一样引用deviceName${deviceName}:
Device ${deviceName} has high temperature

转换企业微信信息

image.png

通过使用从消息元数据派生的值填充企业微信字段后将消息转换为企业微信并设置’SEND_WE_CHAT_INFO’为输出消息类型后使用发送企业微信通知节点发送。
可以将所有企业微信字段配置为元数据中的值
image.png
例如入站消息在元数据中具有deviceName字段并且电子邮件正文应包含其值。
在这种情况下可以像下面的示例一样引用deviceName${deviceName}:
Device ${deviceName} has high temperature