eclipse-kura / kura

Eclipse Kura™ is a versatile framework to supercharge your edge devices, streamlining the process of configuring your gateway, connecting sensors, and IoT devices to seamlessly collect, process, and send data to the cloud.
https://eclipse.dev/kura/
Eclipse Public License 2.0
508 stars 312 forks source link
eclipseiot gateway internet-of-things iot java

Eclipse Kura™

Kura™ logo

[![GitHub Tag](https://img.shields.io/github/v/tag/eclipse/kura?label=Latest%20Tag)](https://github.com/eclipse-kura/kura/tags) [![GitHub](https://img.shields.io/github/license/eclipse/kura?label=License)](https://github.com/eclipse-kura/kura/blob/develop/LICENSE) [![Jenkins](https://img.shields.io/jenkins/build?jobUrl=https:%2F%2Fci.eclipse.org%2Fkura%2Fjob%2Fmultibranch%2Fjob%2Fdevelop&label=Jenkins%20Build&logo=jenkins)](https://ci.eclipse.org/kura/job/multibranch/job/develop/) [![Jenkins](https://img.shields.io/jenkins/tests?compact_message&failed_label=%E2%9D%8C&jobUrl=https:%2F%2Fci.eclipse.org%2Fkura%2Fjob%2Fmultibranch%2Fjob%2Fdevelop%2F&label=Jenkins%20CI&passed_label=%E2%9C%85&skipped_label=%E2%9D%95&logo=jenkins)](https://ci.eclipse.org/kura/job/multibranch/)

What is Eclipse Kura™?

From the maori word for tank/container, Eclipse Kura™ is a versatile software framework designed to supercharge your edge devices. With an intuitive web interface, Eclipse Kura™ streamlines the process of configuring your gateway, connecting sensors, and IoT devices to seamlessly collect, process, and send data to the cloud. Eclipse Kura™ provides an extensible Java API for developing custom plugins within the framework. Additionally, it offers a REST API, enabling the use of Eclipse Kura™ as a backend service in your application.

Eclipse Kura™ runs on an edge gateway, which can be anything from a small SBC(single-board computer) like a Raspberry Pi, or a powerful high-performance computer.

What can Eclipse Kura™ do for me?

I have used Eclipse Kura™ to make a small-scale Edge deployment, how do I scale now?

If you want to scale, and manage many instances of Eclipse Kura™, check out Eclipse Kapua™. Eclipse Kapua™ is a Eclipse Kura™ compatible cloud command and control service that allows you to aggregate data and configure many Eclipse Kura™ devices.

Documentation

Additionally, we provide two channels for reporting any issue you find with the project

Install

Eclipse Kura™ is compatible with Java 8 and Java 17.

Target Gateways Installers

Eclipse Kura™ provides pre-built installers for common development boards. Check the following link to download the desired installers. Take a look at our documentation for further information on supported platforms and installer types.

Docker Image

Eclipse Kura™ is also available as a Docker container.

Build

Prerequisites

In order to be able to build Eclipse Kura™ on your development machine, you need to have the following programs installed in your system:

#### Installing Prerequisites in Mac OS To install Java 8, download the JDK tar archive from the [Adoptium Project Repository](https://adoptium.net/releases.html?variant=openjdk8&jvmVariant=hotspot). Once downloaded, copy the tar archive in `/Library/Java/JavaVirtualMachines/` and cd into it. Unpack the archive with the following command: ```bash sudo tar -xzf .tar.gz ``` The tar archive can be deleted afterwards. Depending on which terminal you are using, edit the profiles (.zshrc, .profile, .bash_profile) to contain: ```bash # Adoptium JDK 8 export JAVA_8_HOME=/Library/Java/JavaVirtualMachines//Contents/Home alias java8='export JAVA_HOME=$JAVA_8_HOME' java8 ``` Reload the terminal and run `java -version` to make sure it is installed correctly. Using [Brew](https://brew.sh/) you can easily install Maven from the command line: ```bash brew install maven@3.5 ``` Run `mvn -version` to ensure that Maven has been added to the PATH. If Maven cannot be found, try running `brew link maven@3.5 --force` or manually add it to your path with: ```bash export PATH="/usr/local/opt/maven@3.5/bin:$PATH" ```
#### Installing Prerequisites in Linux For Java ```bash sudo apt install openjdk-8-jdk ``` For Maven You can follow the tutorial from the official [Maven](http://maven.apache.org/install.html) site. Remember that you need to install the 3.5.x version.

Build Eclipse Kura™

Change to the new directory and clone the Eclipse Kura™ repo:

git clone -b develop https://github.com/eclipse/kura.git

Move inside the newly created directory and build the target platform:

mvn -f target-platform/pom.xml clean install

Build the core components:

mvn -f kura/pom.xml clean install

Build the examples (optional):

mvn -f kura/examples/pom.xml clean install

Build the target profiles:

mvn -f kura/distrib/pom.xml clean install -DbuildAll

[!TIP] You can skip tests by adding -Dmaven.test.skip=true in the commands above and you can compile a specific target by specifying the profile (e.g. -Pgeneric-aarch64).

Build scripts

Alternatively, you can use the build scripts available in the root directory.

./build-all.sh

Building Eclipse Kura™ Containers

The Eclipse Kura™ container build process currently only supports x86 containers. Following the instructions below will build two containers. One based on Alpine Linux kura-alpine-x86_64, and another on Ubi8 kura-ubi8-x86_64.

Build Eclipse Kura™ as per our instructions. To build the containers you'll need to change the target of the "Build the target profiles" step like the following:

mvn -f kura/distrib/pom.xml clean install -DbuildAllContainers

[!NOTE] This build step requires 'docker' to be a executable command on your system. For Instance, if you are using Podman please follow the Emulating Docker Cli Guide before running the command above.

After this command completes, images can be found in your preferred container engine image list.

IDE Setups

We currently support two setups for Eclipse Kura™ development:

Contributing

Contributing to Eclipse Kura™ is fun and easy! To start contributing you can follow our guide here.

Acknowledgments

YourKit Logo

Thanks to YourKit for providing us an open source license of YourKit Java Profiler!

YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler, YourKit .NET Profiler, and YourKit YouMonitor.