The Eclipse Kapua project is proposed as an open source incubator project under the Eclipse IoT Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.
With analysts predicting millions of connected devices, there is a growing need for solutions which manage edge devices and integrate them with the enterprise IT infrastructure. This need is even more evident in the convergence between Operation Technology (OT) and Information Technology (IT). OT supports physical value creation and manufacturing processes that comprises the devices, sensors and software necessary to control and monitor plant, equipment and, in general, company assets or products. Information Technology (IT), on the other hand, combines all necessary technologies for information processing.
Internet of Things solutions creates an integration bridge between OT and IT by connecting company’s products and by integrating processes. Internet of Things solutions provide generic integration platforms between the complex and fragmented world of the IoT devices and the enterprise IT infrastructure.
Eclipse Kapua is a modular integration platform for IoT devices and smart sensors that aims at bridging Operation Technology with Information Technology. Eclipse Kapua focuses on providing comprehensive management of edge IoT nodes including their connectivity, configuration, and application life cycle. Aggregated real-time data streams from the edge can be archived for historical analysis or flexibly routed towards enterprise IT systems and applications. Finally, Eclipse Kapua provides a web-based administration console and is accessible through RESTful API for easy application integration.
The goal of the Eclipse Kapua project is to provide an IoT integration platform with the following high-level requirements:
- The platform manages the connectivity for IoT devices and IoT gateways through a different set of protocols. Initial support will be offered to established IoT protocols like MQTT. Other protocols like AMQP, HTTP, and CoAP will be added over time. The connectivity layer is also responsible for managing device authentication and authorization.
- The platform manages the devices on the edge. Device management offers the ability to introspect device configuration, update device applications and firmware, and control the device remotely. The IoT platform exposes an open contract towards the target device being managed with no assumption on the device software stack. The device management should evolve to adopt emerging standard device management protocols like LWM2M.
- IoT devices can collect large amounts of telemetry data. The IoT platform enables data pipelines on such data. The data pipelines can offer: data archival for dashboards or business intelligence applications, enable real-time analytics and business rules. A valuable requirement is flexible and configurable data integration routes, offering data storage options to collect the incoming data and make it available to upstream enterprise applications.
- The IoT platform relies on solid foundations. In particular, it provides multi-tenant account management, user management, permissions and roles.
- The IoT platform is fully programmable via RESTful web services API. A web-based administration console for a device operator is desirable.
- The IoT platform can be deployed either in the Cloud or ‘on premise’. Its packaging should allow for flexible deployment options.
Eclipse Kapua is a modular integration platform for IoT devices and smart sensors that bridges Operation Technology with Information Technology.
The following diagram provides a functional architecture of the Eclipse Kapua project.
The connectivity of the devices is managed through a multi-protocol message broker. In the initial contribution, the protocol for the device connectivity will be the IoT protocol MQTT. The broker supports other protocols including AMQP and WebSockets for application integration.
The device connectivity module is responsible to authenticate connections, enforce the appropriate authorization – for example in the topic namespace – and maintain a Device Registry. The Device Registry stores the device profile, the device connection status and the device connection log. It also enables device organization through custom attributes and tags.
The stream of data published by the devices may have different consumers. Certain messages, like command and control messages, are meant to be consumed by the Device Management component; other messages, like the telemetry data are meant to be archived in the IoT Platform or re-directed to other systems. The Message Routing component allows for flexible handling of message streams avoiding hard coded behaviors through configurable massage routes.
Through the Device Management component, the IoT platform can perform remote operations on the connected devices. The IoT platform exposes an open contract towards the devices being managed with no assumption on the device software stack. In the initial contribution, the device management contract is based on an open application protocol over MQTT. Such protocol is already implemented by the Eclipse Kura project. With such protocol, the IoT platform can:
- Introspect and manage the device configuration
- Manage the device services including service start and stop operations
- Manage the device applications including application install, update, and remove
- Execute remote OS commands on the device
- Get and set device attributes and resources
- Provision initial configuration of the devices
In its evolution and future community contributions, Eclipse Kapua may adopt additional device management protocols like the emerging LWM2M standard
Eclipse Kapua can archive the telemetry data sent by the devices into a persistent storage for application retrieval. A reference message payload is defined which allows for a timestamp, a geo position, strongly typed message headers and an opaque message body. The chosen encoding is based on an open Google Protocol Buffers grammar.
In the initial contribution, a NoSQL data storage is used to allow for a flexible indexing of the telemetry messages. Incoming messages are stored and indexed by timestamp, topic, and originating asset. The NoSQL storage allows for indexing of the message headers.
Data Management also keeps a Data Registry which maintains the topics and the metrics that received incoming traffic.
A foundation layer maintains the security aspects of the IoT platform like the management of tenants, accounts and users. The account model supports a hierarchical access control structure. Following Role Based Access Control (RBAC), user identities can be defined and associated with one or more permissions guaranteeing the principle of "least privilege". Devices connect to the platform using the credentials of one of these user identities or through SSL authentication.
For integration with existing applications, Eclipse Kapua offers modern Web Services API based on Representational State Transfer (REST). The REST API exposes all the platform functionality, including device management and data management. The REST API also offers a "bridge" to the MQTT broker enabling the routing of commands from applications to devices without a specific connection to the message broker. Technologies such as REST/Comet/WebSockets are included allowing real-time display of data published by the devices in web pages and mobile dashboards.
Eclipse Kapua features a web-based administration Console to perform all device and data management operations. A screenshot of the administration Console is shown below.
The Eclipse IoT Industry Working Group has successfully incubated an compelling set of IoT technologies. Eclipse Kapua has a strong relationship with several projects within Eclipse IoT:
- Eclipse Kura – the Java/OSGi based framework for IoT Gateways. Eclipse Kapua natively manages gateways powered by Eclipse Kura
- Eclipse Hono – a distributed and vastly scalable messaging infrastructure that can act a front-end messaging service in front of Eclipse Kapua
- Eclipse hawkBit – an infrastructure for artifact repository and device software distribution
- Eclipse Leshan – implementation of the LWM2M protocol
- Eclipse Paho – implementation of the MQTT protocol
Eclipse Kapua adds into the overall Eclipse IoT offering which now encompasses an open source, end-to-end solution for the development, deployment, and management of IoT solutions.
The richness of the solution opens up new possibilities.
For example, it would be interesting to explore the Eclipse Marketplace as a store for end-to-end IoT applications. IoT applications generally have an edge part and a server (cloud) part. For example, an IoT App package could contain an Eclipse Kura deployment package and a web application developed over the Eclipse Kapua REST APIs. It would be quite interesting to model an IoT App so that its provisioning can be fully automated including the distribution of the edge package to a Kura runtime on a remote gateway and the deployment of the web-application.
Eurotech will go through the Eclipse legal review process to make sure all Eclipse Kapua dependencies are eligible for contribution.
Target license is the Eclipse Public License 1.0.
Initial contribution expected: 09/2016
First working build expected: 10/2016
- Allow for easier plugability of additional connectivity and device management
- Integration with data visualization dashboards for quick representation of telemetry data
- Improvements based on community feedback
- Add rules engines