Eclipse development tools for the Internet of Things

Gadget Talk

Article from Issue 212/2018

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




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.

Figure 1: Eclipse organizes the IoT space into devices, gateways, and cloud platforms.

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

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More