committed by
GitHub
12 changed files with 581 additions and 78 deletions
@ -0,0 +1,436 @@ |
|||
{ |
|||
"ruleChain": { |
|||
"additionalInfo": null, |
|||
"name": "Root Rule Chain", |
|||
"type": "CORE", |
|||
"firstRuleNodeId": null, |
|||
"root": false, |
|||
"debugMode": false, |
|||
"configuration": null, |
|||
"externalId": null |
|||
}, |
|||
"metadata": { |
|||
"firstNodeIndex": 12, |
|||
"nodes": [ |
|||
{ |
|||
"additionalInfo": { |
|||
"description": null, |
|||
"layoutX": 1202, |
|||
"layoutY": 221 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.telemetry.TbMsgTimeseriesNode", |
|||
"name": "Save Timeseries", |
|||
"debugMode": true, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"defaultTTL": 0 |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 1000, |
|||
"layoutY": 167 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.telemetry.TbMsgAttributesNode", |
|||
"name": "Save Attributes", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 1, |
|||
"configuration": { |
|||
"scope": "CLIENT_SCOPE", |
|||
"notifyDevice": false, |
|||
"sendAttributesUpdatedNotification": false, |
|||
"updateAttributesOnlyOnValueChange": false |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 566, |
|||
"layoutY": 302 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.filter.TbMsgTypeSwitchNode", |
|||
"name": "Message Type Switch", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"version": 0 |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 1000, |
|||
"layoutY": 381 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.action.TbLogNode", |
|||
"name": "Log RPC from Device", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"scriptLang": "TBEL", |
|||
"jsScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);", |
|||
"tbelScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);" |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 1000, |
|||
"layoutY": 494 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.action.TbLogNode", |
|||
"name": "Log Other", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"scriptLang": "TBEL", |
|||
"jsScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);", |
|||
"tbelScript": "return '\\nIncoming message:\\n' + JSON.stringify(msg) + '\\nIncoming metadata:\\n' + JSON.stringify(metadata);" |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 1000, |
|||
"layoutY": 583 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.rpc.TbSendRPCRequestNode", |
|||
"name": "RPC Call Request", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"timeoutInSeconds": 60 |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 255, |
|||
"layoutY": 301 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.filter.TbOriginatorTypeFilterNode", |
|||
"name": "Is Entity Group", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"originatorTypes": [ |
|||
"ENTITY_GROUP" |
|||
] |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 319, |
|||
"layoutY": 109 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.filter.TbMsgTypeFilterNode", |
|||
"name": "Post attributes or RPC request", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"messageTypes": [ |
|||
"POST_ATTRIBUTES_REQUEST", |
|||
"RPC_CALL_FROM_SERVER_TO_DEVICE" |
|||
] |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"layoutX": 627, |
|||
"layoutY": 108 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.transform.TbDuplicateMsgToGroupNode", |
|||
"name": "Duplicate To Group Entities", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"entityGroupId": null, |
|||
"entityGroupIsMessageOriginator": true |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": "Process incoming messages from devices with the alarm rules defined in the device profile. Dispatch all incoming messages with \"Success\" relation type.", |
|||
"layoutX": 45, |
|||
"layoutY": 359 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.profile.TbDeviceProfileNode", |
|||
"name": "Device Profile Node", |
|||
"debugMode": true, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"persistAlarmRulesState": false, |
|||
"fetchAlarmRulesStateOnStart": false |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": "", |
|||
"layoutX": 160, |
|||
"layoutY": 631 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.filter.TbJsFilterNode", |
|||
"name": "Test JS script", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"scriptLang": "JS", |
|||
"jsScript": "var test = {\n a: 'a',\n b: 'b'\n};\nreturn test.a === 'a' && test.b === 'b';", |
|||
"tbelScript": "return msg.temperature > 20;" |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": "", |
|||
"layoutX": 427, |
|||
"layoutY": 541 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.filter.TbJsFilterNode", |
|||
"name": "Test TBEL script", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"scriptLang": "TBEL", |
|||
"jsScript": "return msg.temperature > 20;", |
|||
"tbelScript": "var a = \"a\";\nvar b = \"b\";\nreturn a.equals(\"a\") && b.equals(\"b\");" |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": "", |
|||
"layoutX": 40, |
|||
"layoutY": 252 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.transform.TbTransformMsgNode", |
|||
"name": "Add arrival timestamp", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"scriptLang": "TBEL", |
|||
"jsScript": "return {msg: msg, metadata: metadata, msgType: msgType};", |
|||
"tbelScript": "metadata.arrivalTs = Date.now();\nreturn {msg: msg, metadata: metadata, msgType: msgType};" |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": "", |
|||
"layoutX": 1467, |
|||
"layoutY": 267 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.transform.TbTransformMsgNode", |
|||
"name": "Calculate additional latencies", |
|||
"debugMode": true, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"scriptLang": "TBEL", |
|||
"jsScript": "return {msg: msg, metadata: metadata, msgType: msgType};", |
|||
"tbelScript": "var arrivalLatency = metadata.arrivalTs - metadata.ts;\nvar processingTime = Date.now() - metadata.arrivalTs;\nmsg = {\n arrivalLatency: arrivalLatency,\n processingTime: processingTime\n};\nreturn {msg: msg, metadata: metadata, msgType: msgType};" |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": "", |
|||
"layoutX": 1438, |
|||
"layoutY": 403 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.transform.TbChangeOriginatorNode", |
|||
"name": "To latencies asset", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"originatorSource": "ENTITY", |
|||
"entityType": "ASSET", |
|||
"entityNamePattern": "[Monitoring] Latencies", |
|||
"relationsQuery": { |
|||
"direction": "FROM", |
|||
"maxLevel": 1, |
|||
"filters": [ |
|||
{ |
|||
"relationType": "Contains", |
|||
"entityTypes": [] |
|||
} |
|||
], |
|||
"fetchLastLevelOnly": false |
|||
} |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": null, |
|||
"layoutX": 1458, |
|||
"layoutY": 505 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.telemetry.TbMsgTimeseriesNode", |
|||
"name": "Save Timeseries", |
|||
"debugMode": true, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"defaultTTL": 0 |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": "", |
|||
"layoutX": 928, |
|||
"layoutY": 266 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.filter.TbCheckMessageNode", |
|||
"name": "Has testData", |
|||
"debugMode": false, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"messageNames": [ |
|||
"testData" |
|||
], |
|||
"metadataNames": [], |
|||
"checkAllKeys": true |
|||
}, |
|||
"externalId": null |
|||
}, |
|||
{ |
|||
"additionalInfo": { |
|||
"description": null, |
|||
"layoutX": 1203, |
|||
"layoutY": 327 |
|||
}, |
|||
"type": "org.thingsboard.rule.engine.telemetry.TbMsgTimeseriesNode", |
|||
"name": "Save Timeseries with TTL", |
|||
"debugMode": true, |
|||
"singletonMode": false, |
|||
"configurationVersion": 0, |
|||
"configuration": { |
|||
"defaultTTL": 180, |
|||
"skipLatestPersistence": null, |
|||
"useServerTs": null |
|||
}, |
|||
"externalId": null |
|||
} |
|||
], |
|||
"connections": [ |
|||
{ |
|||
"fromIndex": 2, |
|||
"toIndex": 1, |
|||
"type": "Post attributes" |
|||
}, |
|||
{ |
|||
"fromIndex": 2, |
|||
"toIndex": 3, |
|||
"type": "RPC Request from Device" |
|||
}, |
|||
{ |
|||
"fromIndex": 2, |
|||
"toIndex": 4, |
|||
"type": "Other" |
|||
}, |
|||
{ |
|||
"fromIndex": 2, |
|||
"toIndex": 5, |
|||
"type": "RPC Request to Device" |
|||
}, |
|||
{ |
|||
"fromIndex": 2, |
|||
"toIndex": 16, |
|||
"type": "Post telemetry" |
|||
}, |
|||
{ |
|||
"fromIndex": 6, |
|||
"toIndex": 2, |
|||
"type": "False" |
|||
}, |
|||
{ |
|||
"fromIndex": 6, |
|||
"toIndex": 7, |
|||
"type": "True" |
|||
}, |
|||
{ |
|||
"fromIndex": 7, |
|||
"toIndex": 2, |
|||
"type": "False" |
|||
}, |
|||
{ |
|||
"fromIndex": 7, |
|||
"toIndex": 8, |
|||
"type": "True" |
|||
}, |
|||
{ |
|||
"fromIndex": 8, |
|||
"toIndex": 2, |
|||
"type": "Success" |
|||
}, |
|||
{ |
|||
"fromIndex": 9, |
|||
"toIndex": 10, |
|||
"type": "Success" |
|||
}, |
|||
{ |
|||
"fromIndex": 10, |
|||
"toIndex": 11, |
|||
"type": "True" |
|||
}, |
|||
{ |
|||
"fromIndex": 11, |
|||
"toIndex": 6, |
|||
"type": "True" |
|||
}, |
|||
{ |
|||
"fromIndex": 12, |
|||
"toIndex": 9, |
|||
"type": "Success" |
|||
}, |
|||
{ |
|||
"fromIndex": 13, |
|||
"toIndex": 14, |
|||
"type": "Success" |
|||
}, |
|||
{ |
|||
"fromIndex": 14, |
|||
"toIndex": 15, |
|||
"type": "Success" |
|||
}, |
|||
{ |
|||
"fromIndex": 16, |
|||
"toIndex": 0, |
|||
"type": "False" |
|||
}, |
|||
{ |
|||
"fromIndex": 16, |
|||
"toIndex": 17, |
|||
"type": "True" |
|||
}, |
|||
{ |
|||
"fromIndex": 17, |
|||
"toIndex": 13, |
|||
"type": "Success" |
|||
} |
|||
], |
|||
"ruleChainConnections": null |
|||
} |
|||
} |
|||
Loading…
Reference in new issue