Comparison of MQTT clients in the context of Industrial IoT

Content

In the dynamic nature of MQTT, the right client can significantly increase development efficiency. This article provides an overview of the criteria for selecting the right MQTT client and a comparison of existing solutions. We differentiate between graphical clients and MQTT client libraries (“software MQTT clients”).

 

Graphical vs. Software MQTT Clients

Graphical MQTT clients are ideal for fast debugging, testing and visualization of data streams. These tools offer a user-friendly interface. This enables developers to analyze MQTT messages without the need for code and to establish connections to MQTT brokers. Software MQTT clients (or MQTT client libraries) enable programmatic control. Developers can seamlessly integrate them into existing software solutions to create customized and high-performance MQTT applications. They are ideal for automation, scalable applications and integration into backend systems.

The choice of the right client depends on the specific requirements and objectives of the project. While graphical MQTT clients facilitate development and troubleshooting, software libraries offer the flexibility and scalability required for complex and extensive IoT projects.

 

Top 5 Criteria for choosing the right MQTT Client

When selecting a suitable MQTT client, whether with a graphical user interface or not, the following 5 criteria should be taken into account.

Top 5 Criteria for MQTT Clients

1. Functionality

The functionality of an MQTT client must meet the requirements of the respective project. Important functions include:

  • MQTT versions: The client should support the common MQTT versions such as 3.1.1 and 5.0. This includes essential functions of the respective versions.
  • QoS support: Quality of Service (QoS) levels are crucial for the reliability of message transmission. A good client supports all QoS levels (0, 1 and 2).
  • WebSocket support: MQTT over WebSocket enables the use of MQTT in web-based applications.
  • SSL support: For secure connections, the client should support SSL for one-way and two-way SSL authentication.
  • Multiple clients: Support for simultaneous connections of multiple clients is essential for scalable applications.

 

2. Compatibility and Platform Support

A versatile MQTT client should be usable on different operating systems and in different programming languages:

  • Cross-platform: The client should be available on Windows, Linux, macOS (and possibly Android and iOS).
  • Programming language compatibility: Support for common programming languages such as Python, Java, JavaScript, C and C++ is important to ensure seamless integration into existing systems.

 

3. User-Friendliness and Documentation

User-friendliness and the quality of the documentation play a decisive role in the efficiency of development:

  • Ease of Use: Despite its extensive functions, the client should be easy to use.
  • Documentation and Support: Comprehensible and detailed documentation as well as tutorials, examples and community support facilitate implementation and troubleshooting.
  • Performance and stability: An MQTT client must be powerful and stable in order to be used in productive environments.

 

4. Performance and Stability

An MQTT client must be powerful and stable in order to be used in productive environments:

  • Efficiency: The client should conserve resources and be able to process a high message frequency efficiently.
  • Active development: Regular updates and an active development status are important in order to close security gaps and provide new functions.

 

5. Costs and Licensing

The costs and licensing conditions of an MQTT client must also be taken into account:

  • Free use or license costs: Depending on the budget and project requirements, a free or fee-based client can be considered.
  • License terms: The license terms (e.g. open source, commercial license) should be consistent with company policies and requirements.

 

 

Comparison of graphical MQTT Clients

In the following we compare the popular clients MQTTX (developed by EMQ, Download Link), MQTT Explorer (developed by Thomas Nordquist, Download Link) and HiveMQ WebSocket Client (developed by HiveMQ, Try Out), which differ in some aspects.

1. Functionality

  • MQTTX: Supports the common MQTT versions 3.1.1 and 5.0, QoS levels 0, 1 and 2, as well as SSL/TLS encryption. MQTTX also offers the option of executing scripts in JavaScript, which provides a certain degree of flexibility when automating tasks.
  • MQTT Explorer: Also supports MQTT versions 3.1.1 and 5.0, QoS levels and SSL/TLS encryption. However, the focus here is more on the visualization and analysis of MQTT messages. MQTT Explorer offers detailed statistics and the ability to monitor and analyze messages in real time.
  • HiveMQ WebSocket Client: Supports MQTT via WebSockets and offers basic functions for managing and monitoring MQTT connections. Ideal for quick tests and getting started with MQTT, but not as comprehensive as MQTTX or MQTT Explorer in terms of in-depth functions and analysis tools.

 

2. Platform Support

  • MQTTX: Available on Windows, macOS, Linux and mobile platforms such as Android and iOS. This broad platform support makes MQTTX a flexible choice for developers working on different devices.
  • MQTT Explorer: Mainly available on Windows, macOS and Linux. There is no support for mobile platforms, which limits its use to desktop environments.
  • HiveMQ WebSocket Client: As it is a browser-based client, it is platform-independent and can be used on any device with a modern web browser, which offers maximum flexibility.

 

