Every Proxus Edge Gateway includes an embedded MQTT broker. This eliminates the need for external broker infrastructure like Mosquitto or EMQX. For more about the edge architecture, see Stateless Edge Architecture.
What Does the MQTT Broker Do?
The embedded broker serves as a bidirectional data gateway between your devices and the Proxus platform:
📥 Ingress (Device → Gateway)
Devices on the local network publish telemetry data to the Gateway:
- Device connects to
gateway-ip:1883using its unique Device Token - Device publishes JSON payload to the
telemetrytopic - Gateway parses, validates, and routes data through the Data Flow Pipeline
Device
PLC / IoT Sensor
MQTT Broker
Proxus Gateway
Data Pipeline
Parse & Validate
📤 Egress (Gateway → Unified Namespace)
The Gateway automatically republishes data to ISA-95 compliant topics:
- Data is transformed into per-metric telemetry messages
- Device status and lastSeen timestamps are published
- Optional summary message aggregates all metrics
- External systems (SCADA, MES, Analytics) can subscribe to these topics
Data Pipeline
Processed Data
MQTT Broker
UNS Publisher
UNS Consumers
SCADA / MES / Analytics
Key Benefits
Zero External Dependencies
No need to install or manage Mosquitto, EMQX, or other brokers.
Token-Based Authentication
Each device receives a unique token for secure connections.
UNS Ready
Automatic publishing to Unified Namespace with ISA-95 topic hierarchy.
For more about security aspects, see Security & Access Control.
Configuration
The MQTT broker is configured in Proxus-config.toml:
For a complete list of all available settings and environment variable overrides, see the Configuration Reference.
Basic Settings
[MQTTBroker]
MQTTBrokerPort = 1883
MasterToken = "your-master-token"
AllowAnonymous = false| Setting | Type | Default | Description |
|---|---|---|---|
| MQTTBrokerPort | int | 1883 | TCP port for MQTT connections |
| MasterToken | string | - | Shared token for development access |
| AllowAnonymous | bool | false | Allow unauthenticated connections |
Unified Namespace Settings
[UNS]
# Payload format: "JSON" or "SparkplugB"
UNSPayloadFormat = "JSON"
# SparkplugB specific settings
UNSGroupId = "ProxusGroup"
UNSEdgeNodeId = "ProxusEdge_MachineName"
# Retain messages on MQTT broker
UNSRetainMessages = true| Setting | Type | Default | Description |
|---|---|---|---|
| UNSPayloadFormat | string | JSON | Payload format: JSON or SparkplugB |
| UNSGroupId | string | ProxusGroup | SparkplugB group identifier |
| UNSEdgeNodeId | string | auto | SparkplugB edge node identifier |
| UNSRetainMessages | bool | true | Retain last message per topic |
Performance Optimizations
[UNS.Optimizations]
# Thin payload removes context object from per-metric telemetry
TelemetryThinPayload = true
# Include ISA-95 context in summary messages
SummaryIncludeContext = true
# Throttle intervals (milliseconds, 0 = no throttling)
SummaryIntervalMs = 5000
LastSeenIntervalMs = 5000
# Publish status only when it changes
StatusOnChangeOnly = true
# Publish summary only when values change (hash-based)
SummaryOnlyOnChange = false| Setting | Type | Default | Description |
|---|---|---|---|
| TelemetryThinPayload | bool | true | Omit context from per-metric messages |
| SummaryIncludeContext | bool | true | Include ISA-95 context in summary |
| SummaryIntervalMs | int | 5000 | Summary publish throttle (ms) |
| LastSeenIntervalMs | int | 5000 | LastSeen publish throttle (ms) |
| StatusOnChangeOnly | bool | true | Only publish status on change |
Authentication Methods
1. Device Token (Recommended)
Each device configured in Proxus receives a unique Device Token. Use this token as the MQTT username when connecting. For more about device configuration, see Add Device.
Host: gateway-ip:1883
Username: device-token
Password: (not required)2. Master Token
For development or testing, you can use the MasterToken from configuration.
3. Anonymous
If AllowAnonymous = true, devices can connect without credentials. Use only in isolated networks. For more about authentication security, see Security & Access Control.
Publishing Telemetry
Devices publish JSON payloads to the telemetry topic:
{
"Temperature": 72.5,
"Pressure": 14.7,
"Status": "Running"
}The Gateway automatically:
- Parses the JSON payload
- Associates it with the authenticated device
- Routes it through the Data Flow Pipeline
- Publishes to Unified Namespace topics (if enabled)
Unified Namespace Publishing
The broker publishes data to ISA-95 compliant topics with category separation. For more information about the Unified Namespace concept, see Unified Namespace.
Telemetry Topics
Per-metric values and device summary:
v1/{enterprise}/{site}/{area}/{processCell}/{equipmentModule}/{deviceName}/telemetry/{metric}
v1/{enterprise}/{site}/{area}/{processCell}/{equipmentModule}/{deviceName}/telemetry/_summaryState Topics
Device status and last seen timestamps (retained):
v1/{enterprise}/{site}/{area}/{processCell}/{equipmentModule}/{deviceName}/state/_status
v1/{enterprise}/{site}/{area}/{processCell}/{equipmentModule}/{deviceName}/state/_lastSeenSparkplugB Support
If UNSPayloadFormat = "SparkplugB", the broker publishes using SparkplugB encoding:
spBv1.0/{GroupId}/DDATA/{EdgeNodeId}/{DeviceId}Health Monitoring
The MQTT broker monitors connected devices and tracks:
- Last Seen: Timestamp of last message received
- Connection Status: Online/Offline
- Message Rate: Messages per minute
Devices that stop sending data are automatically marked as offline. For more about monitoring and system health, see System Logs.