Action节点根据入站的消息执行各种动作。
支持TB版本2.0+ |
该节点尝试加载为消息发起者配置的Alarm Type最新警报。
如果存在Uncleared警报则将更新此警报否则将创建新的警报。
节点配置:
注意:自TB版本2.3.0起规则节点具有以下功能:
从消息中读取警报配置:
使用带有消息元数据字段的模式来获取警报类型:
注意:自TB版本2.4.3起规则节点具有以下功能:
按关系类型过滤传播到父实体:
Alarm Details Builder用于生成警报详细信息JsonNode。
这对于在Alarm内部存储其他参数很有用;例如:可以从原始消息payload或Metadata中保存属性名称/值对。
Alarm Details Builder脚本应返回details对象。
msg
变量访问。例如:msg.temperature
metadata
变量访问消息。例如:metadata.customerName
msgType
变量访问。例如:msgType
可选:可以通过访问先前的警报详细信息metadata.prevAlarmDetails
。
如果先前的警报不存在则该字段将不会出现在元数据中。注意这个metadata.prevAlarmDetails
是一个原始的String字段,需要使用以下结构将其转换为对象:
var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
}
Alarm Details Builder可以使用Test JavaScript function来验证警报详细信息生成器脚本功能。
Details Builder 功能示例
count
会从警报中获取属性并进行递增最后将temperature
消息payload的属性放入警报详细信息。
var details = {temperature: msg.temperature, count: 1};
if (metadata.prevAlarmDetails) {
var prevDetails = JSON.parse(metadata.prevAlarmDetails);
if(prevDetails.count) {
details.count = prevDetails.count + 1;
}
}
return details;
:使用以下属性创建/更新警报
出站消息具有以下结构:
创建警报后出站消息将在Metadata中包含isNewAlarm属性其值为true消息将通过Created链传递。
现有警报更新后出站消息将在Metadata中包含isExistingAlarm属性其值为true消息将通过Updated链传递。
这是出站消息的payload示例
{
"tenantId": {
"entityType": "TENANT",
"id": "22cd8888-5dac-11e8-bbab-ad47060c9bbb"
},
"type": "High Temperature Alarm",
"originator": {
"entityType": "DEVICE",
"id": "11cd8777-5dac-11e8-bbab-ad55560c9ccc"
},
"severity": "CRITICAL",
"status": "ACTIVE_UNACK",
"startTs": 1526985698000,
"endTs": 1526985698000,
"ackTs": 0,
"clearTs": 0,
"details": {
"temperature": 70,
"ts": 1526985696000
},
"propagate": true,
"id": "33cd8999-5dac-11e8-bbab-ad47060c9431",
"createdTime": 1526985698000,
"name": "High Temperature Alarm"
}
可以在本教程中找到有关Thingsboard中警报的更多详细信息
在下一面教程中你可以看到使用该节点的真实示例:
支持TB版本2.0+ |
该节点加载具有为消息发起者配置的Alarm Type的最新警报并清除警报(如果存在)。
节点配置:
Alarm Details Builder脚本用于更新警报详细信息JsonNode。 这对于在Alarm内部存储其他参数很有用;例如:可以从原始消息payload或Metadata中保存属性名称/值对。
Alarm Details Builder脚本应返回详细信息对象。
msg
变量访问。例如:msg.temperature
metadata
变量访问消息。例如:metadata.customerName
msgType
变量访问。例如:msgType
注意 metadata.prevAlarmDetails
是一个原始字符串字段需要使用此结构将其转换为对象:
var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
}
可以使用Test JavaScript function验证警报详情构建器脚本函数。
Details Builder功能示例
count
会从警报中获取属性并进行递增。最后将 temperature
消息payload的属性放入警报详细信息。
var details = {temperature: msg.temperature, count: 1};
if (metadata.prevAlarmDetails) {
var prevDetails = JSON.parse(metadata.prevAlarmDetails);
if(prevDetails.count) {
details.count = prevDetails.count + 1;
}
}
return details;
更新节点当前警报:
当警报不存在或已清除警报时原始消息将通过false链传递到下一个节点,否则新的消息将通过Cleared链传递。
出站消息的结构如下:
这是出站消息的payload示例
{
"tenantId": {
"entityType": "TENANT",
"id": "22cd8888-5dac-11e8-bbab-ad47060c9bbb"
},
"type": "High Temperature Alarm",
"originator": {
"entityType": "DEVICE",
"id": "11cd8777-5dac-11e8-bbab-ad55560c9ccc"
},
"severity": "CRITICAL",
"status": "CLEARED_UNACK",
"startTs": 1526985698000,
"endTs": 1526985698000,
"ackTs": 0,
"clearTs": 1526985712000,
"details": {
"temperature": 70,
"ts": 1526985696000
},
"propagate": true,
"id": "33cd8999-5dac-11e8-bbab-ad47060c9431",
"createdTime": 1526985698000,
"name": "High Temperature Alarm"
}
可在本教程中找到有关Thingsboard中警报的更多详细信息
在下一面教程中你可以看到使用该节点的真实示例:
支持TB版本2.1 |
通过配置的时间段延迟入站消息。
配置:
当到满特定入站消息的延迟时间时将从挂起队列中删除并通过Success链路由到下一个节点。
如果达到最大消息限制则每个下一条消息将通过Failure链进行路由。
支持TB版本2.0 |
生成具有可配置周期的消息JavaScript函数用于生成消息。
节点配置:
JavaScript函数接收3个输入参数:
prevMsg
- 是先前生成的消息的payload.prevMetadata
- 是先前生成的消息的metadata.prevMsgType
- 是先前生成的消息类型.脚本应返回以下结构:
{
msg: new payload,
metadata: new metadata,
msgType: new msgType
}
结果对象中的所有字段都是可选的如果未指定则将从先前生成的Message中获取。
来自此节点的出站消息将是使用已配置的JavaScript函数构造的新消息。
使用Test JavaScript function来验证JavaScript生成器功能。
该节点可用于规则链调试
支持TB版本2.0+ |
使用配置好的JavaScript函数将传入消息转换为String并将最终值记录到Thingsboard日志文件中。
INFO 日志级别用于记录.
JavaScript函数接收3个输入参数
metadata
- 消息metadata.msg
- 消息payload.msgType
- 消息类型.脚本应返回字符串值。
JavaScript转换功能可以使用Test JavaScript function进行验证。
在下一面教程中你可以看到使用该节点的真实示例:
支持TB版本2.0 |
发送从设备来的RPC调用的回复
发送从设备来的RPC调用的回复所有入站的RPC请求都通过规则链作为消息传递,同样所有RPC请求都具有请求ID字段它用于映射请求和响应,消息发起者必须是Device实体因为已向消息发起者发起了RPC响应。
节点配置具有特殊的请求ID字段映射如果未指定映射则默认使用requestId元数据字段。
可以通过不同的传输方式接收RPC请求:
消息payload示例
{
"method": "setGpio",
"params": {
"pin": "23",
"value": 1
}
}
在以下情况下消息将通过Failure链进行路由:
有关RPC如何在Thingsboard中工作的更多详细信息请阅读RPC功能文章。
在下一面教程中你可以看到使用该节点的真实示例:
支持TB版本2.0 |
将RPC请求发送到设备并将响应路由到下一个Rule节点消息发起者必须是Device实体因为只能向设备发起RPC请求。
节点配置具有Timeout字段用于指定等待设备响应的超时。
RPC请求的payload消息正确格式必须包含method 和params字段。
例:
{
"method": "setGpio",
"params": {
"pin": "23",
"value": 1
}
}
如果Payload消息包含requestId字段则其值用于标识对设备的RPC请求否则将生成随机的requestId。
出站消息将具有与入站消息相同的发起者和元数据对于设备的响应将添加到消息Payload中。
在以下情况下消息将通过Failure链进行路由:
否则消息将通过Success链路由
有关RPC如何在Thingsboard中应用请阅读RPC功能文章了解更多信息。
支持TB版本2.0+ |
接收入站消息payload的属性存储到数据库中并将它们与消息发起者标识的实体相关联,通过范围用于标识属性范围。
支持的范围类型:
预期消息类型为POST_ATTRIBUTES_REQUEST。 如果消息类型不是POST_ATTRIBUTES_REQUEST消息将通过fFailure链路由.
当属性通过现有API(HTTP/MQTT/CoAP等)上传时如果消息类型payload满足要求,那么消息将被传递到Root Rule Chain的Input节点。
如果需要在规则链中触发属性存储则需要配置规则链将消息Payload转换为预期格式并将消息类型设置为 POST_ATTRIBUTES_REQUEST。可以使用脚本转换节点完成。
预期消息Payload的例子:
{
"firmware_version": "1.0.1",
"serial_number": "SN-001"
}
成功保存属性后原始消息将通过Success链传递到下一个节点否则将使用Failure链。
支持TB版本2.0 |
将接入站消息的payload时间序列数据存储到数据库,并将它们与消息发起者标识的实体相关联通过配置TTL秒用于时间序列数据到期时间0表示数据永不过期。
预期消息类型为POST_TELEMETRY_REQUEST如果消息类型不是POST_TELEMETRY_REQUEST则将通过Failure链路由消息。
当timeseries数据通过现有的API(HTTPMQTT/CoAP等)发布时如果消息类型和payload满足要求,那么消息将被传递到Root Rule Chain链的Input节点。
在需要触发规则链内的timeseries数据存储时应配置规则链来转换消息playload将消息类型设置为POST_TELEMETRY_REQUEST。
可以使用脚本转换节点完成该操作。
消息元数据必须包含ts字段。
该字段可识别已发布的遥测技术几毫秒内的时间戳。
此外如果消息元数据包含TTL字段则使用该字段值识别timeseries数据期限否则请使用节点配置中的TTL。
预期消息Payload的例子:
{
"values": {
"key1": "value1",
"key2": "value2"
}
}
成功保存timeseries数据之后原始消息将通过Success链传递到下一个节点否则使用Failure链。
支持TB版本2.3.1+ |
节点将来自传入消息payload的数据存储到Cassandra DB数据库中存储到应该具有cs_tb__前缀的预定义定制表中以避免将数据插入到公共TB表中。
请注意该规则节点只能用于Cassandra DB
配置:
管理员应设置不带前缀的自定义表名称: cs_tb_。
管理员可以配置消息字段名称和表的列名称之间的映射如果映射键为$entity_id由消息发起者标识则将消息发起者id写入适当的列名(映射值)。
如果指定的消息字段不存在或不是JSON则出站消息将通过Failure链进行路由否则消息将通过Success链进行路由。
支持TB版本2.2+ |
将消息发起者实体分配给Customer。
支持以下消息发起者类型: Asset,Device,Entity View,Dashboard。
通过客户名称模式查找目标客户然后将发起者实体分配给该客户。
如果不存在(Create new Customer if not exists)将创建新客户如果不存在将创建新客户设置为true。
配置:
在以下情况下消息将通过Failure链进行路由:
在其他情况下消息将通过Success链进行路由。
支持TB版本2.2+ |
从Customer取消分配消息发起者实体
支持以下消息发起者类型: Asset, Device, Entity View, Dashboard。
通过客户名称模式查找目标客户然后从该客户取消分配发起者实体。
配置:
在以下情况下消息将通过Failure链进行路由:
在其他情况下消息将通过Success链进行路由。
支持TB版本2.2+ |
按类型和方向创建从所选实体到消息发起者的关系。
支持以下消息发起者类型: Asset,Device,Entity View,Customer,Tenant,Dashboard。
通过元数据键模式查找目标实体然后在发起方实体和目标实体之间创建关系。
如果选择的实体类型为Asset,Device或Customer规则节点: 则如果不存在则创建新的Entity并选中复选框Create new Entity if not exists.
注意: 如果选择的实体类型为Asset或Device则需要设置两种模式:
实体名称模式;
实体类型模式。
否则仅应设置名称模式。
配置:
在以下情况下消息将通过 Failure 链进行路由:
在其他情况下消息将通过Success链进行路由
注意: 自TB 2.3版以来规则节点具有以下功能:
根据方向和类型从传入消息的发起者中删除当前关系:
将入站消息的始发者更改为所选实体并将出站消息作为来自另一个实体的消息进行处理:
支持TB版本2.2.1 |
按类型和方向删除所选实体与消息发起者之间的关系。
支持以下消息发起者类型: Asset,Device,Entity View,Customer,Tenant,Dashboard。
通过实体名称模式查找目标实体然后删除发起者实体与该实体之间的关系。
配置:
在以下情况下消息将通过 Failure 链进行路由:
在以下情况下消息将通过Success链进行路由。
注意: 自TB版本2.3起规则节点可以通过禁用规则节点配置中的以下复选框来根据方向和类型从传入消息的始发者删除与指定实体或与实体列表的关系:
支持TB版本2.3.1 |
通过基于GPS的参数生成传入消息从入的消息数站据或元数据中提取纬度和经度并根据配置参数(地理围栏)返回不同的事件。
默认情况下规则节点从消息元数据中获取外围信息。
如果未选中从Fetch perimeter information from message metadata则应配置其他信息。
根据边界类型,有两种区域定义选项:
多边形
传入消息的元数据必须包含具有名称perimeter和以下数据结构的密钥
[[lat1,lon1],[lat2,lon2], ... ,[latN,lonN]]
"centerLatitude": "value1", "centerLongitude": "value2", "range": "value3"
All values for these keys are in double-precision floating-point data type.
The "rangeUnit" key requires specific value from a list of METER, KILOMETER, FOOT, MILE, NAUTICAL_MILE (capital letters obligatory).
根据边界类型,有两种区域定义选项:
地理围栏规则节点管理的事件有4种:
管理员可以配置持续时间阈值以报告内部事件或外部事件。
例如:每当最小内部时间设置为1分钟时消息发件人就被视为进入该区域后60秒之内最少的外部时间也定义了何时将消息发起者视为不在外围范围之内。
在以下情况下将使用Failure链: