Sparkplug B

What Is Sparkplug B? Industrial MQTT Explained

Sparkplug B is an open Eclipse Foundation specification that defines how industrial devices and applications use MQTT. It fixes three things MQTT leaves open: the topic structure, the payload format, and how every subscriber knows whether a device is online and its data is current. Plain MQTT moves messages. Sparkplug B makes those messages interoperable between vendors without custom mapping.

For plant and OT engineers, this is what turns an MQTT broker into a reliable backbone for SCADA, historians and analytics. It is also the most common way to feed a Unified Namespace (UNS) from the edge.

This guide explains how Sparkplug B works, where it fits next to OPC UA, its practical limits, and how to run it with the SIOTH® MQTT Universal Broker.

In short: Sparkplug B = MQTT + a standard topic namespace (spBv1.0/…) + a Protocol Buffers payload + birth and death certificates for state awareness.

Why plain MQTT is not enough on a plant

MQTT is a lightweight publish/subscribe protocol: publishers send messages to a broker on named topics, and subscribers receive the topics they ask for (see What is MQTT). It is efficient over low-bandwidth and unreliable links, which is why it spread quickly in IIoT. But MQTT deliberately defines only transport. On an industrial site, that leaves four gaps:

  • No topic convention. One integrator publishes plant1/pump3/flow, another site-a/PU-03/FT101/value. Every consumer needs its own mapping.
  • No payload format. The payload is just bytes: JSON, CSV, a raw float or a vendor format. Data types, units, timestamps and quality are not guaranteed.
  • No state awareness. A subscriber that stops receiving values cannot tell whether the process is stable, the device is offline, or the link is down. For operations, a stale value shown as current is a safety and quality problem.
  • No discovery. A new SCADA or historian client cannot ask what tags exist. Someone has to configure them by hand.

Sparkplug B closes these gaps without changing MQTT itself. Any standard MQTT broker can carry Sparkplug B traffic; the rules sit in the clients and, optionally, in a Sparkplug-aware broker.

How Sparkplug B works

Sparkplug B adds four elements on top of MQTT: defined roles, a topic namespace, a typed binary payload and a state-management sequence.

Roles

Role What it is Typical example
Edge Node MQTT client that publishes data on behalf of one or more devices and receives commands Gateway or edge software reading PLCs and RTUs
Device Physical or logical asset attached to an Edge Node PLC, flow meter, analyser, pump skid
Host Application Consumer that subscribes to data and can send commands SCADA, historian, MES, analytics platform
Primary Host Application The Host Application whose online status Edge Nodes track before publishing Main SCADA or the integration platform
MQTT server Broker that routes all messages between clients MQTT broker, optionally Sparkplug-aware
Sparkplug B roles diagram: field devices, Edge Nodes, MQTT server and Primary Host SCADA
Figure 1. Sparkplug B roles: Edge Nodes publish birth, data and death messages through an MQTT server to Host Applications.

Topic namespace

Every Sparkplug B message uses the same structure:

spBv1.0/<group_id>/<message_type>/<edge_node_id>/[<device_id>]

Sparkplug B topic namespace example: spBv1.0/Desal_Plant/DDATA/RO_Train_2_Gateway/HP_Pump_A
Figure 2. Anatomy of a Sparkplug B topic namespace, using a desalination plant example.

Any compliant Host Application can parse it without project-specific mapping.

Message types

Type Sent by Purpose
NBIRTH / DBIRTH Edge Node Announces a node or device is online, with its full metric list, data types and current values
NDATA / DDATA Edge Node Sends changed values only (report by exception)
NDEATH / DDEATH Broker (NDEATH, via MQTT Last Will) or Edge Node Announces a node or device is offline; consumers mark its data stale
NCMD / DCMD Host Application Writes a value or sends a control request, such as a rebirth request
STATE Primary Host Application Publishes whether the host is online, so Edge Nodes know when to publish

Payload

Sparkplug B payloads are encoded with Google Protocol Buffers, a compact binary format. Each metric carries a name, a data type, a value and a timestamp. Optional numeric aliases replace long metric names after the birth message, which cuts bandwidth further. Metrics can also carry properties (such as engineering units) and templates for reusable data structures.

A sequence number on every message lets the host detect a lost message and request a fresh birth.

State management: birth, data, death

