Outputs

An Output represents a writeable path to a data point on a connection. Examples of outputs include OPC UA tags, MQTT topics, SQL tables, etc. This section covers general settings and configuration across all Outputs. See Connections for protocol specific settings.

Create an Output

  1. Navigate to Connections in the configuration’s Main Menu and select a connection. Inside the selected connection navigate to the Outputs menu item. Here you can add, edit, and view outputs.

List Outputs

  1. Depending on the type of connection you may be able to Browse and import one or more Outputs (e.g., OPC UA). Alternatively, you can click the New Output to manually configure an output.

    • Click the Browse button to View and Select the desired outputs. When finished, click the Import Selected button.
      Browse Outputs
    • Click the New Output button to manually configure an output.
      New Output
  2. Set any General and Protocol Specific Settings. Click Submit to add the output and return to the output list. General Settings are described below.

General Settings

Name

Specifies the name of the output. The name must be unique across all outputs for the specified connection. Names can only contain alphanumeric and underscore characters (e.g., A-Z, a-z, 0-9 or _).

Breakup Arrays

When enabled, arrays sent to this output are broken up into individual objects and sent one at a time. One example of this is breaking up SQL rows over multiple MQTT topics.

Note: Some connectors, like SQL, can efficiently process arrays via bulk operations. In this case enabling breakup arrays decreases performance.

Attribute Filter

Specifies attributes to remove from a complex payload. Nested attributes are excluded by defining the attribute path (delimited by the dot (.) character).

For example, to remove the field “temp” from the payload below, use the attribute path “value.temp”.

json
{ "name": "myInstance", "value": { "temp": 123, "pressure": 456 } }

The result of the filtering the attribute path “value.temp” is:

json
{ "name": "myInstance", "value": { "pressure": 456 } }

Note: Only complex payloads are filtered and invalid attribute paths are ignored. When outputting an array of complex objects, attribute filters are applied to each object in the array.

Dynamic Output Settings

Often times you may want to change output settings based on the data being sent. An example of this would be setting the MQTT topic depending on data in the write payload. There are two ways to do this:

  1. Using a Write New Stage stage in a Pipeline (recommended)
  2. Using a Write Stage, and defining the Output settings using the {{this.payloadAttribute}} syntax

Below is an example using the Write Stage. Assume an MQTT topic on the output is set to the following:

{{this.siteID}}/{{this.areaID}}/{{this.machineID}}

If the data written to a MQTT output looks as follows:

json
{
    "siteID": "Portland",
    "areaID": "Engineering",
    "machineID": "Boiler1"
}

The topic would be set to Portland/Engineering/Boiler1 for the write.

Dynamic outputs are supported on any text output fields. If a reference made is not in the payload (e.g., {{this.badAttribute}}) the operation fails with an appropriate error message.

Test Writes

All outputs support test writes. Test writes output an expression result to the output. The Expression to write can be JSON object, single value, or a source reference (e.g., Input, Instance, Condition, etc.).

Some examples of test write expressions include:

javascript
// Outputs a single value
1
javascript
// Outputs a string
"hello world"
javascript
// Outputs an instance
{{Instance.myInstance}}
javascript
// Outputs a JSON object
var out = {
    "myObject": {
        "tag1": 123,
        "tag2": "hello world"
    }
}
out

Protocol Specific Settings

See Connections for Protocol Specific Settings.