What is MQTT?

MQTT is a messaging-based communication protocol that enables information produced by a device or application to be delivered to other devices and applications.

A key feature of MQTT is that communicating devices do not have to connect directly to each other. Messages are transported through a central MQTT Broker.

A device can publish data to a specific subject, known as a Topic. Other devices or applications that need the data can receive it by subscribing to the same Topic.

This architecture allows data-producing devices and data-consuming applications to be developed independently. For this reason, MQTT is widely used in IoT, IIoT, SCADA, data acquisition, machine communication, and distributed systems.

How Does MQTT Work?

MQTT communication is based on three main components: Publisher, Subscriber, and Broker.

Publisher

A Publisher is a device or application that produces data and sends it to the MQTT Broker through a specific Topic.

  • PLC
  • RTU
  • IoT sensor
  • Gateway
  • SCADA system
  • Industrial application

MQTT Broker

The Broker is the central messaging component of an MQTT system. It receives messages from Publishers and forwards them to Subscribers that are subscribed to the relevant Topics.

  • Manages Client connections
  • Tracks Topic subscriptions
  • Forwards messages to relevant Subscribers
  • Applies QoS rules
  • Can manage session and message states

Subscriber

A Subscriber is an MQTT Client that subscribes to a Topic or Topic filters of interest and receives messages published to those Topics.

  • SCADA
  • HMI
  • Database applications
  • Dashboard systems
  • Analytics applications
  • Cloud applications

