MQTT (Message Queuing Telemetry Transport) is a lightweight publish-subscribe network protocol that transports messages between devices. MQTT was designed for remote locations and connections with high-latency, low-bandwidth and unreliable networks. Due to its simplicity and flexibility, today MQTT is commonly used in embedded environments for machine-to-machine communication and becoming a de-facto standard open-source protocol for connecting IoT devices. MQTT is one of the main messaging protocols used in IIoT (Industrial internet of things) systems.
The first version of the MQTT protocol was created in 1999 by Andy Stanford-Clark and Arlen Nipper, engineers working for IBM. The original goal of the project was to create a new—lightweight and bandwidth-efficient—messaging protocol that could be used to monitor oil pipelines within the SCADA industrial control system, eliminating the need for expensive satellite link connections that were utilized for these purposes at the time.
In 2013, IBM submitted MQTT protocol (v3.1) to the OASIS (Organization for the Advancement of Structured Information Standards), which is a non-profit consortium supporting open data standards across various tech fields, such as IoT, robotics, and cloud computing. OASIS released MQTT (v3.1.1) as an open standard in 2014. A more substantial upgrade to MQTT version 5 was released by OASIS in 2019.
The naming of this protocol can look somewhat confusing, as the full version—Message Queuing Telemetry Transport—isn’t exactly accurate. The original name of the protocol was MQ Telemetry Transport, where the ‘MQ’ came from IBM MQ (Message Queueing) line of products. The MQTT protocol, however, relies on a publish-and-subscribe messaging architecture and doesn’t use queues at all. When submitted to OASIS, the formal name of the protocol was MQ Telemetry Protocol (MQTP), but in the related documentation it was most commonly referred to as MQTT, which is why the protocol kept this somewhat misleading name.
MQTT Sparkplug is an open-source software specification that provides MQTT clients with an interoperability protocol to seamlessly integrate data from various applications, devices, sensors and other elements of MQTT infrastructure. The specification was initially developed by Cirrus Link and is managed today by the Eclipse Foundation as part of the Eclipse Tahu project.
Sparkplug was designed specifically for IIoT applications based on MQTT, to be a common language for IIoT systems. It was released in 2015 as a specification that defines how to use MQTT in a mission-critical, real-time OT (operational technology) environment. An MQTT broker responsible for distributing the data is required to use Sparkplug.
Sparkplug provides all the components of IIoT systems with a common data format and specifications on how specific data should be received, published and interpreted, allowing both hardware and software parts of IIoT solutions to exchange data in a fully secured environment. Sparkplug requires TLS for all data transport and having no open ports for new devices. This protocol also allows the integration of data from non-MQTT devices and other popular industry protocols like OPC-UA and Modbus.