- By Arlen Nipper
- June 05, 2023
- Opinion
Summary
Twenty-five years ago when I sat down with Andy Sanford Clark and invented MQTT, I couldn’t have imagined it would become the future of Industrial OT-IT integration, Arlen Nipper writes.

Twenty-five years ago when I sat down with Andy Sanford Clark and invented MQTT, I couldn’t have imagined it would become the future of Industrial OT-IT integration. MQTT adoption has grown rapidly, and several years ago the Industrial IoT industry realized that in order to achieve true interoperability between industrial-based data producers and consumers, we needed to define a common namespace, payload and session awareness, which led to the creation of the Sparkplug specification on top of MQTT.
With the release of Sparkplug 3.0 recently, it may be helpful for technologists to understand: why MQTT, why Sparkplug, and how they work together to enable OT-IT integration.
What is MQTT?
The MQTT specification simply describes how to implement a message oriented middleware, publish/subscribe infrastructure. MQTT was originally designed for a real-time, mission-critical SCADA solution with the following design goals:
- Simple: Easy to implement on very constrained devices
- Efficient: Uses as little bandwidth/footprint as possible
- Stateful: Required for OT-centric messaging
- Open: No vendor lock-in
MQTT enjoys two open standards, the OASIS standards and the ISO standard. There are numerous products and solutions in the market today and IT uses MQTT extensively. Amazon AWS IoT, Microsoft Azure IoT Hub, IBM Watson IoT, and Facebook Messenger all use MQTT.
MQTT has two application types: MQTT servers, or brokers, and MQTT clients. An MQTT message has three components: topic, payload and quality of service. Topics are slash-delimited strings and can be used as a hierarchy for message routing. There are three quality of service (QOS) levels: fire and forget, at least once, and once and only once.
What Andy and I didn’t do is we didn’t define any payload definition. The payload is a binary byte array with no schema or format defined in the specification. By leaving the namespace and payload open, everyone can optimize MQTT for their application at hand. That’s why MQTT is so prevalent in the marketing today, because it is great - but it isn’t enough to do anything without further definition. Both the good and the bad thing about MQTT is - you can publish anything you want on any topic. Without those definitions we are not able to get the interoperability necessary to bridge the gap from OT to IT.
Adding context to MQTT with Sparkplug
OT data consists of proprietary protocols, multiple data formats, and no contextual information. It is designed for operations, varies across market segments, is directly coupled to applications and often lives in isolated networks. IT data needs are often in direct opposition, requiring data objects and modeling, standard data formats, contextual information, decoupled to the enterprise, and easy and secure integration. These two are at odds, but there is an open-standard answer: Sparkplug.
Sparkplug is a newer specification within the Eclipse Tahu project that defines how to use MQTT in a mission-critical, real-time environment. Sparkplug defines a standard MQTT topic namespace, payload and session state management for industrial applications while meeting the requirements of real-time supervisory control and data acquisition (SCADA) implementations. The Sparkplug B specification provides the data model needed to define a tag value for use with OT, also providing data to IT, making it 100% self-discoverable and easy to consume.
- Defines an OT-centric topic namespace for auto-discovery: Defines a well-known topic namespace, so you can subscribe and when messages come in you know the structure of the namespace, where it came from and what to do with it.
- Define models/assets from the edge: The Sparkplug “template definition” allows messages to define data models and be used many times.
- Defines an OT centric extensible process variable payload: Adds context like name, value, timestamp, data type, engineering units/ranges, and other custom properties as required.
- Defines MQTT state management: Provides report by exception, bi-directional command and control, and allows for store and forward.
Sparkplug works over an MQTT server or broker, between edge nodes, or producers of the data, and the host application. The goal is to get data from one MQTT client to another, and Sparkplug was built around that idea to satisfy the needs of both sides of the equation.
Sparkplug 3.0: The latest frontier
Several years ago Cirrus-link released Sparkplug to the Eclipse Foundation, and we continue to work to keep it updated and evolving to meet the needs of Industrial IoT deployments. There were a lot of things that needed to be cleaned up in the specification for the most recent release, Sparkplug 3.0. This was the first release under the Eclipse Foundation’s specification process, and we worked to make it easy to implement with more precise language, improvements to STATE messages, and improvements to Eclipse Tahu to be the first compatible implementation.
Sparkplug 3.0 includes a Technology Compatibility Kit (TCK) for compatibility validation. The TCK is run via a web UI against your Sparkplug profile, or implementation, and with that we’re able to use tooling to generate a coverage report that shows if the implementation passed or failed by meeting every nominative statement in the specification. Products that have already been listed as fully “Sparkplug Compatible” include the Cirrus-Link MQTT Server, Distributor, Engine and Transmission, Eclipse Tahu, the HiveMQ Broker Community and Professional Edition, HiveMQ Sparkplug-Aware Extension, Ignition by Inductive Automation, and the N3uron Client for Sparkplug.
We’re also working towards releasing a Sparkplug specification as an ISO/IEC global standardization by June of this year.
Conclusion
Imagine an environment where every piece of process equipment you have, whether it be in a factory or spread out over a wide geography, is the single source of truth of its information. Then think about every authorized data consumer throughout your enterprise having access to this information, 100% self-discoverable, and being able to use it to derive insights, to drive innovation and recognize the true value of your process information. That is the promise of MQTT Sparkplug.
Read MoreDid you enjoy this great article?
Check out our free e-newsletters to read more great articles..
Subscribe