MQTT Data Addressing for EOS Software (M#)

In the EOS SCADA MQTT client, the data address is created using the MQTT topic name. The address starts with the M# prefix followed by the MQTT topic.

M#TOPIC/PATH

For example:

M#WindFarm/WF01/Station/AmbientTemperature

The MQTT topic must have a hierarchical structure. Topic levels are separated by the / character.

A direct relationship can be established between the data address in EOS SCADA and the topic on the MQTT broker.

Publish / Subscribe Model

One of the most important differences between MQTT and traditional device-to-device communication methods is that MQTT uses the Publish / Subscribe model.

A Publisher does not send data directly to a specific device. Instead, it publishes the message to a Topic. The Broker then forwards the message to all Subscribers that are subscribed to that Topic.

For example, a wind turbine can publish its current power output through the plant/turbine01/power Topic. SCADA, database, and analytics applications can subscribe to the same Topic and use the data independently.

Example MQTT Communication

Publisher: Wind Turbine

Topic: plant/turbine01/power

Payload: 2450

Subscriber: SCADA, Data Logger, Dashboard, or analytics application

What is an MQTT Topic?

In MQTT, the term Topic is used to identify the information channel to which data belongs. A Topic can be considered similar to a data address in traditional industrial protocols; however, in MQTT it primarily acts as a logical channel through which messages are routed.

Topics are generally created using a hierarchical structure. The / character is used as the level separator.

Example Topic Structure

plant01/turbine01/power

plant01/turbine01/wind_speed

plant01/turbine01/temperature

plant01/turbine01/status

Subscribers can subscribe not only to a single Topic, but also to a group of Topics by using Topic filters. MQTT provides wildcard characters such as + and # for this purpose.

MQTT QoS Levels

MQTT defines three different Quality of Service (QoS) levels so that the message delivery method can be selected according to the application's requirements.

QoS 0 — At Most Once

The message is sent with the lowest possible communication overhead. The message may not reach the destination. This level can be suitable for continuously updated real-time measurements.

QoS 1 — At Least Once

Delivery of the message to the receiving side is ensured; however, the same message may be received more than once in some situations. The application must be able to handle duplicate messages.

QoS 2 — Exactly Once

This is the highest QoS level, designed to ensure that a message is delivered exactly once. It generates more communication overhead compared to the other levels.

Retained Message

In MQTT, the Broker can be configured to store the last message published for a Topic. This feature is called a Retained Message.

This allows a new Subscriber to receive the latest state of a Topic immediately after subscribing, without having to wait for the Publisher to send the data again.

This feature is particularly useful for sharing device status, operating mode, latest measurement value, or similar state information. The MQTT standard defines the delivery of retained messages to clients that newly subscribe to a Topic.

MQTT and Industrial Automation

Although MQTT was originally developed to address messaging requirements in low-bandwidth and remote systems, it is now also used in manufacturing, energy, automation, and Industrial IoT applications.

In industrial systems, information collected from field devices, PLCs, RTUs, gateways, or SCADA systems can be transferred to a centralized MQTT infrastructure.

SCADA Data Distribution

Distribution of process data collected by SCADA to different applications through MQTT.

IoT and IIoT

Scalable data communication between field devices and centralized or cloud applications.

Data Acquisition

Transferring data collected from sensors, PLCs, RTUs, and other devices to centralized data acquisition systems.

Data Analytics

Transferring industrial data to analytics, reporting, dashboard, and artificial intelligence applications.

Distributed Systems

Communication between multiple facilities, machines, or applications through a common messaging infrastructure.

Bidirectional Communication

MQTT can be used not only to collect data from devices, but also to send messages from applications to devices.

MQTT and SCADA

When MQTT and SCADA systems are used together, data collected by SCADA can be easily transferred to different software systems.

For example, a SCADA system can send field data received from Modbus, OPC UA, IEC 60870, or another protocol to a Broker as an MQTT Publisher. Data Logger, Dashboard, reporting, analysis, or artificial intelligence applications that use the same data can operate as MQTT Subscribers.

Example Industrial Architecture

PLC / RTU / Sensor
↓
SCADA / Gateway
↓
MQTT Broker
↓
SCADA • Data Logger • Dashboard • Database • AI

In this architecture, MQTT acts as a messaging layer that reduces the direct dependency between applications.

MQTT and Sparkplug

MQTT itself does not mandate how message content should be structured or which Topic naming standard industrial devices must use. This can create a need for additional standardization to achieve interoperability between systems from different manufacturers.

Sparkplug is an open specification designed to enable MQTT infrastructure to be used in a more standardized and interoperable manner, particularly in industrial automation and IIoT applications.

Sparkplug provides definitions for an industrial Topic Namespace, Payload, and State Management on top of MQTT. Developed by the Eclipse Foundation, Sparkplug is specifically designed for SCADA and real-time industrial systems. :contentReference[oaicite:5]{index=5}

MQTT Security

When MQTT is used in industrial systems, it is important not only for communication to function, but also for the communication to be secure.

TLS

MQTT connections can be encrypted using TLS, helping protect data transmitted over the network.

Authentication

Clients connecting to the Broker can be authenticated, and user access can be controlled.

Access Control

It is possible to restrict which Topics Clients can publish data to or which Topics they can read data from.

The security of an MQTT infrastructure, especially in production facilities and critical infrastructure, should be designed by considering network architecture, Broker configuration, authentication, access permissions, and certificate management together. The ability to use MQTT with TLS and modern authentication methods is part of the security approach supported by the standard ecosystem. :contentReference[oaicite:6]{index=6}

MQTT Versions

MQTT has several versions. Today, the most commonly encountered versions are MQTT 3.1.1 and MQTT 5.0. MQTT 5.0 was published as a standard by OASIS on March 7, 2019. :contentReference[oaicite:7]{index=7}

MQTT 3.1.1

  • One of the widely used MQTT versions.
  • Has a simple and extensive client/Broker ecosystem.
  • Widely used in IoT and industrial applications.

MQTT 5.0

  • A more advanced version of the MQTT standard.
  • Provides additional capabilities for message properties and connection management.
  • Includes enhanced features for modern IoT and distributed applications.

Advantages of MQTT

Lightweight

Its small message headers and simple protocol structure result in low communication overhead.

Flexible Architecture

The ability of Publishers and Subscribers to operate independently makes it easier to build distributed systems.

Scalability

Its architecture is suitable for connecting a large number of devices and applications to the same Broker infrastructure.

Use in Poor Networks

It is designed with low-bandwidth and unreliable networks in mind.

Many-to-Many Data Distribution

It makes it easier to distribute the same data to multiple applications or systems.

Broad Software Ecosystem

MQTT Client and Broker solutions are available for different operating systems, programming languages, devices, and applications.

MQTT Tools

This section will provide tools for testing MQTT communication, monitoring Topics, publishing messages, subscribing to messages, and developing MQTT communication for industrial applications.

MQTT Tools Coming Soon

MQTT Client, MQTT Publisher, MQTT Subscriber, MQTT Broker testing tools, and utility software for industrial communication applications will be provided here.

MQTT in Brief

MQTT is a lightweight and flexible communication protocol that enables devices and applications to exchange messages through a Broker rather than establishing direct connections with each other.

The Publisher publishes data to a Topic, while the Subscriber subscribes to the Topics it needs. The Broker handles message distribution between these two sides.

This architecture makes MQTT particularly useful for IoT, Industrial IoT, SCADA, data collection, remote devices, energy systems, machine communication, and distributed industrial applications.

Complementary specifications such as Sparkplug can also be used to enable MQTT to provide more standardized data and state management in industrial applications. :contentReference[oaicite:8]{index=8}