The IoT portal Sensor-Online has now added support for MQTT sparkplug B as well as standard MQTT .
Requirements for Sparkplug
In order to use Sparkplug, you need an MQTT broker that is responsible for distributing the data. It is essential that the MQTT broker implements 100% of the MQTT 3.1.1 specification since Sparkplug requires the following:
- QoS 0 and 1
- Retained Messages
- Last Will and Testament
- A flexible security system
For Proof of Concepts, Eclipse mosquitto and HiveMQ Community Edition are popular choices Unfortunately, AWS IoT and Azure IoTHub are not suitable for Sparkplug as they lack basic MQTT functionality
Sparkplug vs standard MQTT
Sparkplug was designed for Industrial Internet of Things applications based on MQTT. Many vendors support MQTT out of the box for their PLCs (for example Siemens S7) and most Manufacturing Execution Systems (MES) and SCADA systems (like Ignition SCADA by Inductive Automation®) support MQTT. Of course, most professional gateway solutions used in manufacturing contexts support MQTT.
Why now add Sparkplug to the mix? For any non-Sparkplug MQTT communication, you need to make sure that all participants who are interested in the data know where to subscribe to the data and you need to make sure all participants can interpret the data. This usually involves data transformation, which requires conventions, and creates a tight coupling between all the applications. With Sparkplug, all participants settle on a standard data format, how to receive specific data, how to publish their data, and how data can be interpreted. And the best is that Sparkplug allows bringing in data from non-MQTT devices and data from other protocols like OPC-UA or Modbus. Oh, and we get discovery of all these devices and applications out of the box.
We are going to dissect the industry standard Sparkplug and all relevant contents of the specification, so you get the gist and have everything you need to get started. If you want to implement Sparkplug on your own, integrate the specification into your product or just want to learn about it: This is the right starting point for your journey to one of the most important communication protocols for the Industrial Internet of Things.
Introduction to Sparkplug
Industrial Internet of Things (IIoT) and Industry 4.0 are key trends in the manufacturing industry and shopfloor operators are looking for operational efficiency gains, lot size one manufacturing capabilities, and real-time manufacturing insights. However, the software and hardware stacks have traditionally been closed and proprietary, and interoperability was never a key concern for the vendors. Protocols like OPC-UA promised to break up the silos and provide an industry-wide common language between devices, machines, and software applications. The reality to most developers and software architects is that OPC-UA is not the silver bullet everyone hoped for. OPC-UA is extremely complex, and heavyweight and is not always easy to integrate, especially in brownfield environments which you typically have in most manufacturing projects. So people felt there must be a better way.
On the other hand, device-to-cloud communication for minimal latency and maximal throughput got revolutionary easily with the MQTT protocol. And many developers wished for a simple solution like MQTT for manufacturing but with the features required for the manufacturing industry like payload definitions and unified messaging behavior across machines and vendors.
The wish came true when the Sparkplug protocol, which is based on MQTT, was first released by one of the very founding fathers of MQTT: Arlen Nipper. The Sparkplug specification took the industry by storm and large companies like Chevron adopted it for operational efficiency gains and for creating next-generation manufacturing solutions.
About Sparkplug
But what is Sparkplug actually?
Sparkplug is an open-source software specification that provides MQTT clients the framework to seamlessly integrate data from their applications, sensors, devices, and gateways within the MQTT infrastructure in a bi-directional and interoperable way.
To have a common language for the IIoT, the Sparkplug specification defines the following three goals:
- Define an MQTT topic namespace
- Define MQTT state management
- Define the MQTT payload
It’s noteworthy that Sparkplug is actually designed to run 100% on MQTT since the publish/subscribe paradigm of MQTT allows for bi-directional and decoupled integration of all components of a system. When MQTT was invented in 1999, it was originally designed for SCADA systems but left out all specifications around how topics and the payload should be structured and how devices should behave. This allowed MQTT to be used in different industries like connected car, logistics but also smart manufacturing. Sparkplug now fills the gap and provides a vendor-neutral specification for data formats, topic structures, state management, and how topologies should be structured in IIoT scenarios.