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…)

OASIS has now published the officialMQTT 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.

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).

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.

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

An option to discard messages if they cannot be delivered within a user-defined period of time.

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.

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.

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.

At the start of a connection, limits like the maximum packet size and number of (QoS0) messages inflight can be transmitted to inform the client what it is allowed to do.

The complete list of new features is inAppendix 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.

Good news everyone! MQTT v3.1.1 has now become anOASIS 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 eithersingle page HTMLorPDF.

TheEclipse Pahoproject is rapidly becoming a source ofsome 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 theEclipse Mosquitto projectcontains 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 atthe Eventbrite page to sign up for the interoperability testing, andcheck 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 tocontact the Eclipse Paho team via their mailing list, if you have any questions.