This is the part that makes Sparkplug B suitable for operations:

  1. The Edge Node connects to the broker and registers its NDEATH message as its MQTT Last Will.
  2. It publishes NBIRTH, then a DBIRTH per device: the full, typed list of every metric and its current value.
  3. After that, it publishes only changes (NDATA, DDATA).
  4. If the Edge Node drops off the network, the broker publishes its NDEATH automatically.
  5. Every Host Application then marks that node’s data as stale instead of showing the last value as current.
  6. On reconnection, the Edge Node sends a new birth, and every consumer has a complete, current picture again.
Sparkplug B session lifecycle: NBIRTH, DDATA, NDEATH Last Will, stale data and rebirth
Figure 3. Sparkplug B session lifecycle: birth, report by exception, death and rebirth.

Sparkplug B vs plain MQTT

  Plain MQTT MQTT with Sparkplug B
Topic structure Free-form, defined per project Fixed: spBv1.0/group/type/node/device
Payload Undefined (JSON, text, binary) Protocol Buffers, typed metrics with timestamps
Device online/offline status Not defined Birth and death certificates on every node and device
Stale data detection Application-specific Built in: death marks data stale
Tag discovery Manual configuration Automatic from birth messages
Bandwidth use Depends on payload design Report by exception, binary encoding, metric aliases
Commands to the field Custom topics Standard NCMD / DCMD
Multi-vendor interoperability Requires mapping per pair Any compliant client and host

Plain MQTT remains a good choice for simple telemetry to IT or cloud systems where JSON readability matters. Sparkplug B is the better choice when operations depend on knowing that the data is complete and current. For the broader protocol comparison, see MQTT vs OPC UA.

Sparkplug B and the Unified Namespace

Sparkplug B is a common transport for a Unified Namespace, but it is not a UNS by itself. A Unified Namespace is a single, event-driven source of truth, organized the way the business sees its assets, usually along ISA-95 levels (enterprise, site, area, line, asset).

The Sparkplug B namespace is organized by communication path: group, Edge Node, device. That suits the edge, but it does not describe where an asset sits in the plant hierarchy or what it means to the business. Most industrial UNS architectures therefore combine:

  • Sparkplug B at the edge, for reliable, state-aware data collection from field devices and gateways.
  • A contextual model above it, which maps raw metrics to an ISA-95 asset hierarchy with units, limits and relationships.
  • Standard MQTT or other interfaces to IT, where consumers expect readable, structured topics.
Sparkplug B at the edge feeding an ISA-95 asset model and Unified Namespace for applications
Figure 4. Sparkplug B and the Unified Namespace: Sparkplug B at the edge, an ISA-95 asset model above it, applications on top.

The broker connects these layers. The modelling layer is what makes the namespace usable by SCADA, historians, analytics and AI applications.

Sparkplug B and OPC UA: where each fits

The two are complementary, and most brownfield plants run both.

  OPC UA Sparkplug B
Communication model Client/server (plus PubSub) Publish/subscribe through a broker
Strength Rich information models, browsing, method calls, historical access, alarms and conditions Lightweight, report-by-exception, many-to-many distribution, state awareness
Typical location Control network: DCS, PLC, SCADA, historian interfaces Edge to site and site to enterprise, including remote and low-bandwidth sites
Network pattern Client connects to each server Edge Nodes connect outbound to one broker

A practical pattern: read field and control data over OPC UA, Modbus, DNP3 or vendor protocols at the edge, then publish it as Sparkplug B to a central broker. Clients that need OPC UA browsing or historical access keep an OPC UA endpoint.

CTA: More detail in combining OPC UA, MQTT and Sparkplug.

Design considerations and limits

Sparkplug B solves interoperability at the edge, but a production architecture still needs decisions in five areas:

  • Binary payloads are not human-readable. Debugging needs a Sparkplug-aware client or decoder. IT consumers that expect JSON need a translation layer.
  • The namespace is not an asset model. Group and Edge Node IDs follow the network, not the plant. Plan the ISA-95 context layer separately.
  • The Primary Host matters. Define which application is the Primary Host and how Edge Nodes behave when it is offline, including local buffering.
  • Security is not part of the specification. Sparkplug B relies on the MQTT layer: enable TLS, authentication and topic-level access control on the broker, and place it correctly across the IT/OT boundary.
  • Not every “MQTT-capable” device speaks Sparkplug B. Many devices publish plain MQTT or JSON. A conversion layer at the edge brings them into the same namespace.

