Skip to main content

IoT Standards

Eclipse IoT supports open standards for the Internet of Things.

We provide open source implementations for IoT protocols such as CoAP, oneM2M, LWM2M, MQTT, OPC-UA, and more.


Building interoperable IoT solutions is a real challenge. From sensors and actuators in 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.

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 a CoAP runtime

The Eclipse 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.

CoAP Sandbox Server

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

The Datagram Transport Layer Security (DTLS) protocol provides communications security for datagram protocols such as. DTLS allows datagram-based applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. For IoT applications, DTLS can be used to secure CoAP-based communications.

Download a DTLS implementation

The Eclipse tinydtls project provides a light-weight implementation of the DTLS protocol that can be used in devices with tight memory constraints, i.e. in the order of 100 KiB flash memory and about 10 KiB RAM. You can download tinydtls source code from the project's Git repository.

The international standard IEC 61499, addressing the topic of function blocks for industrial process measurement and control system. The specification of IEC 61499 defines a generic model for distributed control systems and is based on the IEC 61131 standard.

Download an IEC-61499 toolset and runtime

The Eclipse 4DIAC project provides an industrial-grade open source infrastructure for distributed Industrial Process Measurement and Control Systems (IPMCS) based on the IEC 61499 standard.

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 a LWM2M runtime

The Eclipse 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 Eclipse 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.

LWM2M Sandbox Server

We provide a Leshan-based LWM2M sandbox 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.

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

MQTT Sandbox Server

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

SensorThings API is an Open Geospatial Consortium (OGC) standard providing an open and unified framework to interconnect IoT sensing devices, data, and applications over the Web. It is an open standard addressing the syntactic interoperability and semantic interoperability of the Internet of Things.

Download a SensorThings API runtime

The Eclipse Whiskers project provides a JavaScript client and a light-weight server for IoT gateways. The source code of Whiskers is available on the project's Github repository.

oneM2M specifications provide a horizontal framework to support a wide range of applications and services such as smart cities, smart grid, connected car, home automation, public safety, and health.

Download a oneM2M stack

The Eclipse OM2M project provides a Java implementation of the ETSI oneM2M. 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 on heterogeneous devices. The source code of OM2M is available from the project webpage.

OPC Unified Architecture (UA) is an interoperability standard that enables the secure and reliable exchange of industrial automation data while remaining cross-platform and vendor neutral. The specification is developed and maintained by the OPC Foundation with the guidance of individual software developers, industry vendors, and end-users. It defines the interface between Clients and Servers, including access to real-time data, monitoring of alarms and events, historical data access, and data modeling.

Download an OPC-UA runtime

The Eclipse Milo project provides all the tools necessary to implement OPC UA client and/or server functionality in any Java-based project.

OPC-UA Sandbox Server

Coming soon.

PPMP (Production Performance Management Protocol) specifies a format that allows to capture data that is required to do performance analysis of production facilities. It allows monitoring backends to collect and evaluate key metrics of machines in the context of a production process. It is doing that by allowing to relate the machine status with currently produced parts.

Download a PPMP runtime

The Eclipse Unide project publishes the current version of PPMP and develops simple server/client implementations. The source code of Unide is available on the project's Github repository.