Original author(s) | IBM Emerging Technology • Nick O'Leary • Dave Conway-Jones |
---|---|
Developer(s) | JS Foundation |
Initial release | 2013 [1] |
Stable release | 4.0.2 / July 1, 2024 [2] |
Repository | |
Written in | JavaScript |
Operating system | Cross-platform |
Platform | Node.js |
Type | Flow-based programming for wiring the Internet of things |
License | Apache License 2.0 |
Website | nodered |
Node-RED is a flow-based, low-code development tool for visual programming, originally developed by IBM for wiring together hardware devices, APIs and online services as part of the Internet of things. [3]
Node-RED provides a web browser-based flow editor, which can be used to create JavaScript functions. Elements of applications can be saved or shared for re-use. The runtime is built on Node.js. The flows created in Node-RED are stored using JSON. Since version 0.14, MQTT nodes can make properly configured TLS connections. [4]
In 2016, IBM contributed Node-RED as an open source OpenJS Foundation project. [5] [6] [7]
The Node-RED project has a number of components:
A Node-RED flow describes the connection and sequencing of various input, output, and processing nodes within the Node-RED platform. Each node within a flow performs a unique and specific task. When data is transmitted to a node, the node processes it according to its designated function, before passing it on to the subsequent node in the flow. This system allows for the controlled execution and regulation of a wide range of operations. Node-RED flows represent the primary visual programming mechanism of the tool.
Node-RED has gained traction in the industrial internet of things (IIoT) and edge computing sectors. [8] [9] [10] Node-RED's open-source nature and large community have led to the creation of over 4000 connectors [11] supporting a wide range of data sources and protocols such as Modbus, OPC-UA, Siemens S7, and MQTT. Several PLC and IoT vendors [12] have adopted Node-RED as a standard.
The 2023 Node-RED Community Survey [13] provided insights into the usage patterns, preferences, and feedback from 780 individuals who are part of the Node-RED community. The survey, conducted in March 2023, revealed that Node-RED's usage extends beyond DIY home automation, with a trend towards professional use in a variety of industries. Over half of the respondents had been using Node-RED for over two years, indicating a well-established community. The most common messaging technologies used in conjunction with Node-RED are MQTT and HTTP, while InfluxDB emerged as the most popular database within the community. The survey also shed light on perceived barriers to adoption, pointing towards the perception of Node-RED as a proof of concept tool and the lack of certain key features. Despite these challenges, the survey highlighted a high level of satisfaction within the community, with over two-thirds of respondents rating Node-RED a 5 out of 5.
FlowFuse [14] (formerly known as FlowForge [15] ) is an open-core company investing in Node-RED. Nick O’Leary, co-creator of Node-RED, is FlowFuse co-founder and CTO. FlowFuse adds collaborative development, management of remote deployments, support for DevOps delivery pipelines, and the ability to host Node-RED applications on FlowFuse Cloud.
In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of Low-code development platforms.
In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.
A message broker is an intermediary computer program module that translates a message from the formal messaging protocol of the sender to the formal messaging protocol of the receiver. Message brokers are elements in telecommunication or computer networks where software applications communicate by exchanging formally-defined messages. Message brokers are a building block of message-oriented middleware (MOM) but are typically not a replacement for traditional middleware like MOM and remote procedure call (RPC).
Internet of things (IoT) describes devices with sensors, processing ability, software and other technologies that connect and exchange data with other devices and systems over the Internet or other communication networks. The Internet of things encompasses electronics, communication, and computer science engineering. "Internet of things" has been considered a misnomer because devices do not need to be connected to the public internet; they only need to be connected to a network and be individually addressable.
Node.js is a cross-platform, open-source JavaScript runtime environment that can run on Windows, Linux, Unix, macOS, and more. Node.js runs on the V8 JavaScript engine, and executes JavaScript code outside a web browser.
Linaro is an engineering organization that works on free and open-source software such as the Linux kernel, the GNU Compiler Collection (GCC), QEMU, power management, graphics and multimedia interfaces for the ARM family of instruction sets and implementations thereof as well as for the Heterogeneous System Architecture (HSA). The company provides a collaborative engineering forum for companies to share engineering resources and funding to solve common problems on ARM software. In addition to Linaro's collaborative engineering forum, Linaro also works with companies on a one-to-one basis through its Services division.
MQTT is a lightweight, publish-subscribe, machine to machine network protocol for message queue/message queuing service. It is designed for connections with remote locations that have devices with resource constraints or limited network bandwidth, such as in the Internet of Things (IoT). It must run over a transport protocol that provides ordered, lossless, bi-directional connections—typically, TCP/IP. It is an open OASIS standard and an ISO recommendation.
MEAN is a source-available JavaScript software stack for building dynamic web sites and web applications. A variation known as MERN replaces Angular with React.js front-end, and another named MEVN use Vue.js as front-end.
Express.js, or simply Express, is a back end web application framework for building RESTful APIs with Node.js, released as free and open-source software under the MIT License. It is designed for building web applications and APIs. It has been called the de facto standard server framework for Node.js.
Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by a worldwide community of contributors, and the trademark is held by the Cloud Native Computing Foundation.
Apache NiFi is a software project from the Apache Software Foundation designed to automate the flow of data between software systems. Leveraging the concept of extract, transform, load (ETL), it is based on the "NiagaraFiles" software previously developed by the US National Security Agency (NSA), which is also the source of a part of its present name – NiFi. It was open-sourced as a part of NSA's technology transfer program in 2014.
gRPC is a cross-platform high-performance remote procedure call (RPC) framework. gRPC was initially created by Google, but is open source and is used in many organizations. Use cases range from microservices to the "last mile" of computing. gRPC uses HTTP/2 for transport, Protocol Buffers as the interface description language, and provides features such as authentication, bidirectional streaming and flow control, blocking or nonblocking bindings, and cancellation and timeouts. It generates cross-platform client and server bindings for many languages. Most common usage scenarios include connecting services in a microservices style architecture, or connecting mobile device clients to backend services.
ESP Easy is a free and open source MCU firmware for the Internet of things (IoT). and originally developed by the LetsControlIt.com community. It runs on ESP8266 Wi-Fi based MCU platforms for IoT from Espressif Systems. The name "ESP Easy," by default, refers to the firmware rather than the hardware on which it runs. At a low level, the ESP Easy firmware works the same as the NodeMCU firmware and also provides a very simple operating system on the ESP8266. The main difference between ESP Easy firmware and NodeMCU firmware is that the former is designed as a high-level toolbox that just works out-of-the-box for a pre-defined set of sensors and actuators. Users simply hook up and read/control over simple web requests without having to write any code at all themselves, including firmware upgrades using OTA updates.
The industrial internet of things (IIoT) refers to interconnected sensors, instruments, and other devices networked together with computers' industrial applications, including manufacturing and energy management. This connectivity allows for data collection, exchange, and analysis, potentially facilitating improvements in productivity and efficiency as well as other economic benefits. The IIoT is an evolution of a distributed control system (DCS) that allows for a higher degree of automation by using cloud computing to refine and optimize the process controls.
MQTT is an ISO standard publish–subscribe-based messaging protocol. It works on top of the Internet protocol suite TCP/IP. It is designed for connections with remote locations where a "small code footprint" is required or the network bandwidth is limited. The publish-subscribe messaging pattern requires a message broker.
Microsoft, A tech company historically known for its opposition to the open source software paradigm, turned to embrace the approach in the 2010s. From the 1970s through 2000s under CEOs Bill Gates and Steve Ballmer, Microsoft viewed the community creation and sharing of communal code, later to be known as free and open source software, as a threat to its business, and both executives spoke negatively against it. In the 2010s, as the industry turned towards cloud, embedded, and mobile computing—technologies powered by open source advances—CEO Satya Nadella led Microsoft towards open source adoption although Microsoft's traditional Windows business continued to grow throughout this period generating revenues of 26.8 billion in the third quarter of 2018, while Microsoft's Azure cloud revenues nearly doubled.
The OpenJS Foundation is an organization that was founded in 2019 from a merger of JS Foundation and Node.js Foundation. OpenJS promotes the JavaScript and web ecosystem by hosting projects and funds activities that benefit the ecosystem. The OpenJS Foundation is made up of 38 open source JavaScript projects including Appium, Dojo, jQuery, Node.js, Node-RED and webpack. Founding members included Google, Microsoft, IBM, PayPal, GoDaddy, and Joyent.
PWCT is a free open source visual programming language for software development. The project was founded in December 2005 as a free open-source project that supports designing applications through visual programming then generating the source code. The software supports code generation in many textual programming languages.
The Thing Description (TD) (or W3C WoT Thing Description (TD)) is a royalty-free, open information model with a JSON based representation format for the Internet of Things (IoT). A TD provides a unified way to describe the capabilities of an IoT device or service with its offered data model and functions, protocol usage, and further metadata. Using Thing Descriptions help reduce the complexity of integrating IoT devices and their capabilities into IoT applications.
MQTT with TLS support