Sparkplug B with SIOTH® and the MQTT Universal Broker

SIOTH® (Smart IoT Highway) is Integration Objects’ industrial integration platform. It covers the full Sparkplug B architecture in one installation: field protocols, Sparkplug B publishing, the broker, the asset model and the applications that consume the data. Integration Objects is a member of the Eclipse Foundation, which maintains the Sparkplug specification.

SIOTH Sparkplug B architecture with Data Flow, MQTT Universal Broker and ISA-95 Data Model
Figure 5. Sparkplug B architecture on SIOTH®: from field devices and third-party Edge Nodes to every consumer.

MQTT Universal Broker

The MQTT Universal Broker is a configurable server within SIOTH® Data Flow. It provides:

  • MQTT Standard and Sparkplug B on the same broker
  • Eclipse Sparkplug B certified
  • TCP and WebSocket endpoints
  • TLS/SSL encryption, basic authentication and MQTT Last Will and Testament

SIOTH® as a Sparkplug B Edge Node

The MQTT connector in SIOTH® Data Flow publishes Sparkplug B. Devices that speak only Modbus, DNP3, OPC Classic, OPC UA, IEC 61850 or Siemens S7 can therefore join a Sparkplug B architecture through SIOTH®, with no extra gateway per device family.

The four SIOTH® modules in a Sparkplug B architecture

SIOTH® module Role in a Sparkplug B architecture
Data Flow Connects 100+ OT protocols (OPC UA, OPC Classic DA/AE/HDA, Modbus TCP/RTU, DNP3, IEC 60870-5-104, IEC 61850, Siemens S7 and more), publishes Sparkplug B through its MQTT connector, and hosts the MQTT Universal Broker. Store-and-forward buffering covers intermittent links. Also hosts the OPC UA Universal Server for clients that need a single OPC UA endpoint.
Data Model Adds ISA-95 compatible asset context on top of Sparkplug B metrics, which turns edge data into a usable Unified Namespace.
Rule and Workflow Engine Runs expert rules, scripts and ML models on live data.
Unified HMI Web-based SCADA and dashboards, accessible from any device.

Outbound, SIOTH® writes to historians (native connectors for AVEVA PI, AVEVA PI AF and InfluxDB), relational databases, Apache Kafka, Azure Event Hub and REST APIs.

Security across the IT/OT boundary. SIOTH® supports DMZ architectures with a protocol break at the integration boundary, end-to-end TLS, role-based access control, Active Directory and OAuth 2.0 authentication and a full audit trail. The platform is IEC 62443-aligned. This addresses the point Sparkplug B leaves to the implementation: securing the broker and the path to it.

Getting started: a seven-step checklist

  1. Inventory sources. List devices, PLCs, RTUs, OPC servers and their protocols, per site and network zone.
  2. Define the group and Edge Node naming convention. Keep IDs stable; they appear in every topic.
  3. Choose the Primary Host Application and define Edge Node behavior while it is offline.
  4. Place the broker in the architecture. Decide its network zone, TLS certificates, authentication and topic access rights.
  5. Design the asset model (ISA-95 levels, units, limits) that sits above the raw Sparkplug B metrics.
  6. Pilot one area. Validate birth and death behavior by disconnecting an Edge Node and checking that every consumer marks the data stale.
  7. Connect consumers: SCADA, historian, analytics, then scale site by site.

Frequently asked questions

It identifies the payload definition. An earlier version, Sparkplug A, used a different payload format and is no longer in use. The topic prefix spBv1.0 refers to Sparkplug B.

The Eclipse Foundation, through the Sparkplug Working Group. The current version, Sparkplug 3.0, has also been published as the international standard ISO/IEC 20237.

No. Any standard MQTT broker can route Sparkplug B messages. A Sparkplug-aware broker adds functions such as retaining birth certificates for late-joining clients.

The specification does not define security. It relies on the MQTT layer: TLS encryption, client authentication and access control on the broker, plus correct network segmentation between OT and IT.

No. It is a common way to feed a UNS from the edge. The UNS also needs an asset model, usually ISA-95, that gives the data business context.

Yes. The MQTT connector in SIOTH® Data Flow publishes Sparkplug B, and the SIOTH® MQTT Universal Broker, a configurable server within Data Flow, supports MQTT Standard and Sparkplug B and is Eclipse Sparkplug B certified.

Related Posts