Skip to main content
Version: Next

MQTT & Sparkplug B

One connection type covers both classic MQTT (you choose the topics and payload shape) and Sparkplug B (a self-describing convention with birth/death certificates and metric metadata). The payload format switch decides which.

Configuration

FieldDescription
NameConnection identifier.
BrokerHostname or IP.
Port1883 plain, 8883 TLS, 9001/443 for WebSocket transports.
Protocoltcp, ssl/tls, ws, wss.
Client IDOptional. Leave blank for a generated one. Must be unique on the broker.
Username / PasswordOptional broker credentials.
Clean sessionOn: no persistent broker-side subscription state. Off: the broker queues messages for this client ID while it is away.
Keep aliveSeconds between pings.
QoS0 at most once, 1 at least once, 2 exactly once.
Payload formatmqtt (classic) or sparkplug_b.

Sparkplug-only fields

FieldDescription
Group filterSubscribe to spBv1.0/{group}/# instead of everything. Essential on a busy shared broker.
Primary host IDIf set, QUBIQ advertises spBv1.0/STATE/{id}, so edge nodes know a primary application is online.
Rebirth on sequence gapauto (detect the edge node's scheme — default), on (always request rebirth), off (never).

Classic MQTT

In classic mode, a tag binding names the topic and, for structured payloads, a path into it.

FieldExample
Addressplant/line1/motor1/speed
Polling modesubscribe (normal) or write for publish-only tags
QoSPer-binding override of the connection default
JSON pathExtracts a field from a JSON payload, e.g. $.data.speed

Wildcards (+, #) are for subscription scope, not for tag addresses — a tag must resolve to one value.

Sparkplug B

Sparkplug adds structure that QUBIQ uses automatically:

  • Birth certificates (NBIRTH/DBIRTH) declare every metric with its name, data type, engineering unit and properties. QUBIQ reads them, so discovered metrics arrive already typed.
  • Death certificates (NDEATH/DDEATH) signal that an edge node or device has gone away. Bound tags go to Bad quality immediately, instead of silently holding a stale value.
  • Sequence numbers detect lost or out-of-order messages. On a gap, QUBIQ requests a rebirth so state is resynchronised rather than drifting.
  • State topic. With a primary host ID configured, QUBIQ publishes its own STATE, which is what lets compliant edge nodes decide whether a primary application is listening.

Discovery

Sparkplug discovery in the connection's editor (needs View connections) returns the groups, edge nodes, devices and metrics observed from birth certificates. Discovery is how you populate the namespace from a Sparkplug plant without typing a single topic.

A Sparkplug tag address follows the hierarchy:

{group}/{edge_node}/{device}/{metric}

Choosing between them

Use classic MQTT whenUse Sparkplug B when
The publisher is not Sparkplug-awareEdge devices already speak it
Payloads are your own JSON or scalarsYou want typed, self-describing metrics
Topic structure is fixed and smallYou want automatic discovery of a large plant
You do not need liveness semanticsYou need death certificates to invalidate stale values

If you control both ends and the deployment is more than a handful of tags, Sparkplug pays for itself in the metadata alone.

TLS

Set the protocol to ssl/tls (or wss) and use the TLS port. QUBIQ validates the broker's certificate chain. For a private CA, ensure the CA is trusted by the host — QUBIQ uses the system trust store.

Quality and liveness

ConditionTag quality
Message received and parsedGood
Broker connection lostBad after the connection is marked down
Sparkplug DDEATH/NDEATH for the deviceBad
Payload could not be parsed or the JSON path did not resolveBad
No message yet since subscribeLast known, or Uncertain until the first arrives

Because MQTT is push-only, a tag that never changes also never publishes. If you need to distinguish "stable" from "dead", set stale after on the tag so silence becomes visible. → Tag properties

Troubleshooting

SymptomCheck
Connects then immediately drops, repeatedlyDuplicate client ID — another client is stealing the session. Set a unique one.
Subscribed but no dataTopic mismatch (MQTT topics are case-sensitive), or the publisher only sends on change and nothing has changed.
Sparkplug metrics never appearNo birth certificate received. Restart the edge node, or force a rebirth.
Sequence gaps logged repeatedlyNetwork loss or an edge node restarting. Leave rebirth on auto.
Values stop after a broker restartClean session on, and the publisher used retained messages that were lost.
TLS handshake failurePrivate CA not in the host trust store, or hostname mismatch.

Next

Modbus · Binding tags