A calculation script makes use of a scripting language, called Tengo.
Tengo scripting language
Tengo is a scripting language written in Go and with a Go-like syntax. An overview of the basic Tengo syntax can be found here. You can play around with Tengo here .
Standard Tengo libraries
A list of standard Tengo libraries that are supported are listed below.
math
Defines some mathematic constants and functions.
times
Defines some basic time based constants and functions.
rand
Defines functions to generate random values.
text
Defines string manipulation and formatting functions.
enum
Defines some functions to work with enumerables.
Custom Tengo libraries
We’ve added some custom libraries on top of the existing libraries to allow for more versatile scripts.
local
Local allows to save variables in a local context specific to a particular calculation. Only this calculation script can store/retrieve the value across all script executions. An overview of the available functions:
get: local.get(key)
retrieves a value from the local context by it’s key.
set: local.set(key, value)
sets a value in the local context by it’s key.
Example
This example retrieves a previously set value from the local context. If the value does not exist, a default value 0.0 is used. After adding 1.0 to the result, the value is set again in the local context and returned as output by the script.
previous := float(local.get("previous"),0.0)
result:= previous + 1.0
local.set("previous",result)
return result
global
Global allows to save variables in a global context accessible to all calculation scripts. Any calculation script can store/retrieve the value across all scripts executions. An overview of the available functions:
get: global.get(key)
retrieves a value from the global context by it’s key.
set: global.set(key, value)
sets a value in the global context by it’s key.
Input measurement(s) via alias
To access the data of an input measurement, one can use the according alias for the input measurement given in the calculation settings. The alias contains the following properties:
Value
: the value of the measurementTimestamp
: the timestamp of the measurementTags
: the tags of the measurement
Example
This example uses the Value
property of an alias _A
to access the value of an input measurement and multiplies that value by 2.
return _A.Value * 2