This document provides information on configuring and running the MQTTspB Simulator, including its integration with Data Explorer Tools and runtime behavior. The simulator can be started from the DataExplorer UI or by executing it with command line parameters, creating an MQTTspB Client that connects to a configured broker and publishes simulated data to mapped topics.
On this page:
The following features are supported:
The MQTTspB Simulator is integrated with the Data Explorer Tools, making testing easier and faster by enabling the publication of up to 30,000 simulated values to the MQTT broker from the same design environment. This facilitates project testing, communication validation with the software platform MQTT client, and testing of the new Dynamic Tag Provider functionality with MQTT.
You can start the simulator using the Designer at DataExplorer → MQTT tools, or directly thought its executable at the product installation protocols folder MQTTspBSimulator.exe
Closing that window will terminate the execution the simulator. You can minimize if you want to keep the simulation in background. |
The Execution window has the Data TreeView and EventLog at the button, and configuration panels for:
The Simulation Control in the MQTTspB Simulator allows users to manage the data publication process.
When the simulator is connected with a Broker, those options are disabled for editing.
You can Connect or Disconnect with the Broker with the buttons at the top of Window.
MQTTspB Simulator - Connection Parameters Configuration | |
---|---|
Broker URL | MQTT Broker (Server) Default value is loopback (local) ip (127.0.0.1). |
Broker Port | Username defined on the Broker. This will be requested if the Broker needs this configuration (optional). |
Username | Allows to enter the username required for authentication with the MQTT broker. This is used to verify the identity of the client connecting to the broker. |
Password | Password defined on the Broker. This will be requested if the Broker needs this configuration (optional). |
Start Minimized | Application starts minimized (valid for the next time the application is started). |
BlockConfigurationField | Make configuration fields read-only. |
Connect On Startup | MQTTspB Client tries to connect to Broker automatically when application is started (valid for the next time the application is started). |
Publish Data On Startup | MQTTspB Client tries to publish Data to Broker automatically when application is started (valid for the next time the application is started). |
The Simulator does not support SSL Protocols. |
The Connection Parameter are only applied when starting the connection with the Broker. |
The Payload Settings of the MQTTspB Simulator Configuration dialog allows users to manage settings related to the data payload being sent, such as GroupID, Number of NodesIDs and the Edit Data Structure button.
GroupID: Specifies a unique identifier for a group of clients or devices. This identifier helps organizing and managing clients within the same group.
Number Of NodeIDs: Indicates the number of nodes or individual devices within the specified group. This value helps structuring the data to be sent, ensuring that the correct number of nodes is included in the payload.
Edit Data Structure: This button allows users to modify the data structure that will be used in the payload. Clicking this button opens a configuration popup where users can define or adjust the data points, types, and hierarchical organization of the data to be published.
The structure is defined based on a hierarchical structure illustrated below:
<GroupID Name="<GroupName>"> |-- <NodeIDs> | |-- <NodeID Name="<NodeName>"> | | |-- <DeviceIDs> | | | |-- <DeviceID Name="<DeviceName>"> | | | | |-- <Variables> | | | | | |-- Var1 | | | | | |-- ... | | | | | |-- VarN | | | |-- <DeviceID Name="<DeviceName2>"> | | | |-- <Variables> | | | | | |-- Var1 | | | | | |-- ... | | | | | |-- VarX | |-- <NodeID Name="<NodeName2>"> | |-- <DeviceIDs> | | |-- <DeviceID Name="<DeviceName>"> | | | |-- <Variables> | | | | | |-- Var1 | | | | | |-- ... | | | | | |-- VarY | | |-- <DeviceID Name="<DeviceName>"> | | |-- <Variables> | | | | | |-- Var1 | | | | | |-- ... | | | | | |-- VarZ |
To edit the structure, click on the Edit Data Structure button to customize your Payload at the dialog window, describe in next topic. Alternatively, you can modify directly the XML configuration file.
The DataStructure can only be edited while the OPC Server is not running. |
There are some properties to be defined for Variables:
This configuration popup in the MQTTspB Simulator allows users to define and customize the data payload that the simulator will publish to the MQTT broker. Here is a detailed description and explanation of each section and its components:
When defining many nodes or properties, it likely easier to edit directly the XML configuration file, TMQTTBroker.config.xml, located the ToolSettings folder |
In this region, you will be able to see the Payload Structure existing in the Broker.
The Simulator is Write-Only! You will not be able to subscribe to any topic; only publishing is allowed. |
This log displays useful information regarding the MQTTspB Simulator activity.
The MQTTspB Simulator can be executed with custom parameters through the command line. The syntax is as follows:
"..\MQTTspBSimulator.exe" /param1:<param1Value> ... /paramN |
The existing parameters are listed below:
Usage:
"..\MQTTspBSimulator.exe" /Minimized /AutoStart /Config:"C:\Documents\CustomConfig.xml" |
The input parameters are not case-sensitive |
With a custom configuration file, you will be able to define your own Broker Configuration and DataStructure. The syntax for the configuration is described below:
<?xml version="1.0" encoding="utf-8"?> <MQTTspBSimulator> <ConnectionParameters> <BrokerUrl>127.0.0.1</BrokerUrl> <BrokerPort>1883</BrokerPort> <UserName></UserName> <Password></Password> </ConnectionParameters> <PayloadSettings> <GroupID Name="GroupID"> <NodeIDs> <NodeID Name="NodeID1"> <DeviceIDs> <DeviceID Name="DeviceID1"> <Variables> <Variable Name="Name" Type="string" VariationFlag="false" InitialValue="City"/> <Variable Name="State" Type="boolean" VariationFlag="true"/> <Variable Name="Latitude" Type="double" VariationFlag="true" Min="-5" Max="2" InitialValue="0"/> <Variable Name="Longitude" Type="double" VariationFlag="true" Min="40" Max="43" InitialValue="40"/> <Variable Name="PanelPower" Type="double" VariationFlag="true" Min="200" Max="500" InitialValue="200"/> <Variable Name="PanelVoltage" Type="double" VariationFlag="true" Min="-220" Max="220" InitialValue="0"/> <Variable Name="PanelCurrent" Type="double" VariationFlag="true" Min="-10" Max="10" InitialValue="0"/> <Variable Name="TemperaturePort" Type="integer" VariationFlag="true" Min="15" Max="35" InitialValue="0"/> </Variables> </DeviceID> <DeviceID Name="DeviceID2"> <Variables> <Variable Name="Name" Type="string" VariationFlag="false" InitialValue="City"/> <Variable Name="State" Type="boolean" VariationFlag="true"/> <Variable Name="Latitude" Type="double" VariationFlag="true" Min="-5" Max="2" InitialValue="0"/> </Variables> </DeviceID> </DeviceIDs> </NodeID> <NodeID Name="NodeID2"> <DeviceIDs> <DeviceID Name="DeviceID1"> <Variables> <Variable Name="Name" Type="string" VariationFlag="false" InitialValue="City"/> <Variable Name="State" Type="boolean" VariationFlag="true"/> <Variable Name="Latitude" Type="double" VariationFlag="true" Min="-5" Max="2" InitialValue="0"/> <Variable Name="Longitude" Type="double" VariationFlag="true" Min="40" Max="43" InitialValue="40"/> <Variable Name="PanelPower" Type="double" VariationFlag="true" Min="200" Max="500" InitialValue="200"/> <Variable Name="PanelVoltage" Type="double" VariationFlag="true" Min="-220" Max="220" InitialValue="0"/> <Variable Name="PanelCurrent" Type="double" VariationFlag="true" Min="-10" Max="10" InitialValue="0"/> <Variable Name="TemperaturePort" Type="integer" VariationFlag="true" Min="15" Max="35" InitialValue="0"/> </Variables> </DeviceID> <DeviceID Name="DeviceID2"> <Variables> <Variable Name="Name" Type="string" VariationFlag="false" InitialValue="City"/> <Variable Name="State" Type="boolean" VariationFlag="true"/> <Variable Name="Latitude" Type="double" VariationFlag="true" Min="-5" Max="2" InitialValue="0"/> </Variables> </DeviceID> </DeviceIDs> </NodeID> </NodeIDs> </GroupID> </PayloadSettings> <SimulatorControl> <ConnectOnStartup>false</ConnectOnStartup> <PublishDataOnStartup>false</PublishDataOnStartup> <Minimized>false</Minimized> <BlockConfigurationFields>false</BlockConfigurationFields> </SimulatorControl> </MQTTspBSimulator> |
In this section: