IoT Standards

The IoT Working Group is supporting open standards for the Internet of Things.

We provide open source implementations for IoT protocols such as MQTT, LwM2M, CoAP.

Vision

Building interoperable IoT solutions is a real challenge. From sensors and actuators on the field to backend systems, there are many aspects of an end-to-end solutions where it is important to rely on standards:

  • Protocols used to implement the device-to-device or device-to-server communications,
  • Device Management protocols to allow remote control of IoT devices and gateways,
  • Gateways and Servers interfaces.

While Open Standards are key, we believe that it is also important to make available open-source implementations of such standards, to encourage adoption of such standards both by IoT developers and the IoT industry at large.

MQTT

Message Queuing Telemetry Transport (MQTT) is a protocol designed to connect the physical world devices and networks, with applications and middleware used in IT and Web development, making it an ideal connectivity protocol for IoT and M2M.

It is a lightweight publish-subscribe protocol that runs on embedded devices and mobile platforms, while connecting to highly scalable enterprise and web servers over wired and wireless networks. It is useful for connections with remote embedded systems where a small code footprint is required and/or network bandwidth is at a premium or connectivity unpredictable, and, for mobile applications that require small size, low power usage, minimised data packets, and efficient distribution of information to one or many receivers.

With loose coupling and quality-of-service, MQTT is optimized for dynamic system environments where high volumes of physical world messages and events need to be made available to Web and enterprise servers, and other consumers. MQTT has been well positioned for even the unanticipated requirements of M2M and IoT applications.

Getting started with MQTT

The Paho project is based around MQTT client runtimes that implement the MQTT messaging protocol. The client runtimes can be configured to run against a broker running on your server, or the sandbox MQTT server described below. There are Quick Start Guides available to get started. This article Practical MQTT with Eclipse Paho is also a good introduction to MQTT.

Download MQTT runtimes

Source code for our MQTT client libraries is available in multiple languages at the Paho project page.

Source code for our MQTT server library is available from the Mosquitto project.

Sandbox MQTT Server

We provide a sandbox server so that you can test your MQTT-based applications against an actual MQTT broker.

CoAP

CoAP (Constrained Application Protocol) is a protocol specialized for use with constrained nodes and networks.

It implements the REST architectural style, it can be transparently mapped to HTTP. However, CoAP also provides features that go beyond HTTP such as native push notifications and group communication.

Download CoAP runtime

The Californium project provides a Java implementation of the CoAP protocol, including support for the DTLS security layer. The source code of Californium is available from the project webpage, and is also available from Maven Central.

Sandbox CoAP Server

We provide a sandbox server that exposes some testing resources over CoAP. You can use it to test your CoAP communication scenarios.

OMA LightweightM2M

OMA LightweightM2M (LWM2M) is an industry standard for device management of M2M/IoT devices. It heavily relies on CoAP and therefore is optimized for communications over sensor or cellular networks.

OMA LWM2M provides an extensible object model that allows to enable application data exchanges in addition to the core device management features (firmware upgrade, connectivity monitoring, …)

Download LWM2M runtime

The Wakaama project provides a C portable framework for building LWM2M clients and/or servers. The source code of Wakaama is available from the project webpage.

The Leshan project provides a Java implementation of LwM2M, allowing to build LwM2M servers and clients. The source code of Leshan is available from the project webpage.

Sandbox LWM2M Server

We provide a Leshan-based sandbox LWM2M server against which LWM2M clients can be registered. The sandbox server provides a Web UI and a REST API to enable interaction with the registered clients.

ETSI SmartM2M

ETSI SmartM2M provides specifications for M2M services and applications, and particularly focuses on aspects of the Internet of Things (IoT) and Smart Cities.

Download ETSI SmartM2M runtime

The OM2M project provides a Java implementation of the ETSI SmartM2M standard. It provides a horizontal M2M service platform for developing services independently of the underlying network, with the aim to facilitate the deployment of vertical applications and heterogeneous devices. The source code of OM2M is available from the project webpage.