MQTT Engine provides a configuration section to the Ignition Gateway.  These can be seen in the Configure section of the Ignition Gateway web UI in the left panel.

Once in the configuration section there are three tabs: Servers, Advanced, and Namespaces.  Each of these tabs is described in detail in the following sections.

General

The first tab contains general settings which allows one to enable/disable the module, configure Application ID Filters, and Cirrus Link Chariot Access Settings.  The Chariot access settings settings are used in conjunction with a Cirrus Link Chariot deployment and will be provided when purchasing Chariot Cloud services.

Main

Chariot Access

Miscellaneous

Servers

The second tab is a list of MQTT Servers that MQTT Engine should connect to.  By default, MQTT Engine is configured to connect to the local MQTT Distributor based MQTT Server.  It is set up to connect to localhost, port 1883, using the default username/password pair of admin/changeme.  Out of the box MQTT Engine will work with MQTT Distributor and its default configuration.  The connection status of each server can be seen in the 'Status' column.  Clicking on the 'Create new MQTT Server' link will bring up the following form for adding a new MQTT Server setting.

Additional or alternative MQTT Servers can be configured in MQTT Engine.  Often times more than one will be configured to handle fail-over in redundant or geographically distributed systems.  The configuration options for servers are listed below.

Main

TLS Settings

Advanced Settings


Clicking on the 'Create new MQTT Server...' link will bring up the following form to add a new Server.

Namespaces

The third tab is used for configuring namespaces.  Each namespace configuration represents a family of devices and/or data that MQTT Engine will support.  A namespace defines the topics that each MQTT Engine client will subscribe on as well as indicates how the payload will be handled.  There are two types of namespaces: Default and Custom.  

Default Namespaces

Default namespaces are provided out of the box and can simply be enabled or disabled.  When MQTT Engine is first installed, all default namespaces are enabled.  Each default namespace has the following properties:

If a namespace is enabled, MQTT Engine will subscribe to the topics necessary to provide support for devices and data associated with that namespace.  If a namespace is disabled, MQTT Engine will unsubscribe from those topics and no longer support the devices and data associated with that namespace.

Custom Namespaces

Custom namespaces are used to provide support for generic MQTT messages with string based payloads.  If a custom namespace is configured MQTT Engine will convert all messages received to tags.  The topic of each message will directly translate into the tag's path.  The payload of the message will be that tag's value.   

Each custom namespace has the following properties:

Main

Optional


Note: if a Tag Name is not specified, care must be taken so that published messages do not end up overwriting previous tags. 

Clicking on the 'Create new Custom Namespace...' link will bring up the following form to add a new Custom Namespace.

Custom Namespace Example  

Let say we have a publish received on the topic "test/data/point" with value "12345".  If no Tag Value is configured, and a message is received, MQTT Engine will create a two folders "test" and "data" and a tag "point" with the value of "12345".

Alternatively if a Tag Name is configured, lets call it "payload", then MQTT Engine will convert each token in the topic to a folder and create a tag called "payload" with the value "12345"

In most cases it is useful to specify a Tag Name in order to prevent cases when a publish on a topic can overwrite a previously created tag, changing it into a folder.  Consider the case where you have the following two publishes:

1st publish on topic "one/two" will create a tag named "two" in the folder "one"

2nd publish on topic "one/two/three" will create a tag named "three" in the folder "one/two"

When the 2nd publish is received it will overwrite the first tag because "two" is now a folder instead of a tag.  This folder/tag name collision can be avoided by specifying the Tag Name to always use for tags. 


Custom Namespace JSON Example

Let say we have a publish received on the topic "test/data/json" with value '{ "stringTag" : "12345", "folderTag" : { "intTag" : 1, "boolTag" : true } }'. MQTT Engine will create a three folders "test", "data" and "point" followed by a tag/folder structure representing the JSON value of the payload.