3. User Interface and User-Friendliness

  • MQTTX: Provides a modern and intuitive user interface designed for ease of use. MQTTX has a tab-based view that allows users to manage multiple connections simultaneously. This is especially useful for users who frequently need to switch between different MQTT brokers.
  • MQTT Explorer: MQTT Explorer offers a hierarchical tree view of the MQTT topics, which provides a detailed overview of the message structure. This view is particularly helpful for analyzing and debugging complex MQTT messages. The user interface is also user-friendly, but designed more for in-depth analysis of the data.
  • HiveMQ WebSocket Client: This client offers an easy-to-use web interface that is specially designed for the use of MQTT via WebSockets. The user interface is lean and designed for quick tests and connections, but is less suitable for in-depth analyses.

 

4. Performance and Stability

  • MQTTX is resource-friendly and processes high message frequencies efficiently. It receives regular updates and benefits from the community support of EMQ.
  • MQTT Explorer is optimized for the visualization of data streams, but has slight performance losses at high frequencies. The community provides regular updates and ensures stable and reliable maintenance.
  • The HiveMQ WebSocket Client is resource-saving and efficient. HiveMQ provides regular updates and offers active community support.

 

Conclusion in the Comparison of Graphical MQTT Clients

In summary, MQTTX is ideal for users looking for a cross-platform and user-friendly solution for JavaScript automation tasks. MQTT Explorer is perfect for developers who need detailed analysis and visualization tools for MQTT messages. HiveMQ WebSocket Client, on the other hand, provides a quick and easy way to test and manage MQTT connections via WebSockets, ideal for quick tests in the browser.

 

 

Comparison of Software MQTT Clients

Below is a comparison of the software MQTT clients MQTT.js (Installation Guide), HiveMQ MQTT Client (GitHub) and M2Mqtt C# Library (GitHub) with regard to their most important features.

 

1. Functionality

All three clients – mqttjs/MQTT.js, HiveMQ MQTT Client and M2Mqtt C# Library – support the common MQTT versions 3.1.1 and 5.0 and offer comprehensive QoS support for all levels (0, 1 and 2). They also support SSL/TLS for secure connections and can manage multiple simultaneous connections. While the M2Mqtt C# library does not provide direct support for MQTT over WebSocket, mqttjs/MQTT.js and the HiveMQ MQTT Client do, making them ideal for web-based applications.

 

2. Platform Support

  • mqttjs/MQTT.js: This client is cross-platform and can be used on Windows, macOS, Linux and in browsers. The reason for this is that the client is written in JavaScript. This makes it particularly flexible for integration into a wide variety of environments.
  • HiveMQ MQTT Client: The HiveMQ MQTT Client is also cross-platform and supports Windows, macOS and Linux. The client offers SDKs for various programming languages, which facilitates integration into various development environments.
  • M2Mqtt C# Library: The M2Mqtt C# Library is primarily developed for the Windows platform and integrates seamlessly into C#-based development environments. It can also be used on other platforms on which the .NET Framework or .NET Core are available.

 

3. User-Friendliness and Documentation

  • mqttjs/MQTT.js: mqttjs/MQTT.js offers good user-friendliness with clear and detailed documentation. The community support is good, and there are many tutorials and examples that make it easy to get started.
  • HiveMQ MQTT Client: The HiveMQ MQTT Client is characterized by a user-friendly API and extensive documentation. There are many tutorials, examples and an active community that supports implementation and troubleshooting.
  • M2Mqtt C# Library: The M2Mqtt C# Library is well documented and offers numerous examples to help developers get started. It is very user-friendly, especially for developers who are familiar with the .NET environment.

 

4. Performance and Stability

All three clients are characterized by their high performance and stability. They are able to process high message frequencies efficiently. In addition, all three clients are regularly updated and further developed, ensuring their stability and security on an ongoing basis.

 

5. Costs and Licensing

  • mqttjs/MQTT.js & M2Mqtt C# Library: Both clients are open source and available free of charge. This makes them an attractive option for projects with a limited budget. The license conditions are compatible with most company guidelines and enable flexible use in different projects.
  • HiveMQ MQTT Client: The HiveMQ MQTT Client offers both free and commercial licenses. While the free version is suitable for smaller projects, the commercial license offers more extensive functions and support.

 

Conclusion in the Comparison of Software MQTT Clients

Compared to MQTT clients, MQTT.js is ideal for web-based applications and cross-platform projects thanks to its comprehensive JavaScript support. In contrast, the HiveMQ MQTT client is well suited for developers who require versatile platform and language support and a user-friendly API and comprehensive documentation. The M2Mqtt C# Library, on the other hand, is ideal for Windows-based projects and .NET developments. MQTT.js and M2Mqtt are both free and open source, while HiveMQ is available under both free and commercial licenses.

About i-flow: i-flow is an industrial software company based in southern Germany. We offer manufacturers the world’s most intuitive software to connect factories at scale. Over 400 million data operations daily in production-critical environments not only demonstrate the scalability of the software, but also the deep trust our customers place in i-flow. Our success is based on close collaboration with customers and partners worldwide, including renowned Fortune 500 companies and industry leaders like Bosch.

Try it out now - free trial version

Experience the unlimited possibilities that i-flow offers by taking a test for yourself. Test now for 30 days free of charge on your systems.

Your question has not been answered? Contact us.

Your Contact:

Marieke Severiens (i-flow GmbH)
content@i-flow.io