Eclipse IoT Kura Platform – IoT Application Development Software Platform

Spread the love

Eclipse IoT Kura is a platform for building IoT gateways. It enables remote management of gateways and provides APIs for writing and deploying your own IoT applications.

Eclipse Kura is an extensible open source IoT Edge Framework based on Java/OSGi. Kura offers API access to the hardware interfaces of IoT Gateways (serial ports, GPS, watchdog, GPIOs, I2C, etc.). It features ready-to-use field protocols (including Modbus, OPC-UA, S7), an application container, and a web-based visual data flow programming to acquire data from the field, process it at the edge, and publish it to leading IoT Cloud Platforms through MQTT connectivity.

Kura runs on top of the Java Virtual Machine (JVM) and leverages OSGi, a dynamic component system for Java, to simplify the process of writing reusable software building blocks. Kura APIs offer easy access to the underlying hardware including serial ports, GPS, watchdog, USB, GPIOs, I2C, etc. It also offer OSGI bundle to simplify the management of network configurations, the communication with IoT servers, and the remote management of the gateway.

Eclipse Kura simplifies network configuration management, communication with servers, and remote gateway management with the help of OSGI bundles.

Until recently, machine-to-machine projects have been approached as embedded systems designed around custom hardware, custom software, and custom network connectivity. The challenge of developing such projects was given by the large customization and integration costs and the small re-usability across similar engagements. The results were often proprietary systems leveraging proprietary protocols.

The emergence of the service gateway model, which operates on the edge of an M2M deployment as an aggregator and controller, has opened up new possibilities. Cost effective service gateways are now capable of running modern software stacks opening the world of M2M to enterprise technologies and programming languages. Advanced software frameworks, which isolate the developer from the complexity of the hardware and the networking sub-systems, can now be offered to complement the service gateway hardware into an integrated hardware and software solution.

Kura aims at offering a Java/OSGi-based container for M2M applications running in service gateways. Kura provides or, when available, aggregates open source implementations for the most common services needed by M2M applications. Kura components are designed as configurable OSGi Declarative Service exposing service API and raising events. While several Kura components are in pure Java, others are invoked through JNI and have a dependency on the Linux operating system.

The emergence of an Internet of Thing (IoT) service gateway model running modern software stacks, operating on the edge of an IoT deployment as an aggregator and controller, has opened up the possibility of enabling enterprise level technologies to IoT gateways.

Advanced software frameworks, which abstract and isolate the developer from the complexity of the hardware and the networking sub-systems, re-define the development and re-usability of integrated hardware and software solutions.

Eclipse Kura is an Eclipse IoT project that provides a platform for building IoT gateways. It is a smart application container that enables remote management of such gateways and provides a wide range of APIs for allowing you to write and deploy your own IoT application.

Kura runs on top of the Java Virtual Machine (JVM) and leverages OSGi, a dynamic component system for Java, to simplify the process of writing reusable software building blocks. Kura APIs offer easy access to the underlying hardware including serial ports, GPS, watchdog, USB, GPIOs, I2C, etc. It also offer OSGI bundle to simplify the management of network configurations, the communication with IoT servers, and the remote management of the gateway.

Kura components are designed as configurable OSGi Declarative Service exposing service API and raising events. While several Kura components are in pure Java, others are invoked through JNI and have a dependency on the Linux operating system.

Eclipse IoT Kura offers following services:

I/O Services

  • Serial port access through javax.comm 2.0 API or OSGi I/O connection
  • USB access and events through javax.usb, HID API, custom extensions
  • Bluetooth access through javax.bluetooth or OSGi I/O connection
  • Position Service for GPS information from a NMEA stream
  • Clock Service for the synchronization of the system clock
  • Kura API for GPIO/PWM/I2C/SPI access

Data Services
Store and forward functionality for the telemetry data collected by the gateway and published to remote servers.
Policy-driven publishing system, which abstracts the application developer from the complexity of the network layer and the publishing protocol used. Eclipse Paho and its MQTT client provides the default messaging library used.

Cloud Services
Easy to use API layer for IoT application to communicate with a remote server. In addition to simple publish/subscribe, the Cloud Service API simplifies the implementation of more complex interaction flows like request/response or remote resource management. Allow for a single connection to a remote server to be shared across more than one application in the gateway providing the necessary topic partitioning.

Configuration Service
Leverage the OSGi specifications ConfigurationAdmin and MetaType to provide a snapshot service to import/export the configuration of all registered services in the container.

Remote Management
Allow for remote management of the IoT applications installed in Kura including their deployment, upgrade and configuration management. The Remote Management service relies on the Configuration Service and the Cloud Service.

Networking
Provide API for introspects and configure the network interfaces available in the gateway like Ethernet, Wifi, and Cellular modems.

Watchdog Service
Register critical components to the Watchdog Service, which will force a system reset through the hardware watchdog when a problem is detected.
Web administration interface *Offer a web-based management console running within the Kura container to manage the gateway.

How to develop IoT application using Kura?

The simplest way to start developing on Eclipse Kura is to use an Eclipse Installer based setup. To correctly setup the environment, proceed as follows:

  • Start the Eclipse Installer
  • Switch to advanced mode
  • Select “Eclipse for Committers” and configure the “Product Version”, then select a JRE 1.8+ and press the Next button
  • Select the Eclipse Kura installer from the list. If this is not available, add a new installer from https://raw.githubusercontent.com/eclipse/kura/develop/kura/setups/kura.setup, then check and press the Next button
  • Select the “Developer Type”:
    “User”: if you want to develop applications or bundles running on Kura, select this option. It will install only the APIs and the examples.
    “Developer” : if you are a framework developer, select this option. It will download and configure the Eclipse Kura framework.
  • Update Eclipse Kura Git repository username and customize further settings if you like (e.g. Root install folder, Installation folder name)
  • Leave all Bootstrap Tasks selected and press the Finish button
  • Accept all the licenses and wait for the installation to finish
  • At first startup Eclipse IDE will checkout the code, perform a full build and configure a few Working Sets. Now you are ready to develop on Eclipse Kura.

Eclipse Kura™ project – http://eclipse.org/kura
Eclipse Kura™ project source code – https://github.com/eclipse/kura

Here is the list of all Open Source IoT Platforms – http://meenag.com/list-of-open-source-iot-application-development-platforms/

AWS IoT Platform Platform – http://meenag.com/aws-iot-platform/

ThingWorx IoT Application Development Platform – http://meenag.com/ptc-thingworx-iot-platform/

MeenaG Staff

Internet of Things Enthusiast

Leave a Reply