MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium. For example, it has been used in sensors communicating to a broker via satellite link, over occasional dial-up connections with healthcare providers, and in a range of home automation and small device scenarios. It is also ideal for mobile applications because of its small size, low power usage, minimised data packets, and efficient distribution of information to one or many receivers (more...)

News RSS feed

MQTT v5.0 now an official OASIS standard

April 3rd, 2019 - No Comments

OASIS has now published the official MQTT v5.0 standard – a huge leap forward in refinement and capability for the messaging protocol that already powers the Internet of Things (IoT). Based on the earlier v3.1.1 standard, it has significant updates whilst minimising incompatibilities with existing versions.

The highlights of the new version include:

  • Better Error Reporting – in particular, a reason code has been added to responses for publications (PUBACK/PUBREC). MQTT originated with use cases like sensors along an oil pipeline – if their publications fail to be transmitted then the sensor will take no action. However the use cases for MQTT are now much broader and an app on a phone may well want to warn the user if data is not being transmitted successfully. Return codes are now present on all acknowledgements (along with optional reason strings that contain human readable error diagnostics).
  • Shared Subscriptions – If the message rate on a subscription is high, shared subscriptions can be used to load balance the messages across a number of receiving clients.
  • Message Properties – Metadata in the header of a message. These are used to implement the other features in this list but also allow user defined properties e.g. to assist in message encryption by telling the receiver which key to use to decrypt the message contents
  • Message Expiry – An option to discard messages if they cannot be delivered within a user-defined period of time.
  • Session Expiry – If a client does not connect within a user defined period of time, state (e.g. subscriptions and buffered messages) can be discarded without needing to be cleaned up.
  • Topic Alias – Allows topic strings in messages to be replaced with a single number, reducing the number of bytes that need to be transmitted if a publisher repeatedly uses the same topics.
  • Will Delay – Allows a message to be published if a client is disconnected for more than a user defined period of time. Allowing notifications about outages of important client applications without being swamped by false positives.
  • Allowed Function Discovery – At the start of a connection, limits like the maximum packet size and number of (QoS>0) messages inflight can be transmitted to inform the client what it is allowed to do.

The complete list of new features is in Appendix C of the standard.

Many clients and servers already have support for the new standard but as it is less than a month old, many implementations are still working on their support.

The publication marks not just the result of a lot of hard work by the v5.0 Technical Committee, but also the longer evolution of the work originally started by Andy Stanford-Clark and Arlen Nipper. Congratulations to everyone involved.

MQTT v3.1.1 now an OASIS Standard

November 7th, 2014 - 5 Comments

Good news everyone! MQTT v3.1.1 has now become an OASIS Standard.

This marks not just the result of 18 months hard work by the Technical Committee, but also the last 15 years of work started by Andy and Arlen. Congratulations to everyone involved.

You can find the standard specification as either single page HTML or PDF.

Interoperability testing at EclipseCon 2014

January 22nd, 2014 - No Comments

The Eclipse Paho project is rapidly becoming a source of some great MQTT clients – currently it contains implementations in C, Java, Javascript, Python (contributed from the mosquitto project), Lua, C++, embedded/minimal C, Go… and an Objective-C client is about to be added. The very popular mosquitto broker recently moved under the Eclipse umbrella too – the Eclipse Mosquitto project┬ácontains both mosquitto, and a fully open-sourced Really Small Message Broker from IBM, which also happens to support MQTT-SN.

EclipseCon 2014, coming up in March, has a strong focus on the Internet of Things.

As part of EclipseCon, the Eclipse Foundation is delighted to host an interoperability testing day for MQTT developers and vendors. The goal is to have representation from a wide range of MQTT brokers, clients, and MQTT-enabled devices. If you work with MQTT, take a look at the Eventbrite page to sign up for the interoperability testing, and check the Eclipse Paho wiki page for more infomation. If you are building APIs or devices on top of MQTT, this is a great way of interacting with the community, broadening awareness of your project or product, and making sure that things work smoothly for you users and customers!

Feel free to contact the Eclipse Paho team via their mailing list, if you have any questions.