Eclipse development tools for the Internet of Things
Gadget Talk

Eclipse IoT is a collection of 26 open source projects with the common goal of building an open development environment for the Internet of Things.
The Eclipse project is a vast and diverse effort to produce a universal open source collection of software development tools. Separate projects within the Eclipse umbrella target specific standards and use cases, creating helpful libraries and software components that (at least theoretically) plug seamlessly into the universal Eclipse development environment.
The recent emergence of the Internet of Things (IoT) has not gone unnoticed within the Eclipse community. IoT programs and protocols connect household appliances, light bulbs, temperature sensors, and motorized devices, requiring a new crop of programming standards and technologies. The Eclipse IoT working group [1] is a collaboration of individuals and organizations dedicated to "development, promotion, and adoption of IoT technology." The group encompasses a wide range of projects that extend the Eclipse vision to a new generation of open source IoT development tools.
Table 1 shows a summary of Eclipse IoT projects. Each project has a different emphasis. For example, the Paho library (see Table 1) handles data exchange via the MQ Telemetry Transport (MQTT), a common messaging protocol for open IoT. All Eclipse Foundation projects are under open source licenses and are therefore available free of charge.
Table 1
Eclipse's IoT Projects
Name | Task | URL |
---|---|---|
Eclipse 4diac |
Industrial process control according to IEC 61499 |
|
Eclipse Agail |
Modular software and hardware gateway framework |
|
Eclipse Californium |
Implementation of the constrained application protocol (CoAP) in Java |
|
Eclipse Concierge |
Implementation of the OSGi Core Specification R5 |
|
Eclipse Cyclone DDS |
Implementation of the OMG Data Distribution Service (DDS) |
|
Eclipse Ditto |
Management of digital twins |
|
Eclipse Edje |
High-level Java API that provides access to the hardware of a microcontroller and thus functions as a HAL |
|
Eclipse hawkBit |
Management tools for rolling out software updates |
|
Eclipse Hono |
Provides a unified interface for communication with numerous IoT devices |
|
Eclipse IO-Fog |
Universal run-time environment for microservices |
|
Eclipse Kapua |
Modular IoT cloud platform, forms the basis for cloud services, which then evaluate the delivered data |
|
Eclipse Kura |
Middleware and application container according to OSGi for gateway services, transforms a Raspberry Pi into a gateway |
|
Eclipse Leshan |
OMA lightweight M2M Server and client |
|
Eclipse Milo |
Implementation of the OPC Unified Architecture |
|
Eclipse Mosquitto |
MQTT broker |
|
Eclipse NeoSCADA |
Framework for generating industrial control systems (ICS) |
|
Eclipse OM2M |
IoT cloud platform for the telecommunications industry based on the One M2M specification |
|
Eclipse Paho |
Implementation of the MQTT protocol |
|
Eclipse Paho Incubator |
Incubator project for Paho, where Paho developers can try out new ideas |
|
Eclipse Ponte |
Ponte mediates and converts between different protocols and data formats – for example, data can be received via MQTT and then forwarded via CoAP |
|
Eclipse SmartHome |
Middleware and application container as per OSGi, focus on home automation |
|
Eclipse tinydtls |
Implementation of the DTLS protocol |
|
Eclipse Unide |
Implementation of a lean production performance management protocol |
|
Eclipse Wakaama |
Implementation of the OMA LWM2M standard |
|
Eclipse Vorto |
Generation and Exchange of device information models |
|
Eclipse Whiskers |
Implementation of the OGC SensorThings API in the form of a JavaScript client and a lean server |
Stacked High
To keep track of the project flood, the Eclipse Foundation divides a typical IoT application into three central components (Figure 1). Sensors and actuators always form the basis. This category includes temperature sensors, as well as small motors and intelligent light sources. The Eclipse Foundation groups these devices under the term constrained devices.

The raw data is then collected by a gateway. For example, a sensor could pick up the temperature and humidity values from the greenhouse, and a gateway would then push the data into the IoT cloud.
The services running in the cloud process or analyze the data. To stick with the example of the greenhouse: A cloud application could enter the supplied temperatures in a chart and determine the probable water requirements of the plants.
A client application can then access the cloud and obtain the cloud data. This application could be a smartphone app that alerts its users if the temperature in the greenhouse rises dangerously. The whole procedure also works in the opposite direction: The cloud could send instructions to the gateway, causing it to open the greenhouse windows. The gateway then sends the corresponding control data to the appropriate actuators. Gateways thus also coordinate the cooperation of individual IoT devices.
The constrained devices, gateways, and IoT cloud each consist of components that support or complement each other. For example, a constrained device might run a small real-time operating system with a mini-application that controls the actual hardware.
The Eclipse Foundation's terminology refers to a stack of software components serving each of the categories: constrained devices, gateways, and the IoT cloud.
Of Gatherers …
The sensors and actuators interact with the real world and usually take on a very special but clearly defined task. Examples include battery-powered temperature sensors, light switches, and light bulbs that require very little power. In addition, the intelligent devices often contain microcontrollers with limited computing power.
If the constrained device requires an embedded or real-time operating system, the Eclipse Foundation recommends established open source systems such as Contiki-NG [2], RIOT [3], FreeRTOS [4], Zephyr [5], or Apache Mynewt [6]. Access to the actual hardware is simplified by a hardware abstraction layer (HAL). Such a HAL is provided by the Eclipse Edje project. Edje offers an API that allows applications to directly access the hardware features of microcontrollers – such as a Raspberry Pi's GPIO contacts.
Another component forwards the read sensor data over the network. This transmission usually occurs wirelessly using Bluetooth, Z-Wave, MQTT, CoAP, or a similar protocol. Developers receive support through the Eclipse Wakaama and Paho projects. Paho provides a library with which developers can conveniently send data over the network using the MQTT protocol. Similarly, Eclipse Wakaama implements the OMA LWM2M standard.
A fourth component on the constrained device is responsible for remote management. This component lets you upgrade the firmware or check the battery status. (Eclipse Wakaama plays a role with this component as well.)
… and Hunters
Gateways occur in two variants: One variant is a hardware device specially designed for this task, such as a suitably equipped Raspberry Pi. The other variant is a gateway integrated into a larger system, such as a weather station, a large production plant, or an intelligent car.
In practice, several gateways are often used for separate components. For example, one gateway could monitor the greenhouse, and a second gateway could be dedicated to lighting and heating control.
Buy this article as PDF
(incl. VAT)