Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including node-red-contrib-norelite with all npm packages installed. Try it out:

node-red-contrib-norelite lists no main file and has no index.js, so it can't be directly required. If this is a mistake, please let us know. It may however contain internal files that you can require manually:

// require("node-red-contrib-norelite/[??]")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

node-red-contrib-norelite v2.6.4

A set of Node-Red nodes to ease the implementation of your home automation requirements

node-red-contrib-norelite npm version

A set of Node-RED nodes to ease the implementation of your home automation requirements. The package is the successor to the npm package norelite. The package/repo was changed due to a major restructuring and changes to the code base as well as the interaction format between the nodes has changed.


cd ~/.node-red
npm install node-red-contrib-norelite

Additional nodes that can be used with node-red-contrib-norelite but due to licensing restrictions is not part of this repo can be found here:

What is it?

Simplified, node-red-contrib-norelite is a set of Node-RED nodes that are designed to managed your simple and complex rules that controls your IoT enabled devices. It includes plenty of nodes to manage incoming values, create rules based on the values, utilities to change the instructions and and some device nodes to convert the instructions into a message that can be understood by the transmitting node that finally will transmit the instruction to your IoT device such as a lamp or power switch.

The simplest flow of events is:

  1. Store an incoming value in a source node
  2. A rule will compare the value in a rule node
  3. A device node converts the internal messaging format to an instruction that can be understood by the transmitting node. E.g. Tellstick (node-red-contrib-tellstick), Z-wave (node-red-contrib-openzwave), rfxcom (node-red-contrib-rfxcom) or any custom node as the messaging format is simple.

But there is much more to it... and the nodes should be well described in the node descriptions.

Basic structure and order

  1. Collect data - use nrl-source to store the data to be used by the nrl-eval nodes
  2. Define action flows
    1. Evaluate rules - use nrl-eval or nrl-on to start a new flow
    2. Apply filters - use utility nodes
    3. Calculate final instruction - use nrl-switch that can take multiple inputs
    4. Convert the instruction for the device that is to be controlled - use device nodes
    5. Connect to transmitting nodes or go through nrl-limit to limit the load on the transmitting node (e.g. node-red-contrib-tellstick)

The nodes are divided into 3 categories

( * ): Message in/out should support the messaging format as per below

  • Core
    • nrl-source: Stores incoming values. Stateful
    • nrl-eval: Evalutes the values and generates a message. Stateful (*)
    • nrl-limit: Can be used to intelligently limit load on the transmitting node. Input should come from a Device node as the messaging format is unique for this node
    • nrl-on: Always send on turn on instruction. Stateful (*)
    • nrl-switch: Takes multiple inputs, session persistent storage of the messages, calculates the outbound message and onsly sends an instruction if the result has changed. Stateful (*)
  • Util
    • nrl-dayslimit: Filters based on weekday (*)
    • nrl-timelimit: Filters based on time of day (*)
    • nrl-hold: Hold the state for a defined time (*)
    • nrl-set: Overrides the incoming values (*)
    • nrl-value: Changes the dim value (*)
    • nrl-gate: Routes message based on rules (2 outputs). Similar to nrl-eval but is stateless and the inbound message can be of any format
    • nrl-route: Routes message based on msg.payload.enabled (2 outputs). See messaging format below. (*)
    • (nrl-color is found in node-red-contrib-norelite-color package): Changes the color value in HEX (*)
  • Device

Let me know if you have created more nodes that I can add to this list.

Messaging format

Between the Node-RED nodes the following messages will be sent (with the exception from the device nodes and limit node):

msg.payload = {
    id : '31728023.39c83',  //the of the sending node
    enabled: true,          //is the message instruction active (on/off)
    type: 0,                //prioritization value (used by the switch node). Default '0'
    dim: 100,               //dim value 0-100
    color: '#FFFFFF'        //for use of color enabled devices

id is used for the switch node that keeps a record of all incoming messages and from where it was sent in order to calculate the outbound message from the node.


Look in the examples folder


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free