Introduction

Wire Components provided in Kura 3.0.0

Wire Drivers

Additional information

Introduction

Eclipse Kura Wires provides in Kura environment an implementation of the Dataflow Programming model. The Application logic is expressed as a directed graph: Wire graph The nodes in the graph have inputs and/or outputs, abstract the underlying logics and are highly reusable and portable.

In this way, the developer can easily prototype its solution without sacrificing flexibility and working at a high level of abstraction: the graph is made of nodes and connections that can be extended adding new nodes or drawing new connections. Furthermore, the developer can take advantage of the Eclipse Marketplace integration, being able to use open source or commercial building blocks into the final solution, by simply dragging and dropping a link to the Eclipse Marketplace in the Eclipse Kura Administrative Web UI.

Eclipse Kura Architecture with Wires

Kura Wires is an application built on top of two new Kura features:

  • Drivers, the low-level components responsible for the communication with the sensors and actuators;
  • Assets, an abstraction on top of Kura Drivers that allow the interaction with the underneath drivers in an easy way, by simply specifying “channels”. The channel is a logical entity that eases the way to specify what has to be transferred to/from the driver.

From asset to Driver to Transducers

Through the wires, the message flow is composed by Eclipse Kura Wire Envelopes.

Wire Envelopes

The Wire Envelope is a composite envelope to be used as an abstract data to be transmitted between the Wire Emitter and the Wire Receiver.

Every Envelope transmitted is composed by an Emitter PID that univocally identifies the emitter of the envelope, and an unmodifiable list of Wire Records that effectively carries all the information shared between the Emitter and the Receiver.

Following, some references to the Envelopes code and structure:

Wire Components provided in Kura 4.0.0

The following components will be provided out of the box with the Kura 4.0.0 installer:

  • Timer, emits a Wire Message at a fixed configurable rate: it can be used to periodically start the graph;
  • Publisher, publishes every message received from a Wire (Wire Message). It is configurable in order to use a specific Cloud Service;
  • Subscriber, subscribes to a configurable topic via a specific Cloud Service. It receives a message from a Cloud Platform, wraps it as a Wire Message and sends it through the connected wires to the other components that are part of the Wire Graph;
  • H2 DB Store, allows the storage of Wire Messages into a specific DB table. It has rules for message cleanup and retention;
  • H2 DB Filter, allows the filtering of messages residing in a DB via a proper SQL query. The corresponding messages are sent as Wire Messages to the connected Wire Components;
  • Logger, logs the received messages;
  • WireAsset, allows the definition of Wire Channels that will be used to communicate with the associated driver instance;
  • Fifo, adds the received envelopes to a FIFO queue, and delivers them using a dedicated thread;
  • Regex Filter, filters the keys from incoming Wire Envelopes based on a regular expression;
  • Conditional, allows to forward the received envelopes to different ports depending on a boolean condition;
  • Join, merges the properties contained in envelopes received on different ports into a single envelope;
  • Camel Consumer, consumes data from an endpoint;
  • Camel Producer, send message exchanges to a Camel endpoint;
  • Camel Processor, calls an endpoint and extract its result.

Wire Drivers

Wire drivers will be made available in form of Deployment Packages (dp) in the Eclipse Marketplace, in order to ease the deployment in the final Kura devices. See here for a complete list. For some of them, the source code will be available in the Kura Github Repository.

Additional information

Additional information about Kura Wires is available at the following resources:

DZONE

Master Thesis

Conferences and slides

Youtube