Triggers allow you to define a logic function in a script that can perform operations as a thing event is activated. A reference value and a timestamp is supplied with the event which can be taken as an input argument to the trigger function. Typical operations include data validation, sending an email if a value is over a predefined level, etc.
Trigger scripts are created by following these simple steps:
1. Define trigger function
GadgetKeeper provides support for two trigger function signatures:
Signature | Description |
---|---|
function onEvent(event){} |
"event" is a single event object. |
function onEvents(events){} |
"events" is an array of events.
|
The "event" object has the following properties:
id | Event Id, UUID object Generated by GK. |
timestamp | Time then event was created, long. Specified by Thing. |
value | Event value as data type declared in Event property, object. |
For example, this function sets three variables for a single event object:
The "events" array is a JavaScript array as defined here:
events.length | number of event objects in array |
events[i] | single event object in array |
For example, this function sets three arrays to the corresponding properties of the event objects in the "events" array
To enter the script, the "Edit Script Trigger" dialog box must be opened:
This code follows the example illustrated in Thing Trigger Settings and Program Thing Interaction to activate the start/stop methods in the "Airconditioner" thing if the temperature value goes above/below a certain value: |
2. Comply to expected event type
The onEvent(s) function accepts event/events with a property "value" that has a data type which was defined for the array in its Create/Edit Event dialog box
-
Whenever primitive types are specified (boolean, string, int, long, float, double, string), standard Java Script types are used:
The following code shows two primitive types as a function input (event) argument
-
When "array" is specified as the data type for the event, the "value" property of a single event object is a JavaScript array.
For example, the following code shows how an "array" data type is implemented in an input (event) argument
-
When "structure" is specified as a data type for the event, the "value" property of a single event object is a JavaScript object.
For example, the following code shows how a structured data type of "weather" with fields "temperature"(float) and "condition"(string) is implemented in an input (event) argument:
3. Code trigger logic
You have a lot of options. See our Scripting Recipes for more details.
Just some ideas:
- validate incoming values and save the value in internal persistent property
- validate incoming value and pass it to the device via remote property
- send an email
- send the value to a REST service
- retrieve value from a REST service
- retrieve value from device via remote property
- fire an event