MQTT is an open standard messaging protocol. MQTT was standardized as open source under the organization for the Advancement of Structured Information Standards (OASIS) in 2013. OASIS still manages the MQTT standard. It is designed for connections with remote locations and the network bandwidth is limited. MQTT protocol provides a lightweight method of carrying out messaging using a publish/subscribe model. It is event-driven and there is no periodic or ongoing data transmission. This keeps the transmission amount in a minimum.
There are two types of systems defined in MQTT architecture:
MQTT broker
It is a server that receives all messages from the clients and then routes the messages to the appropriate destination clients.
MQTT Client
It is any device that runs an MQTT library and connects to an MQTT broker over a network. Clients do not communicate directly with each other, but rather connect to the broker. Each client may be either a publisher, a subscriber, or both.
By design, the MQTT specification does not dictate a Topic Namespace nor does it dictate any payload encoding. Therefore, Eclipse Foundation has launched Sparkplug Working Group.
MQTT Sparkplug is an open-source software specification. To have a common language for using MQTT, there are three goals of Sparkplug:
- Define a MQTT topic namespace for industrial application use cases
- Define an efficient MQTT payload
- Define MQTT state management in real-time SCADA implementation