Contents
Cirrus Link Resources
Cirrus Link Website
Contact Us (Sales/Support)
Forum
Cirrus Link Modules Docs for Ignition 7.9.x
Inductive Resources
Ignition User Manual
Knowledge Base Articles
Inductive University
Forum
MQTT Engine has a number of configuration options that provide flexibility when connecting and subscribing to servers.
This document will step through each of the configuration options with examples of how they might be used.
The MQTT Engine Sets tab contains a list of server sets where each set represents a logical grouping of MQTT servers.
The MQTT Engine Servers tab provides a list of the MQTT Servers that MQTT Engine should connect to with each server associated with a Server Set. Multiple servers can be associated with the same Server Set providing fail-over in redundant or geographically distributed systems.
A single connection is made to the first available server in each set. If this server becomes unavailable, MQTT Engine will attempt to establish a connection with the next server in the set. If unsuccessful, it will continue to walk through the servers in the set until a connection can be made.
If multiple concurrent server connections are desired, each one should be associated with a unique Server Set.
The MQTT Engine Sets tab also contains the Primary Host configuration for all servers associated with the server set.
Review our Understanding Servers and Sets document for additional details.
Review our What is Primary Host ID and how do I use it document for additional details.
The MQTT Engine > Servers > Advanced section contains the Filtered Namespaces configuration.
This configuration option allows for a comma separated list of namespaces that will be filtered/disabled for connections to this MQTT Server.
This filter applies to both the default namespaces (Elecsys, Xirgo, Sparkplug A and Sparkplug B) and any custom namespaces configured.
The ‘Filtered Namespaces' are applied to the respective server only. If connection is switched to another server within the same server set, filtered namespaces are not applied.
If multiple server connections are assigned to a set, it is recommended to use the MQTT Engine Namespaces Default - Sets configuration option as this applies to all servers in a set.
Example
A system with Edge devices publishing using the Sparkplug B protocol to Server A and Edge devices publishing MQTT messages to another Server B.
MQTT Engine will have two server connections configured:
In this instance the Access Control Lists (ACLs) on Server B may not allow for the subscriptions required by MQTT Engine for the Sparkplug B protocol. Setting the Filtered Namespaces for the MQTT Engine Server configuration for Server B to "Sparkplug B" will disable the namespace for this server connection.
The MQTT Engine Namespaces > Default > Sets tab allows for specific Server Sets to be associated with the namespace.
This configuration allows for a namespace to be associated with a specific server set(s) and applies to all servers in the server set.
Example
A system with Edge devices publishing using the Sparkplug B protocol to Server A using Set 1 and Edge devices publishing MQTT messages to a failover server pair Server B and Server C using Set 2.
MQTT Engine will have three server connections configured:
In this instance the Access Control Lists (ACLs) on Servers B and C may not allow for the subscriptions required by MQTT Engine for the Sparkplug B protocol. Associating the Sparkplug B namespace only with Set 1 will disable the namespace for the two server connections associated with Set 2.
The MQTT Engine Namespaces > Default > Filters tab allows for specific Group or Group/EdgeNode combinations to be included in the MQTT Engine subscriptions to specific MQTT Servers.
This allows you to exclude incoming messages from being parsed at Engine using the configured namespace.
The ‘Filters' are applied to the respective server(s) only. If connection is switched to another server within the same server set, filters are not applied and the required Sparkplug B subscriptions will be used.
Ensure that any Access Control Lists (ACLs) configured on the server match the Group or Group/EdgeNode configured in the Namespace Filter
Example 1 for the Sparkplug B namespace
A system with three Edge Nodes publishing data using the Sparkplug B protocol with Groups IDs Edge1, Edge2 and Edge3 where we want to limited MQTT Engine to data coming from Edge2.
Setting the Sparkplug B Default Namespace Filters for a Group ID of 'Edge2' will ensure that only this Group ID will be included in the MQTT Engine subscription.
Example 2 for Sparkplug B namespace
A system with one Edge Node configured with two Server connections - one using the Sparkplug B protobuf format and the other using the Sparkplug B JSON formats.
The Edge Node has two Transmitters, one using each server with unique Sparkplug Group IDs of "Group1JSON" and "Group1".
Setting the Sparkplug B Default Namespace Filters for a Group ID of 'Group1' will ensure that only this Group ID will be included in the MQTT Engine subscription and MQTT engine will never receive the JSON formatted Sparkplug B messages.
Custom Namespaces are used to provide support for generic, non Sparkplug compliant MQTT messages with string based payloads.
The MQTT Engine Namespaces > Custom > Sets allows for specific Server Sets to be associated with the namespace.
This configuration allows for a namespace to be associated with a specific server set(s) and applies to all servers in the server set.
Example
A system with Edge devices publishing using the Sparkplug B protocol to Server A using Set 1 and Edge devices publishing MQTT messages to a failover server pair Server B and Server C using Set 2.
MQTT Engine will have three server connections configured:
In this instance, associating the custom namespace only with Set 2 will disable the namespace for the single server connection associated with Set 1.