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)
Buy Linux Magazine
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.
News
-
Systemd Fixes Bug While Facing New Challenger in GNU Shepherd
The systemd developers have fixed a really nasty bug amid the release of the new GNU Shepherd init system.
-
AlmaLinux 10.0 Beta Released
The AlmaLinux OS Foundation has announced the availability of AlmaLinux 10.0 Beta ("Purple Lion") for all supported devices with significant changes.
-
Gnome 47.2 Now Available
Gnome 47.2 is now available for general use but don't expect much in the way of newness, as this is all about improvements and bug fixes.
-
Latest Cinnamon Desktop Releases with a Bold New Look
Just in time for the holidays, the developer of the Cinnamon desktop has shipped a new release to help spice up your eggnog with new features and a new look.
-
Armbian 24.11 Released with Expanded Hardware Support
If you've been waiting for Armbian to support OrangePi 5 Max and Radxa ROCK 5B+, the wait is over.
-
SUSE Renames Several Products for Better Name Recognition
SUSE has been a very powerful player in the European market, but it knows it must branch out to gain serious traction. Will a name change do the trick?
-
ESET Discovers New Linux Malware
WolfsBane is an all-in-one malware that has hit the Linux operating system and includes a dropper, a launcher, and a backdoor.
-
New Linux Kernel Patch Allows Forcing a CPU Mitigation
Even when CPU mitigations can consume precious CPU cycles, it might not be a bad idea to allow users to enable them, even if your machine isn't vulnerable.
-
Red Hat Enterprise Linux 9.5 Released
Notify your friends, loved ones, and colleagues that the latest version of RHEL is available with plenty of enhancements.
-
Linux Sees Massive Performance Increase from a Single Line of Code
With one line of code, Intel was able to increase the performance of the Linux kernel by 4,000 percent.