Over a million developers have joined DZone.

Different Dataflow Programming Approaches and Comparison With Kura Wires

See how various IoT frameworks stack up with Kura Wires' dataflow programming approach. See where each framework works well and where they fall short.

· IoT Zone

Access the survey results 'State of Industrial Internet Application Development' to learn about latest challenges, trends and opportunities with Industrial IoT, brought to you in partnership with GE Digital.

Overview

In a previous post, I discussed the dataflow programming approach of Kura Wires. Furthermore, I also discussed the benefits that Kura Wires is expected to serve in the Industrial Internet of Things (IIoT) context.

Currently, frameworks already exist that work on the dataflow programming model and also incorporate the visual paradigm to develop Internet of Things (IoT) applications, for instance, Node-RED, glue.things, SAM Labs.

Today, in this post, I would like to focus on the differences amongst these notable frameworks, along with the comparison with Kura Wires.

Node-RED

alt text


Node-RED provides a browser-based flow editor that makes it easy to wire together devices, APIs, and online services by using the wide range of nodes in the palette. Flows can be then deployed to the Node.js runtime with a single click. Node-RED is a flow-based approach to support various functionalities and smart devices. Functional blocks, so-called nodes, can represent databases, functions, or smart devices. These nodes can be wired together to build a functional graph. The nodes encapsulate some functionalities, while it is possible for the developer to implement functions within the code, added to a node.

However, Node-RED is connecting miniature smart devices, for instance, lights and switches. The UI is essentially aimed at developers, as it requires developers to write code snippets in the Node-RED composer UI to define bespoke functionality in a node. This constrains users without programming experience to implement interactions between these smart devices, which they have not done before.

In addition, as of now, it does not support communication with industrial devices, such as Modbus, OPC-UA, Siemens S7 PLCs, etc, which we are aiming to solve problems using Kura Wires. However, custom nodes are provided by many developers to communicate with OPC-UA and Modbus devices, it is still not the primary focus of Node-RED to communicate with industrial devices to process their telemetry data. In Kura Wires, our focus is to process machine production data through the use of different Logical blocks and Computational Blocks. We are also aiming to provide several reusable components as much as possible so that users will not need to write a single line of code to implement their own Industrial Internet of Things scenarios.

glue.things

alt text


glue.things is another framework for IoT application development that has some similarities to Node-RED. In glue.things, a master device controls and monitors all participating nodes in a local network. Whenever a device joins the network, its special nodes are added into the flow editor of the master device and, made available to the developer.

However, the glue.things composer does not work with industrial devices individually.

SAM Labs

alt text


SAM 2 is an IoT development kit, based on a set of smart devices. All of them are connected per Bluetooth LE and are physically standalone smart devices, as a battery provides energy for each smart device to run autonomously. Each smart device provides a simple functionality, which can be buttons, LEDs, or speakers, for example. The user can arrange these smart devices with the use of a visual programming interface, running on the computer. The program uses nodes and edges to connect smart devices and arrange their functions per drag and drop. Aside from hardware integration, software functionalities such as social media access are additionally integrated.

However, SAM does provide a great platform to teach the orchestration of hardware elements. The focus of SAM is the local development environment. Unlike SAM, Kura Wires focuses on the Industrial IoT application development. which is a continually changing environment. Furthermore, the miniature smart devices of SAM are only limited to some basic functionalities and it is not possible to integrate off-the-shelf industrial smart devices containing diverse functionalities, for instance, industrial devices of different field protocols (Modbus, PROFINET, OPC-UA, CANbus etc.)

Conclusion

The primary focus of these frameworks is to facilitate users with an easy to use tool to develop bespoke Internet of Things scenarios, including functionalities of social network access. Unlike these tools, Kura Wires essentially focuses on easing the implementation of Industrial Internet of Things scenarios only. However, IoT developers can make use of the extension points of Kura Wires to develop custom Logical Blocks for Node-RED-like social access and much more. Furthermore, unlike these aforementioned tools, Kura Wires is completely based on Java and OSGi which would definitely motivate several Java developers to rapidly develop their own Java-based Industrial IoT applications. Our approach in Kura Wires would expectantly benefit users to focus on their Industrial Internet scenarios, rather than focusing on how to implement the scenarios.

The IoT Zone is brought to you in partnership with GE Digital.  Discover how IoT developers are using Predix to disrupt traditional industrial development models.

Topics:
eclipse iot ,eclipse kura ,iiot ,iot app development ,nodered ,osgi ,java

Published at DZone with permission of Amit Kumar Mondal, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}