Difference between revisions of "V2/CMS Tutorial/User Tools/Creating Content/Automation/Expression"
Elysia.Tan (talk | contribs) |
m (${<node_id>.location.<zone>} does not seem to work, and ${asset_3.location.level2} also seems to be an error.) |
||
(One intermediate revision by one other user not shown) | |||
Line 134: | Line 134: | ||
* '''Retrieve value of metric:''' ${<node_id>.<measurement_code>.<metric_code>} | * '''Retrieve value of metric:''' ${<node_id>.<measurement_code>.<metric_code>} | ||
** E.g. ${asset_3.temp_sensor.temp} | ** E.g. ${asset_3.temp_sensor.temp} | ||
− | * '''Retrieve | + | * '''Retrieve Zone id of asset:''' ${<node_id>.location.zone} |
− | ** E.g. ${asset_3.location. | + | ** E.g. ${asset_3.location.zone} |
* '''Retrieve attribute of asset:''' ${<node_id>.attribute.<attribute_name>[.<language_code>]} | * '''Retrieve attribute of asset:''' ${<node_id>.attribute.<attribute_name>[.<language_code>]} | ||
** If <language_code> is not specified, default language is used. | ** If <language_code> is not specified, default language is used. |
Latest revision as of 17:39, 4 November 2022
Contents
Add Expression
See Pre-requisites for creating expressions for what you need before you can create expressions in Senfi.
This section covers the following topics:
Steps
- Go to the Automation tab.
- Select the EXPRESSION tab and then ADD NEW.
- Fill in Name of the Expression.
- Set the Type of the Expression by choosing from the Type dropdown list.
- Immediate (Default): Expression is checked when new values are received for any of the selected Input Measurement.
- Polling: Expression is checked periodically regardless of whether there are new values for any of the selected Input Measurement.
- Choose to enable or disable the expression.
- Construct Expression.
- Select SUBMIT (top right corner) to create the expression.
Construct Expression
This section will guide you on how to construct an expression using the EXPRESSION EDITOR when adding an expression in the CMS. The goal here is to tell Senfi how to detect an event that you want to be notified of/should be responded to.
The Expression Editor is a graph-based Drag & Drop editor.
Arrows coming in from the left of a node indicate its input and those going out from its right indicate its output.
Each Node falls into one of the following categories:
- Asset Identifier
- Input
- Data Transformation
- Logic
- Result
- Event
Data originates from Metric nodes, is transformed by Data Transformation and/or Logic nodes, and eventually consumed by Result & Event nodes.
See Node Type for more information about each Node Type.
Steps
- Create "Metric" nodes, one for each Input metric.
- Attach an "Asset" node (input) to each "Metric".
- Transform data using "Data Transformation" nodes (if necessary).
- Create "Compare" and/or "Logic" nodes. More information to construct the necessary logic.
- Logic graph should output a single Boolean (True/False) value.
- "Compare" and "Logic" nodes can be nested.
- More than 2 inputs can be attached to each "Logic" node.
- Attach output of Logic graph to the "Result" node.
- Create "Event" nodes, one for each desired Event.
- Attach the "Result" node (input) to each "Event" node.
Configure Nodes
Each node contains attributes & options which you can modify. To modify the attributes of a node, simply select the node (in the working area). A window will popup to allow you to configure the node.
Metric node
Apart from the "Measurement" and "Metric" options, you can also modify the "Type" option.
Below explains the output of each "Type" option:
- Last-known value of (Default): Last known value of the metric.
-
Range value of: Range of values associated with the metric.
- This option accepts an additional "Start" and "End" (Optional) parameter
- All values received within the "Start" and "End" timeframe will be returned.
- The desired time unit (seconds, minutes, hours, days, values) can be changed by choosing from the dropdown list.
- "Start" > "End".
- "Start" is inclusive but "End" is exclusive.
- If "End" is not specified, all values received in the past "Start" timeframe will be returned.
Aggregate Node
This section explains the output of each "Aggregate" node option.
- Sum: Sum of all input values.
- Count: Number of input values.
- Average: Average of the input values.
- Median: Median value of the input values.
- Max: Largest input value.
- Min: Smallest input value.
- Mode: Input value that appears most often.
- Range: Difference between the largest and smallest input value (max - min).
- Stddev: standard deviation
-
Percentile: percentile.
- This option accepts an additional "Percentile Value" parameter.
-
Every: Outputs true if every input value fulfils the condition.
- This option accepts an additional "Condition" parameter.
-
Any: Outputs true if at least 1 input value fulfils the condition.
- This option accepts an additional "Condition" parameter.
If an Aggregate Node is used with the "Every" or "Any" option and it is the only input to a Compare Node, the value of the Compare Node should take one of the following forms:
- True/False
- TRUE/FALSE
- true/false
Function Node
This section explains the output of each "Function" node option.
- Absolute value of: Absolute value of the input.
- Round to nearest integer: Input rounded to the nearest integer.
- Round up: Input rounded up.
- Round down: Input rounded down.
-
Custom transformation (Map): Input transformed based on a custom mathematical expression.
- This option accepts an additional "mathematical operator" and "value" parameter to form a custom mathematical expression.
Event Node
This section explains how to retrieve values from expressions to be embedded in the event's input:
- Input formula must begin with "${" and end with "}".
- Content enclosed within the brackets consist of 1 to 4 words, separated by ".".
Embed Information of Asset Node Information
-
Retrieve asset_id of asset: ${<node_id>}
- E.g. ${asset_3}
-
Retrieve value of metric: ${<node_id>.<measurement_code>.<metric_code>}
- E.g. ${asset_3.temp_sensor.temp}
-
Retrieve Zone id of asset: ${<node_id>.location.zone}
- E.g. ${asset_3.location.zone}
-
Retrieve attribute of asset: ${<node_id>.attribute.<attribute_name>[.<language_code>]}
- If <language_code> is not specified, default language is used.
- E.g. ${asset_3.attribute.model}
- E.g. ${asset_3.attribute.model.ch}
Embed Information of All other Node types
-
Retrieve value of the node: ${<node_id>}
- E.g. ${compare_3}