1. Set Up the MQTT Broker and Simulator
Start the Built-in Broker
- Navigate to Data Explorer → MQTT Tools
- Click Run Local Built-in Broker to start the broker
- Connect to the broker (connection will show as established)
Run the MQTT Publisher Simulator
- Start the MQTT Publisher Simulator
- Verify data is publishing - you'll see:
- Cities (e.g., Barcelona)
- Solar panels with properties:
- Name
- Power
- Temperature
- Real-time changing values
- Navigate to Devices → Protocols
- Select MQTT Message Queuing Telemetry Transport
- Create channel:
- Name:
MQTTClient
- Protocol:
MQTT Client
- Go to Device → Nodes
- Name:
IoT_Sensors
- Open PrimaryStation and configure:
- BrokerURL: 127.0.0.1
- Port: 502
- ClientID: FrameworX
3. Create Points
- MQTT broker available (or use public test broker)
- Basic understanding of MQTT topics
- Navigate to Devices → Channels
- Create channel:
- Name:
MQTTClient
- Protocol:
MQTT Client
- Settings:
- Broker URL:
test.mosquitto.org
(or your broker) - Port: 1883 (or 8883 for SSL)
- Client ID:
FrameworX_001
- Keep Alive: 60 seconds
Step 2: Set Authentication (if required)
For secured brokers:
- Username: Your username
- Password: Your password
- SSL/TLS: Enable if using port 8883
- Certificates: Browse to certificate files
Step 3: Subscribe to Topics
- Go to Devices → Nodes
- Create subscription node:
- Name:
IoT_Sensors
- Channel:
MQTTClient
- Subscribe Topic:
sensors/+/temperature
- QoS: 1
The '+' wildcard subscribes to all sensors.
Step 4: Create Points for Subscribed Data- Navigate to Devices → Points
- Add points for each expected topic:
Temperature Tank 1 Sensor:
- Name: Sensor1_TagName:
TankFarm/Tank1/Temp
- Node:
IoT_Sensors
- Topic:
sensorsTankFarm/sensor1Tank1/temperature
- Data TypeAccessType: Double
- JSON Path:
$.value
(if JSON payload)
Humidity Temperature Tank 2 Sensor:
- Name:
Sensor1_Humidity
TankFarm/Tank2/Temp
- Node:
IoT_Sensors
- Topic:
sensorsTankFarm/sensor1Tank2/humiditytemperature
Data Type - AccessType:
Double
Step 5: Publish Tag Values
- Create publish node:
- Name:
SCADA_Publisher
- Channel:
MQTTClient
- Publish Mode: On Change
- Configure published points:
- Tag: Select tag to publish
- Topic:
scada/line1/production
- QoS: 1
- Retain: True (optional)
Step 6: JSON Payload Handling
For complex JSON:
json
{
"deviceId": "sensor1",
"temperature": 22.5,
"humidity": 45,
"timestamp": "2024-01-01T12:00:00Z"
}
Configure point:
- JSON Path for temperature:
$.temperature
- JSON Path for humidity:
$.humidity
- JSON Path for timestamp:
$.timestamp
Temperature Tank 3 Sensor (write):
- Name:
TankFarm/Tank3/Temp
- Node:
IoT_Sensors
- Topic:
TankFarm/Tank3/temperature
- AccessType: Write
4.
Step 7: Test Connection
- Start Runtime
- Open Devices → Devices Monitor
- Use MQTT client tool (like MQTT Explorer) to:
- Publish test messages
- Verify FrameworX publishes
Sparkplug B Configuration
For industrial MQTT:
- Select Protocol:
MQTT SparkplugB
- Configure:
- Group ID:
Plant1
- Edge Node ID:
Line1
- Device ID:
PLC1
Best Practices
- Use meaningful topic hierarchies
- Set appropriate QoS levels
- Enable retain for configuration data
- Implement Last Will and Testament
- Use SSL/TLS in production
Next Steps
[AWS IoT Core Connector] - Cloud integration[Enrich Data & Scripts] - Process MQTT data[Secure & Deploy] - Production security