Difference between revisions of "V2/CMS Tutorial/User Tools/Creating Content/Automation/Expression"

From Senfi Docs
Jump to: navigation, search
m (${<node_id>.location.<zone>} does not seem to work, and ${asset_3.location.level2} also seems to be an error.)
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<h1 class="main-heading">Add Expression</h1>
 
<h1 class="main-heading">Add Expression</h1>
 +
 +
See [[V2/Concepts/Preparing_for_Expression_Creation|Pre-requisites for creating expressions]] for what you need before you can create expressions in Senfi.
  
 
This section covers the following topics:
 
This section covers the following topics:
* [[#Steps|Add Expression]]
+
* [[#Steps|General Steps]]
 
* [[#Construct Expression|Construct Expression]]
 
* [[#Construct Expression|Construct Expression]]
 
* [[#Configure Nodes|Configure Nodes]]
 
* [[#Configure Nodes|Configure Nodes]]
  
<div class="important">Note: Mandatory fields are marked with an ‘*’. The following steps assume that the user is already logged in. </div>
+
<div class="important">Note: Mandatory fields are marked with an ‘*’. The following steps assume that the user is already logged in to the [https://app.senfi.io/cms/ CMS]. </div>
  
 
===Steps===
 
===Steps===
Line 18: Line 20:
 
# [[#Construct Expression|Construct Expression]].
 
# [[#Construct Expression|Construct Expression]].
 
# Select '''SUBMIT''' (top right corner) to create the expression.
 
# Select '''SUBMIT''' (top right corner) to create the expression.
 +
 +
<div class="important">Note: When you are '''editing an existing expression''', deleting any connection between nodes will automatically disable the expression. </div>
  
 
===Construct Expression===
 
===Construct Expression===
Line 44: Line 48:
 
# Attach an "Asset" node (input) to each "Metric".
 
# Attach an "Asset" node (input) to each "Metric".
 
# Transform data using "[[V2/CMS_Tutorial/User_Tools/Creating_Content/Automation/Expression/Node#Data Transformation|Data Transformation]]" nodes (if necessary).
 
# Transform data using "[[V2/CMS_Tutorial/User_Tools/Creating_Content/Automation/Expression/Node#Data Transformation|Data Transformation]]" nodes (if necessary).
# Create "Compare" and/or "Logic" nodes. ([[V2/CMS_Tutorial/User_Tools/Creating_Content/Automation/Expression/Node#Logic|more information]]) to construct the necessary logic.
+
# Create "Compare" and/or "Logic" nodes. [[V2/CMS_Tutorial/User_Tools/Creating_Content/Automation/Expression/Node#Logic|More information]] to construct the necessary logic.
 
#* Logic graph should output a single Boolean (True/False) value.
 
#* Logic graph should output a single Boolean (True/False) value.
 
#* "Compare" and "Logic" nodes can be nested.
 
#* "Compare" and "Logic" nodes can be nested.
Line 68: Line 72:
 
<div class="important">Note:
 
<div class="important">Note:
 
* "Start" > "End".
 
* "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. </div>
 
* If "End" is not specified, all values received in the past "Start" timeframe will be returned. </div>
  
==== Aggregate node ====
+
==== Aggregate Node ====
 
This section explains the output of each "Aggregate" node option.
 
This section explains the output of each "Aggregate" node option.
 
* '''Sum:''' Sum of all input values.
 
* '''Sum:''' Sum of all input values.
Line 83: Line 88:
 
* '''Percentile:''' [https://en.wikipedia.org/wiki/Percentile percentile].  
 
* '''Percentile:''' [https://en.wikipedia.org/wiki/Percentile percentile].  
 
** This option accepts an additional "Percentile Value" parameter.
 
** This option accepts an additional "Percentile Value" parameter.
* '''Every:''' Outputs true if every input value fulfils the condition.  
+
 
 +
<div class="important">Note:
 +
It is advised to '''avoid''' using "Equal To" in the connected Compare Node, if the output of the Aggregate Node is not an Integer (i.e. Whole Number). </div>
 +
 
 +
* '''Every:''' Outputs '''true''' if every input value fulfils the condition.  
 
** This option accepts an additional "Condition" parameter.
 
** This option accepts an additional "Condition" parameter.
* '''Any:''' Outputs true if at least 1 input value fulfils the condition.  
+
* '''Any:''' Outputs '''true''' if at least 1 input value fulfils the condition.  
 
** This option accepts an additional "Condition" parameter.
 
** This option accepts an additional "Condition" parameter.
  
==== Function node ====
+
<div class="important">Note:
 +
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 </div>
 +
 
 +
==== Function Node ====
 
This section explains the output of each "Function" node option.
 
This section explains the output of each "Function" node option.
 
* '''Absolute value of:''' Absolute value of the input.
 
* '''Absolute value of:''' Absolute value of the input.
Line 97: Line 112:
 
** This option accepts an additional "mathematical operator" and "value" parameter to form a custom mathematical expression.
 
** This option accepts an additional "mathematical operator" and "value" parameter to form a custom mathematical expression.
  
====Event node====
+
====Event Node====
 
This section explains how to retrieve values from expressions to be embedded in the event's  [[V2/CMS_Tutorial/User_Tools/Creating_Content/Automation/Event/Inputs|input]]:  
 
This section explains how to retrieve values from expressions to be embedded in the event's  [[V2/CMS_Tutorial/User_Tools/Creating_Content/Automation/Event/Inputs|input]]:  
 
* Input formula must begin with "${" and end with "}".  
 
* Input formula must begin with "${" and end with "}".  
Line 116: Line 131:
 
====Embed Information of Asset Node Information====
 
====Embed Information of Asset Node Information====
 
* '''Retrieve asset_id of asset:''' ${<node_id>}
 
* '''Retrieve asset_id of asset:''' ${<node_id>}
 +
** E.g. ${asset_3}
 
* '''Retrieve value of metric:''' ${<node_id>.<measurement_code>.<metric_code>}
 
* '''Retrieve value of metric:''' ${<node_id>.<measurement_code>.<metric_code>}
* '''Retrieve BBL id of asset:''' ${<node_id>.location.<building | block | level>}
+
** 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>]}
 
* '''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.
 +
** E.g. ${asset_3.attribute.model}
 +
** E.g. ${asset_3.attribute.model.ch}
  
 
====Embed Information of All other Node types====
 
====Embed Information of All other Node types====
 
* '''Retrieve value of the node:''' ${<node_id>}
 
* '''Retrieve value of the node:''' ${<node_id>}
 +
** E.g. ${compare_3}
 +
 +
<div class="important">Note: For nodes that '''do not''' contribute to the Expression evaluation, they will be considered '''non-existent''' in the Event description. </div>

Latest revision as of 17:39, 4 November 2022

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:

Note: Mandatory fields are marked with an ‘*’. The following steps assume that the user is already logged in to the CMS.

Steps

  1. Go to the Automation Icon.pngAutomation tab.
  2. Select the EXPRESSION tab and then Add.pngADD NEW.
  3. Fill in Name of the Expression.
  4. Set the Type of the Expression by choosing from the Expression type.pngType 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.
  5. Choose to Enable.pngenable or Disable.png disable the expression.
  6. Construct Expression.
  7. Select SUBMIT (top right corner) to create the expression.
Note: When you are editing an existing expression, deleting any connection between nodes will automatically disable 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.

Expression Editor

Arrows coming in from the left of a node indicate its input and those going out from its right indicate its output.

Input & Output of a Node

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

Note: Apart from the "Result" node, all other nodes must be configured.
  1. Create "Metric" nodes, one for each Input metric.
  2. Attach an "Asset" node (input) to each "Metric".
  3. Transform data using "Data Transformation" nodes (if necessary).
  4. 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.
  5. Attach output of Logic graph to the "Result" node.
  6. Create "Event" nodes, one for each desired Event.
  7. Attach the "Result" node (input) to each "Event" node.
event_3 is triggered when result changes from False to True
event_4 is triggered when result changes from True to False

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 Range unit.pngdropdown list.
Note:
  • "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.
Note: It is advised to avoid using "Equal To" in the connected Compare Node, if the output of the Aggregate Node is not an Integer (i.e. Whole Number).
  • 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.
Note:

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 ".".
    • General: ${<node_id>.<2nd word>.<3rd word>.<4th word>}
      • node_id is located at the top left corner of a node in the working area.
        node_id = asset_3
    • 2nd to 4th word depend on the node type.
    • Supported node types:

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}
Note: For nodes that do not contribute to the Expression evaluation, they will be considered non-existent in the Event description.