MQTT & Sparkplug B
AnywhereSCADA uses MQTT with the Sparkplug B specification as its connectivity layer. Every space comes with a fully managed MQTT broker — no infrastructure to set up or maintain.
Connection Details
Each space provides a dedicated set of credentials:
| Setting | Value |
|---|---|
| Host | mqtt1.anywherescada.joyautomation.com |
| Port | 8883 (MQTT over TLS) |
| Username | Your space's short ID (e.g. abc1234) |
| Password | Auto-generated (visible in space settings) |
| Protocol | Sparkplug B over MQTT 3.1.1 |
Find your credentials on the space settings page under MQTT Connection.

What Is Sparkplug B?
Sparkplug B is an open specification built on top of MQTT that defines:
- Topic namespace — a structured hierarchy:
spBv1.0/{group}/{message_type}/{node}/{device} - Payload encoding — Protocol Buffers (protobuf) for efficient, typed data
- Birth/death certificates — automatic online/offline detection for nodes and devices
- State management — SCADA host state awareness for store-and-forward
Message Types
| Message | Direction | Purpose |
|---|---|---|
NBIRTH | Node → Broker | Node comes online with its metric schema |
NDEATH | Broker → Clients | Node went offline (Last Will & Testament) |
DBIRTH | Node → Broker | Device comes online with its metrics |
DDEATH | Broker → Clients | Device went offline |
NDATA | Node → Broker | Node metric value update |
DDATA | Node → Broker | Device metric value update |
NCMD | SCADA → Node | Command to a node |
DCMD | SCADA → Device | Command to a device |
STATE | SCADA Host | SCADA application state (online/offline) |
Supported Data Types
AnywhereSCADA stores and displays the following Sparkplug B metric types:
- Float / Double — floating-point values (temperature, pressure, flow rates)
- Integer — signed/unsigned 8, 16, 32, and 64-bit integers
- Boolean — true/false states (valve open/closed, motor running/stopped)
- String — text values
Connecting a Device
Step 1: Configure Your MQTT Client
Use any Sparkplug B-compliant client. Popular options:
- Eclipse Tahu — reference Sparkplug B implementation (Java, C, Python)
- Cirrus Link MQTT Modules — Ignition MQTT Transmission/Engine
- Custom clients — any MQTT library + Sparkplug B protobuf encoding
Configure the client with your space's MQTT credentials (host, port, username, password).
Step 2: Publish Birth Certificates
When your node connects, it should publish:
- NBIRTH — declares the node and its metric schema
- DBIRTH — declares each device and its metrics
AnywhereSCADA uses birth certificates to build the network topology and display metrics.
Step 3: Publish Data
Send NDATA or DDATA messages whenever metric values change. AnywhereSCADA receives updates in real time and displays them on the dashboard.

Topic Namespace
Sparkplug B topics follow this structure:
spBv1.0/{group_id}/{message_type}/{edge_node_id}
spBv1.0/{group_id}/{message_type}/{edge_node_id}/{device_id}
- group_id — logical grouping (e.g.
Plant1,BuildingA) - edge_node_id — the connecting application or gateway
- device_id — an individual device behind the edge node
TLS / Security
All connections use TLS on port 8883. Unencrypted connections are not accepted. Each space's credentials are isolated — devices in one space cannot access another space's data.
Troubleshooting
Device Not Appearing
- Verify your credentials (username = space short ID, not your email)
- Confirm you're connecting to port
8883with TLS enabled - Check that your client publishes proper
NBIRTH/DBIRTHmessages - Look at the Network Visualization page for connection status
Metrics Not Updating
- Ensure you're sending
DDATAorNDATAmessages after the initial birth - Verify the metric names in data messages match those declared in the birth certificate
- Check your client's MQTT connection status — reconnects require re-publishing births
Connection Drops
- Trial accounts: connections are terminated after the 8-hour window expires. Start a new session or upgrade to Production.
- Production accounts: check your network connectivity and MQTT client keep-alive settings