Kura - A Gateway for the Internet of Things

Deploying and configuring one device to act as a node in the Internet of Things is relatively easy. Doing the same for hundreds or thousands of devices is not so easy though. This is where the new Eclipse project Kura comes in.

Kura offers a platform that can live at the boundary between the private device network and the local network, public Internet or cellular network providing a manageable and intelligent gateway for that boundary capable of running applications that can harvest locally gathered information and deliver it reliably to the cloud.

Kura was contributed to Eclipse by Eurotech who developed the original technology to run on everything from general purpose devices, rugged mobile computers, wearable devices, service gateways and vehicle consoles, all the way down to the Raspberry Pi. Implemented as a Java-based platform, Kura can be installed on Linux based devices and provides a remotely manageable system, complete with all the core services applications need and a device abstraction layer for accessing the gateway’s own hardware.

Developers working with Kura will find that, as it is within an OSGi container - Eclipse Equinox, they will be working with a standard framework for handling events, packaging code and a range of standard services. An application in Kura is delivered as an OSGi module and is run within the container along with the other components of Kura. Using the Eclipse Paho MQTT library, Kura provides a store-and-forward repository service for those applications to take the information gathered from the locally attached devices or network-attached devices sending that data onwards to MQTT brokers and other cloud services.

Applications can be remotely deployed as OSGi bundles and their configuration imported (or exported) through a snapshot service. The same configuration service can be used to setup Kura’s other OSGi compatible services – DHCP, DNS, firewall, routing and wifi – which can be used to manage the networking setup of a gateway and provision private LANs and WLANs. Other bundled services available include position, a GPS location service so you can geolocate your gateways; click, a time service to ensure good time synchronisation; db, a database service for local storage using a embedded SQL database and process and watchdog services to keep things running smoothly.

To talk to network attached devices, applications can use Java’s own networking capabilities (or optional support field protocols, such as ModBUS and CANBUS) to plug into existing device infrastructure. By abstracting the hardware using OSGi services for Serial, USB and Bluetooth communications, Kura gives application developers portable access to a wide range of common devices though they can still use Java’s own range of communications APIs when appropriate. An API for devices attached via GPIO, I2C, PWM or SPI will allow a system integrator to incorporate custom hardware as part of their gateway.

The Kura package is completed with a web front end which allows the developer or administrator to remotely log in and configure all the OSGi-compliant bundles and which developers can utilise to provide a web facing aspect to their own application’s configuration needs. Developers should find that the Eclipse IDE’s OSGi tooling makes the route from code conception to installation on Kura an easily navigable path too.

With a combination of an OSGi container, MQTT messaging, a rich range of network and local connectivity, remote web and command-line control and the familiar Eclipse tooling support, Kura is set to provide a compelling option for enterprise and IoT/M2M Java developers.

About the Author
DJ Walker-Morgan

D.J. Walker-Morgan