MQTT Engine provides a configuration section to the Ignition Gateway and this can be seen in the left side bar of the Ignition Gateway web UI.


The configuration options for each of the three tabs - General, Servers, and Namespaces - are detailed below.

General

The configuration sections available are Main, Command Settings, Miscellaneous and Advanced.

General - Main

General - Command Settings

General - Miscellaneous

General - Advanced

These are advanced settings/features and they should be left with default values in almost all cases. Please be careful when changing these settings from their default values.


Servers

The Servers tab has two parts - Settings and Certificates

Servers - Settings

This tab provides a list of the MQTT Servers that MQTT Engine should connect to. By default, MQTT Engine is configured to connect to the local MQTT Distributor based MQTT Server and is set up to connect to localhost, port 1883, using the default username/password.

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. Clicking on the 'Create new MQTT Server' link will bring up a form for adding a new MQTT Server setting.

The connection status of each server can be seen in the 'Status' column.

The configuration sections available are Main, TLS, Advanced and Advanced Legacy State

Server Settings - Main

Server Settings - TLS

See this document for TLS configuration: Secure MQTT Communications using SSL or TLS

Server Settings - Advanced

Server Settings - Advanced Legacy State

From release 4.0.14 MQTT Engine will support the new STATE message format and be in compliance with MQTT Sparkplug™ B specification v3.0.0.

However as there will still be many existing clients which are only compatible with the MQTT Sparkplug™ B specification v2.2, we have made changes to MQTT Engine to establish a MQTT client whose only function is to publish the STATE message in its legacy format.

If you are updating from a previous version of MQTT Engine to v4.0.14, the configuration of the Legacy State template will be completed as part of the upgrade process and the Legacy Client enabled.

Note: For some MQTT servers, the Username/Password for each client connection must be unique and so these parameters for the second legacy client will need to be edited

Servers - Certificates

This tab provides a list of the certificate or private key files if loaded and available for TLS configuration.

All certificate or private keys must be in PEM format. If using modules pre 4.0.9, any private key file must also be in RSA PKCS1 format. If using modules 4.0.9 or greater, any private key must also be in either RSA PKCS1 or PKCS8 format.

The Certificates tab contains a single Main section.

Servers Certificates - Main

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.

The Namespace tab has two parts - Default and Custom.  

Namespaces Default

Default namespaces are provided out of the box and can simply be enabled or disabled.  When MQTT Engine is first installed, all non Sparkplug B default namespaces are disabled.

The Default tab has four parts - General, Filters, Files and String Conversions

Namespaces Default - General

Namespaces Default - Filters

Namespace filters allows you to specify Group or Group/EdgeNode combinations which will be included in the MQTT Engine subscriptions for this specific namespace.

From MQTT Engine 4.0.16 and newer, it also allows for the filters to be applied to specific MQTT Servers.

Additional detail on the default namespaces is available here.

Namespaces Default - Files


Namespaces Default - String Conversion

Reference the MQTT Engine String Replacement HowTo tutorial for additional details

Namespaces Custom


Custom Namespaces are used to provide support for generic, non Sparkplug compliant MQTT messages with string based payloads. If a custom namespace is configured MQTT Engine will convert all messages received to tags where the topic of each message will translate directly to the tag's path and the payload will be the tag's value.

We recommend disabling the Sparkplug B default namespace if defining a custom namespace.

MQTT Engine supports MQTT Engine String Replacement for both MQTT Topics and Payloads for character sequences that will become part of an Ignition tag path. 

Each custom namespace configuration has two parts - General and String Conversion


Namespaces Custom General

The configuration sections available are Main, Optional and Advanced.

Namespaces Custom - General Main


Check your MQTT Topic subscriptions to verify if they contain valid Ignition tag path or tag name characters. View the Ignition Understand Tag Naming document for details on the tag name rules.

While MQTT and Sparkplug both support characters such as . & % =, Ignition does not support these as valid characters in a tag path or tag name and as a result, it may be necessary to tell MQTT Engine to replace certain characters or strings of characters with something else so the tag path and tag names can be properly created in Ignition. Reference the MQTT Engine String Replacement HowTo for additional details on how to use this configuration.




Namespaces Custom - General Optional

Namespaces Custom - General Advanced


Namespaces Custom - String Conversion

There is one configuration section available Main Settings

Reference the MQTT Engine String Replacement HowTo for additional details on how to use this configuration.

Namespaces Custom - String Conversion Main Settings