In the Target tab you will find the configuration for the sent messages and data.

Optional analysis

Here you can specify analysis file (PDO file) to use expressions, defined in it. Enter the path and file name in this field or select the file using the browser button. The following features are available:

  • Click on the ibaAnalyzer button to check whether ibaAnalyzer can open the PDO file.

  •  creates a copy of analysis file with name “*_(ibaDatCoordinator).pdo”, where “*” is an original analysis name, and launches ibaAnalyzer with specified file loaded. You can edit this file locally.

  •  Uploads the modified analysis file if changes have been made to the local copy.

Example DAT file

You can open a DAT file to use the data it contains for testing expressions by clicking <?>. This file does not affect the task execution and is used only for testing. The evaluated values appear for each signal in the value table in the Test value column.

Topic

Here you select the Kafka topic to which the messages are sent. The topic list is populated by pressing <Test connection> button in the Connection tab.

Key

Messages are sent to the Kafka broker as key-value-pairs. You can configure the key for the messages using placeholders, which can be used, for example, to identify signals or the ibaDatCoordinator instance on the broker.

Signal reference

Signal reference is used as signal identifier within the messages. Different placeholders are available and should be chosen to uniquely identify different signals by the values.

Metadata

You can select which signal metadata you want to attach to the messages sent to the Kafka broker. When using “AVRO (per signal)” metadata are always included.

Timestamp

“Start time” and “End time” are related to processed file and taken from its metadata.

If “Timestamp” is selected as metadata, the timestamp can be computed from the processed DAT file. Besides the usual “Start time” and “End time” options, the timestamp can also be evaluated from an expression. If you select an expression, its averaged value is added to start time in seconds.

The Timestamp format in JSON messages is “YYYY.MM.DDThh:mm:ss:ffffffZ” . The “T” divides date and time, the fractional part of the second has always 6 digits, even if they are all zeroes, and the “Z” marks the time as UTC time.

Data files can have a time UTC offset . Choose from three options how to handle it:

  • Ignore: The local time is taken and reported as UTC time.

  • Convert timestamp to UTC time: The UTC offset is taken into account and the time stamp is converted to UTC time.

  • Append to the timestamp string (JSON formats only): For the JSON formats, the UTC offset can be appended to the timestamp string instead of the letter “Z”. Example: “2022.08.20T12:30:00:000000+02:00”

Data format

JSON (per signal). One message for every computed value is sent. Each message has the following structure.

{

    “Signal”: “My beauty signal”,

    “Value”: 1:23,

    [optional metadata fields]

}

JSON (grouped). All computed values are sent within one singe message with the following structure:

{

    “My signal 1”: 1:23,

    [optional metadata fields of signal 1]

    “My signal 2”: 4:56,

    [optional metadata fields of signal 2]

}

AVRO. One message for every computed value is sent. Each message is serialized using the following avro schema:

{

"namespace": "de.iba",

"type": "record",

"name": "DatCoordinatorRecord",

"fields": [

{"name": "Signal", "type": "string"},

{"name": "ID", "type": ["null", "string"]},

{"name": "Name", "type": ["null", "string"]},

{"name": "Unit", "type": ["null", "string"]},

{"name": “Comment1", "type": ["null", "string"]},

{"name": “Comment2", "type": ["null", "string"]},

{"name": "Timestamp", "type": [

"null",

{"type": "long", "logicalType": "timestamp-micros"}

]},

{"name": "Identifier", "type": ["null", "string"]},

{"name": "ValueType", "type": {

"type": "enum",

"name": "ValueTypeEnum",

"symbols": ["BOOLEAN", "DOUBLE", "STRING"]

}},

{"name": "BooleanValue", "type": ["null", "boolean"]},

{"name": "DoubleValue", "type": ["null", "double"]},

{"name": "StringValue", "type": ["null", "string"]}

]}

Digital values format

Since JSON is a text format, digital (Boolean) values are transformed to a text and can be converted to “True”/”False” or “0”/”1” alternatively.

Value table

Here you can specify any valid ibaAnalyzer expression (e.g., predefined expressions from the PDO file). You can also select signals or modules from the signal tree and add them to the value table using drag and drop. The signal tree is displayed as soon as you load an analysis file in the Optional analysis field or a DAT file in the Example DAT File field. The selected expression will be evaluated when the job runs and the result will be published on the server. When a PDO or test file is loaded, you can simply select expressions from the ibaAnalyzer file tree.

The Name is used to identify the signal on the server (it is inserted into the tag names).

In the Data type column, select the data type corresponding to the signal type: Analog (by default), Text (string) string or Digital (or Boolean).

You cannot edit the Test value column. It is used to show the values of the evaluated expressions against a test DAT file. You can use the buttons on the right side of the table to add, copy, delete, or move expressions up and down.