Catalogue of node-red-nodes


announce

A Node-RED node that uses Bonjour / Avahi to discover nearby services.

Provides a Bonjour / Avahi / Zeroconf discovery node.

msg.payload contains the service object on both arrival and leaving.

msg.state contains boolean true or false depending if the service has arrived (true) or gone away (false).

Within the msg.payload object the most interesting things are:

For a full list of official service types see this list.

Provides a Bonjour / Avahi / Zeroconf announcement node.

If msg.payload is 0 - the announcement is stopped. Any other value starts the announcement process.

The announcement can be customised by the msg if not configured in the edit panel.

npm install node-red-node-discovery

arduino in

A Node-RED node to talk to an Arduino running firmata

Arduino input node. Connects to local Arduino and monitors the selected pin for changes. Uses Firmata.

The Arduino must be loaded with the Standard Firmata sketch available in the Arduino examples.

You can select either Digital or Analogue input. Outputs the value read as msg.payload and the pin number as msg.topic.

It only outputs on a change of value - fine for digital inputs, but you can get a lot of data from analogue pins which you must then handle.

You can set the sample rate in ms from 20 to 65535.

npm install node-red-node-arduino

arduino out

A Node-RED node to talk to an Arduino running firmata

Arduino input node. Connects to local Arduino and monitors the selected pin for changes. Uses Firmata.

The Arduino must be loaded with the Standard Firmata sketch available in the Arduino examples.

You can select either Digital or Analogue input. Outputs the value read as msg.payload and the pin number as msg.topic.

It only outputs on a change of value - fine for digital inputs, but you can get a lot of data from analogue pins which you must then handle.

You can set the sample rate in ms from 20 to 65535.

Arduino output node. Connects to local Arduino and writes to the selected digital pin. Uses Firmata.

The Arduino must be loaded with the Standard Firmata sketch available in the Arduino examples.

You can select Digital, Analogue (PWM) or Servo type outputs. Expects a numeric value in msg.payload. The pin number is set in the properties panel.

npm install node-red-node-arduino

badwords

A Node-RED node that attempts to filter out messages containing swearwords.

Analyses the msg.payload and tries to filter out any messages containing bad swear words...

Note: this only operates on payloads of type string. Everything else is blocked.

npm install node-red-node-badwords

base64

A Node-RED node to pack and unpack objects to base64 format

A function that converts the msg.payload to and from base64 format.

If the input is a buffer it converts it to a Base64 encoded string.

If the input is a Base64 string it converts it back to a binary buffer.

npm install node-red-node-base64

bbb-analogue-in

A set of Node-RED nodes to interface to the GPIO pins of a Beaglebone Black board

Analogue input for the Beaglebone Black. Reads an analogue pin when triggered by a message.

The output message topic is the node topic: the output message value is the scaled analogue input or NaN if a read error occurs.

Simple linear scaling is defined by setting the output values required for input values of 0 and 1. You can apply more complicated scaling, e.g. for sensor linearisation, by defining breakpoints at intermediate input values, with the desired output for each. Values between breakpoints are linearly interpolated.

To reduce the effect of noise, enable averaging. This will read the input pin voltage ten times in rapid succession for each input message and output the mean value.

npm install node-red-node-beaglebone

bbb-discrete-in

A set of Node-RED nodes to interface to the GPIO pins of a Beaglebone Black board

Analogue input for the Beaglebone Black. Reads an analogue pin when triggered by a message.

The output message topic is the node topic: the output message value is the scaled analogue input or NaN if a read error occurs.

Simple linear scaling is defined by setting the output values required for input values of 0 and 1. You can apply more complicated scaling, e.g. for sensor linearisation, by defining breakpoints at intermediate input values, with the desired output for each. Values between breakpoints are linearly interpolated.

To reduce the effect of noise, enable averaging. This will read the input pin voltage ten times in rapid succession for each input message and output the mean value.

Discrete input for the Beaglebone Black. Sends a message with payload 0 or 1 on the first output when the pin changes state, and logs the total time in the active state.

Sends a message with a payload of the current total active time (in seconds) on the second output at selectable intervals. An input message with topic 'load' and a numeric payload will set the total active time to that value: any other input message will reset it to zero.

The active state may be set to be high or low: this only affects the calculation of the active time, not the pin state value sent on the first output.

The pin state messages may be generated for both directions of change, or for just 0 to 1 or just 1 to 0 changes. This is useful to generate a single message from a button press. When using buttons or switches, enable debouncing to improve reliability.

npm install node-red-node-beaglebone

bbb-discrete-out

A set of Node-RED nodes to interface to the GPIO pins of a Beaglebone Black board

Analogue input for the Beaglebone Black. Reads an analogue pin when triggered by a message.

The output message topic is the node topic: the output message value is the scaled analogue input or NaN if a read error occurs.

Simple linear scaling is defined by setting the output values required for input values of 0 and 1. You can apply more complicated scaling, e.g. for sensor linearisation, by defining breakpoints at intermediate input values, with the desired output for each. Values between breakpoints are linearly interpolated.

To reduce the effect of noise, enable averaging. This will read the input pin voltage ten times in rapid succession for each input message and output the mean value.

Discrete input for the Beaglebone Black. Sends a message with payload 0 or 1 on the first output when the pin changes state, and logs the total time in the active state.

Sends a message with a payload of the current total active time (in seconds) on the second output at selectable intervals. An input message with topic 'load' and a numeric payload will set the total active time to that value: any other input message will reset it to zero.

The active state may be set to be high or low: this only affects the calculation of the active time, not the pin state value sent on the first output.

The pin state messages may be generated for both directions of change, or for just 0 to 1 or just 1 to 0 changes. This is useful to generate a single message from a button press. When using buttons or switches, enable debouncing to improve reliability.

Pulse input for the Beaglebone Black. Counts input pulses or pulse edges: outputs total counts and the rate of counts/sec, with scaling.

Sends the total count message on the first output, and the current count rate message on the second output, at the chosen interval. An input message with topic 'load' and a numeric payload will set the total count to that value (no scaling is applied): any other input message will reset it to zero.

Directly control an output pin on the Beaglebone Black.

Sets the output pin high or low depending on the payload of the input message. Numeric payloads > 0.5 are 'high' (1), payloads <= 0.5 are 'low' (0). Other payloads which evaluate to true are 'high', if not then 'low'. Selecting the Inverting checkbox will switch the sense of the pin output.

If the Toggle state checkbox is checked, the message content is ignored: successive messages cause the pin to toggle between 0 and 1.

The pin will be initially set to the given Startup state until the first message arrives: the Inverting property is not applied to this value.

npm install node-red-node-beaglebone

bbb-pulse-in

A set of Node-RED nodes to interface to the GPIO pins of a Beaglebone Black board

Analogue input for the Beaglebone Black. Reads an analogue pin when triggered by a message.

The output message topic is the node topic: the output message value is the scaled analogue input or NaN if a read error occurs.

Simple linear scaling is defined by setting the output values required for input values of 0 and 1. You can apply more complicated scaling, e.g. for sensor linearisation, by defining breakpoints at intermediate input values, with the desired output for each. Values between breakpoints are linearly interpolated.

To reduce the effect of noise, enable averaging. This will read the input pin voltage ten times in rapid succession for each input message and output the mean value.

Discrete input for the Beaglebone Black. Sends a message with payload 0 or 1 on the first output when the pin changes state, and logs the total time in the active state.

Sends a message with a payload of the current total active time (in seconds) on the second output at selectable intervals. An input message with topic 'load' and a numeric payload will set the total active time to that value: any other input message will reset it to zero.

The active state may be set to be high or low: this only affects the calculation of the active time, not the pin state value sent on the first output.

The pin state messages may be generated for both directions of change, or for just 0 to 1 or just 1 to 0 changes. This is useful to generate a single message from a button press. When using buttons or switches, enable debouncing to improve reliability.

Pulse input for the Beaglebone Black. Counts input pulses or pulse edges: outputs total counts and the rate of counts/sec, with scaling.

Sends the total count message on the first output, and the current count rate message on the second output, at the chosen interval. An input message with topic 'load' and a numeric payload will set the total count to that value (no scaling is applied): any other input message will reset it to zero.

npm install node-red-node-beaglebone

bbb-pulse-out

A set of Node-RED nodes to interface to the GPIO pins of a Beaglebone Black board

Analogue input for the Beaglebone Black. Reads an analogue pin when triggered by a message.

The output message topic is the node topic: the output message value is the scaled analogue input or NaN if a read error occurs.

Simple linear scaling is defined by setting the output values required for input values of 0 and 1. You can apply more complicated scaling, e.g. for sensor linearisation, by defining breakpoints at intermediate input values, with the desired output for each. Values between breakpoints are linearly interpolated.

To reduce the effect of noise, enable averaging. This will read the input pin voltage ten times in rapid succession for each input message and output the mean value.

Discrete input for the Beaglebone Black. Sends a message with payload 0 or 1 on the first output when the pin changes state, and logs the total time in the active state.

Sends a message with a payload of the current total active time (in seconds) on the second output at selectable intervals. An input message with topic 'load' and a numeric payload will set the total active time to that value: any other input message will reset it to zero.

The active state may be set to be high or low: this only affects the calculation of the active time, not the pin state value sent on the first output.

The pin state messages may be generated for both directions of change, or for just 0 to 1 or just 1 to 0 changes. This is useful to generate a single message from a button press. When using buttons or switches, enable debouncing to improve reliability.

Pulse input for the Beaglebone Black. Counts input pulses or pulse edges: outputs total counts and the rate of counts/sec, with scaling.

Sends the total count message on the first output, and the current count rate message on the second output, at the chosen interval. An input message with topic 'load' and a numeric payload will set the total count to that value (no scaling is applied): any other input message will reset it to zero.

Directly control an output pin on the Beaglebone Black.

Sets the output pin high or low depending on the payload of the input message. Numeric payloads > 0.5 are 'high' (1), payloads <= 0.5 are 'low' (0). Other payloads which evaluate to true are 'high', if not then 'low'. Selecting the Inverting checkbox will switch the sense of the pin output.

If the Toggle state checkbox is checked, the message content is ignored: successive messages cause the pin to toggle between 0 and 1.

The pin will be initially set to the given Startup state until the first message arrives: the Inverting property is not applied to this value.

Pulse an output pin on the Beaglebone Black.

Pulses the output pin for the set time after receiving an input message, unless the message has a topic including the text 'time' and a numeric payload. In this case, the the pulse time will be the value of the payload in seconds. If the time from either source is < 0.001 seconds, no pulse is generated.

In retriggerable mode, a second message within the pulse period will extend the duration of the pulse by the time value: in non-retriggerable mode, input messages arriving during the duration of the pulse are ignored.

The pin state of the pulse may be set to either 0 or 1: the output pin will switch back to the other state after the pulse time. An output message is generated each time the pin changes state: its payload is the new state (0 or 1).

npm install node-red-node-beaglebone

blink1

A Node-RED node to control a Thingm Blink(1)

ThingM Blink1 output node.

Expects a msg.payload with either a three part csv string of r,g,b or a hex colour #rrggbb

Also accepts cheerlight colour names.

npm install node-red-node-blink1

blinkstick

A Node-RED node to control a Blinkstick

BlinkStick output node. Expects a msg.payload with one of:

If using a neopixel strip it must be wired to the red or R channel of the blinkstick.

An object payload can override any of the settings on the node. Omitted parameters are left intact. For example:

{ 'color': 'blue' }
{ 'task': 'blink', 'color': 'red' }
{ 'task': 'pulse', 'color': 'gree', 'duration': 500 }
{ 'task': 'morph', 'color': 'orange', 'duration': 500, 'steps': 20 }

For more info see BlinkStick tutorials or the node module documentation.

npm install node-red-node-blinkstick

daemon

A Node-RED node that runs and monitors a long running system command.

Calls out to a long running system command. Sends msg.payload to stdin of the process.

Provides 3 outputs... stdout, stderr, and return code , from the running command.

If the called program stops (i.e. a return code is produced), this node can attempt to restart the command.

Note : when you stop Node-RED running we may not get a chance to kill the called program so it may remain running. You may have to kill it manually.

npm install node-red-node-daemon

digiRGB

A Node-RED node to control a Digispark RGB LED

Simple output node to drive digispark RGB

Requires msg.payload to be of the form 'r,g,b' decimals 0-255, or a hex string "#rrggbb". For example:

npm install node-red-node-digirgb

discovery

A Node-RED node that uses Bonjour / Avahi to discover nearby services.

Provides a Bonjour / Avahi / Zeroconf discovery node.

msg.payload contains the service object on both arrival and leaving.

msg.state contains boolean true or false depending if the service has arrived (true) or gone away (false).

Within the msg.payload object the most interesting things are:

For a full list of official service types see this list.

npm install node-red-node-discovery

dweetio in

A Node-RED node to send and receive simple dweets

Sends the msg.payload to Dweet.io

Optionally uses msg.thing to set the thing id, if not already set in the properties.

You need to make the thing id unique - you are recommended to use a GUID.

For further info see the Dweet.io website.

Listens for messages from Dweet.io

The thing id should be globally unique as they are all public - you are recommended to use a GUID.

The Thing ID is set into msg.dweet, and the timesamp into msg.created.

For further info see the Dweet.io website.

npm install node-red-node-dweetio

dweetio out

A Node-RED node to send and receive simple dweets

Sends the msg.payload to Dweet.io

Optionally uses msg.thing to set the thing id, if not already set in the properties.

You need to make the thing id unique - you are recommended to use a GUID.

For further info see the Dweet.io website.

npm install node-red-node-dweetio

e-mail

Node-RED nodes to send and receive simple emails

Sends the msg.payload as an email, with a subject of msg.topic.

The default message recipient can be configured in the node, if it is left blank it should be set using the msg.to property of the incoming message.

The payload can be html format.

If the payload is a binary buffer then it will be converted to an attachment. The filename should be set using msg.filename. Optionally msg.description can be added for the body text.

Alternatively you may provide msg.attachments which should contain an array of one or more attachments in nodemailer format.

npm install node-red-node-email

e-mail in

Node-RED nodes to send and receive simple emails

Sends the msg.payload as an email, with a subject of msg.topic.

The default message recipient can be configured in the node, if it is left blank it should be set using the msg.to property of the incoming message.

The payload can be html format.

If the payload is a binary buffer then it will be converted to an attachment. The filename should be set using msg.filename. Optionally msg.description can be added for the body text.

Alternatively you may provide msg.attachments which should contain an array of one or more attachments in nodemailer format.

Repeatedly gets a single email from an IMAP server and forwards on as a msg if not already seen.

The subject is loaded into msg.topic and msg.payload is the plain text body. If there is text/html then that is returned in msg.html. msg.from and msg.date are also set if you need them.

Additionally msg.header contains the complete header object including to, cc and other potentially useful properties.

Uses the imap module.

Note: this node only gets the most recent single email from the inbox, so set the repeat (polling) time appropriately.

npm install node-red-node-email

emoncms

A Node-RED node to send energy data to emoncms.org.

Posts data to Emoncms.

The msg.payload can contain either a comma separated list of name value pairs ex. name:value,... or a comma separated list of values ex. 1,2,.. .

If Node is left blank msg.nodegroup will used.

Insertion time can be manipulated by setting msg.time.

npm install node-red-node-emoncms

exif

A Node-RED node that extracts Exif information from JPEG image buffers.

Extract Exif information from JPEG images.

This node expects an incoming JPEG image buffer. If Exif data is present, it extracts the data into the msg.exif object.

The node then adds location data as msg.location, should the Exif data carry this information. msg.payload remains the original, unmodified image buffer.

npm install node-red-node-exif

feedparse

A Node-RED node to get RSS Atom feeds.

Monitors an RSS/atom feed for new entries.

The msg.topic contains the original article link. The msg.payload contains the description, and msg.article contains the complete article object, which has properties such as .title, .summary, .date and so on.

npm install node-red-node-feedparser

geohash

A Node-RED node to encode and decode lat,lon pairs to a geohash.

A function that encodes lat,lon to and from a geohash.

If the msg.payload is a string it tries to see if it's a geohash - if so it tries to decode it and outputs a payload object containing

If the msg.payload is an object with properties lat or latitude and lon or longitude - it will add a geohash property to the payload.

The precision can be set by msg.payload.precision from 1 to 9.

Note: If the msg contains a .location property it will operate on that in preference to the .payload.

npm install node-red-node-geohash

hb-gpio in

A Node-RED node for the GPIO of the Hummingboard

Hummingboard GPIO input pin node. Generates a msg.payload with either a 0 or 1 depending on the state of the input pin.

You may also enable the input pullup resitor or the pulldown resistor.

The msg.topic is set to pi/{the pin number}

Note: we are using the actual physical pin numbers on connector P1 as they are easier to locate.

Note: requires the gpiohb command to be executeable as root in order to work.

npm install node-red-node-hbgpio

hb-gpio out

A Node-RED node for the GPIO of the Hummingboard

Hummingboard GPIO input pin node. Generates a msg.payload with either a 0 or 1 depending on the state of the input pin.

You may also enable the input pullup resitor or the pulldown resistor.

The msg.topic is set to pi/{the pin number}

Note: we are using the actual physical pin numbers on connector P1 as they are easier to locate.

Note: requires the gpiohb command to be executeable as root in order to work.

Hummingboard GPIO output pin node. Expects a msg.payload with either a 0 or 1 (or true or false).

Will set the selected physical pin high or low depending on the value passed in.

The initial value of the pin at deploy time can also be set to 0 or 1.

Note: we are using the actual physical pin numbers as they are easier to locate.

Note: requires the gpiohb command to be executeable as root in order to work.

npm install node-red-node-hbgpio

heatmiser-in

A Node-RED node to control and poll a HeatMiser thermostat.

Heatmiser input node.

Will read and send a status update at a configurable time interval. This is set to every 30 minutes by default

npm install node-red-contrib-heatmiser

heatmiser-out

A Node-RED node to control and poll a HeatMiser thermostat.

Heatmiser input node.

Will read and send a status update at a configurable time interval. This is set to every 30 minutes by default

Heatmiser output node.

Expects a msg.payload with a JSON object that contains settings for the Heatmiser thermostat

msg.payload can currently be either a heating boost option, or a run mode, as below:

Heating boost

{heating: {target: TARGET_TEMPERATURE, hold: MINUTES_TO_STAY_ON_FOR}}

Run mode

{runmode:"frost" OR "heating"}

npm install node-red-contrib-heatmiser

irc in

A Node-RED node to talk to an IRC server

Connects to a channel on an IRC server.

You may join multiple channels by comma separating a list - #chan1,#chan2,#etc.

Any messages on that channel will appear on the msg.payload at the output, while msg.topic will contain who it is from. msg.to contains either the name of the channel or PRIV in the case of a pm.

The second output provides a msg.payload that has any status messages such as joins, parts, kicks etc.

The type of the status message is set as msg.payload.type.

The possible status types are:
Type Description
message message is sent into the channel
pm private message to the bot
join a user joined the channel (also triggered when the bot joins a channel)
invite the bot is being invited to a channel
part a user leaves a channel
quit a user quits a channel
kick a user is kicked from a channel
names retrieves the list of users when the bot joins a channel

npm install node-red-node-irc

irc out

A Node-RED node to talk to an IRC server

Connects to a channel on an IRC server.

You may join multiple channels by comma separating a list - #chan1,#chan2,#etc.

Any messages on that channel will appear on the msg.payload at the output, while msg.topic will contain who it is from. msg.to contains either the name of the channel or PRIV in the case of a pm.

The second output provides a msg.payload that has any status messages such as joins, parts, kicks etc.

The type of the status message is set as msg.payload.type.

The possible status types are:
Type Description
message message is sent into the channel
pm private message to the bot
join a user joined the channel (also triggered when the bot joins a channel)
invite the bot is being invited to a channel
part a user leaves a channel
quit a user quits a channel
kick a user is kicked from a channel
names retrieves the list of users when the bot joins a channel

Sends messages to a channel on an IRC server

You can send just the msg.payload, or the complete msg object to the selected channel, or you can select to use msg.topic to send the msg.payload to a specific user (private message) or channel.

If multiple output channels are listed (eg. #chan1,#chan2), then the message will be sent to all of them.

Note: you can only send to channels you have previously joined so they MUST be specified in the node - even if you then decide to use a subset in msg.topic

You may send RAW commands using msg.raw - This must contain an array of parameters - eg.

["privmsg","#nodered","Hello world"]

npm install node-red-node-irc

ledborg

A Node-RED node to control a PiBorg LedBorg board for a Raspberry Pi.

PiBorg LedBorg LED output node. Expects a msg.payload with a three digit rgb triple, from 000 to 222.

See the PiBorg site for more information.

You can also use a msg.payload in the standard hex format "#rrggbb".

You can also use the @cheerlight colour names - red, amber, green, blue, cyan, magenta, yellow, orange, pink, purple, white, warmwhite, black

You may also supply a comma seperated rrr,ggg,bbb where the value can be between 0 and 255.

npm install node-red-node-ledborg

leveldb in

A Node-RED node to read and write to a LevelDB database

Uses LevelDB for a simple key value pair database.

Use this node to get, or retrieve the data already saved in the database.

msg.topic must hold the key for the database, and the result is returned in msg.payload.

If nothing is found for the key then msg.payload is set to the null object.

npm install node-red-node-leveldb

leveldb out

A Node-RED node to read and write to a LevelDB database

Uses LevelDB for a simple key value pair database.

Use this node to get, or retrieve the data already saved in the database.

msg.topic must hold the key for the database, and the result is returned in msg.payload.

If nothing is found for the key then msg.payload is set to the null object.

Uses LevelDB for a simple key value pair database.

Use this node to either put (store) the msg.payload to the named database file, using msg.topic as the key.

To delete information select delete in the properties dialogue and again use msg.topic as the key..

npm install node-red-node-leveldb

makeymakey

A Node-RED node to read from a MakeyMakey input device.

Provides "keyboard" like input from a MakeyMakey device.

Note: this uses the hidstream npm module that by default only supports the basic keyboard keys and NOT the mouse inputs, fn keys, keypad keys, cursor keys etc. This means that the extra mouse emulation jumpers won't work.

The MakeyMakey can of course be re-programmed to re-assign the keys.

npm install node-red-node-makeymakey

mongodb in

Node-RED nodes to talk to an Mongo database

A simple MongoDB output node. Can save, insert, update and remove objects from a chosen collection.

Save will update an existing object or insert a new object if one does not already exist.

Insert will insert a new object.

Save and insert either store msg or msg.payload.

Update will modify an existing object or objects. The query to select objects to update uses msg.query and the update to the element uses msg.payload.

Update can add a object if it does not exist or update multiple objects.

Remove will remove objects that match the query passed in on msg.payload. A blank query will delete all of the objects in the collection.

You can either set the collection method in the node config or on msg.collection. Setting it in the node will override msg.collection.

By default MongoDB creates an _id property as the primary key - so repeated injections of the same msg will result in many database entries.

If this is NOT the desired behaviour - ie. you want repeated entries to overwrite, then you must set the msg._id property to be a constant by the use of a previous function node.

This could be a unique constant or you could create one based on some other msg property.

Currently we do not limit or cap the collection size at all... this may well change.

Calls a MongoDB collection method based on the selected operator.

Find queries a collection using the msg.payload as the query statement as per the .find() function. Optionally, you may also (via a function) set a msg.projection object to constrain the returned fields, a msg.sort object, a msg.limit number and a msg.skip number.

Count returns a count of the number of documents in a collection or matching a query using the msg.payload as the query statement.

Aggregate provides access to the aggregation pipeline using the msg.payload as the pipeline array.

You can either set the collection method in the node config or on msg.collection. Setting it in the node will override msg.collection.

See the MongoDB collection methods docs for examples.

The result is returned in msg.payload.

npm install node-red-node-mongodb

mongodb out

Node-RED nodes to talk to an Mongo database

A simple MongoDB output node. Can save, insert, update and remove objects from a chosen collection.

Save will update an existing object or insert a new object if one does not already exist.

Insert will insert a new object.

Save and insert either store msg or msg.payload.

Update will modify an existing object or objects. The query to select objects to update uses msg.query and the update to the element uses msg.payload.

Update can add a object if it does not exist or update multiple objects.

Remove will remove objects that match the query passed in on msg.payload. A blank query will delete all of the objects in the collection.

You can either set the collection method in the node config or on msg.collection. Setting it in the node will override msg.collection.

By default MongoDB creates an _id property as the primary key - so repeated injections of the same msg will result in many database entries.

If this is NOT the desired behaviour - ie. you want repeated entries to overwrite, then you must set the msg._id property to be a constant by the use of a previous function node.

This could be a unique constant or you could create one based on some other msg property.

Currently we do not limit or cap the collection size at all... this may well change.

npm install node-red-node-mongodb

mqlight in

A Node-RED node to send and receive message from IBM MQ Light

Provides an MQ Light receive client.

Subscribes the client to a destination based on the supplied topic and (optional) share arguments.

Topic can contain any character in the Unicode character set, with # representing a multilevel wildcard and + a single level wildcard as described here.

Share identifies a shared destination for which messages are anycast between connected subscribers. If left blank, it defaults to a private destination.

Received messages will be sent on in msg.payload with their topic sent in msg.topic and the share, if specified, sent in msg.share.

npm install node-red-node-mqlight

mqlight out

A Node-RED node to send and receive message from IBM MQ Light

Provides an MQ Light receive client.

Subscribes the client to a destination based on the supplied topic and (optional) share arguments.

Topic can contain any character in the Unicode character set, with # representing a multilevel wildcard and + a single level wildcard as described here.

Share identifies a shared destination for which messages are anycast between connected subscribers. If left blank, it defaults to a private destination.

Received messages will be sent on in msg.payload with their topic sent in msg.topic and the share, if specified, sent in msg.share.

Provides an MQ Light send client.

Sends the value passed in on msg.payload to the specified topic.

The topic can be passed in on msg.topic, however the topic in the node must be blank for this to take effect. If the topic is set in the node msg.topic will be overridden.

npm install node-red-node-mqlight

msgpack

A Node-RED node to pack and unpack objects to msgpack format

A function that converts the msg.payload to and from msgpack format.

If the input is NOT a buffer it tries to convert it to a msgpack buffer.

If the input is a msgpack buffer it tries to decode it back.

npm install node-red-node-msgpack

mysql

A Node-RED node to read and write to a MySQL database

Allows basic access to a MySQL database.

This node uses the query operation against the configured database. This does allow both INSERTS and DELETES. By it's very nature it allows SQL injection... so be careful out there...

msg.topic must hold the query for the database, and the result is returned in msg.payload.

msg.payload can contain an array of values to bind to the topic.

Typically the returned payload will be an array of the result rows.

If nothing is found for the key then null is returned,

The reconnect timeout in milliseconds can be changed by adding a line to settings.js

mysqlReconnectTime: 30000,

npm install node-red-node-mysql

nma

A Node-RED node to send alerts via Notify-My-Android

Uses NotifyMyAndroid (NMA) to push the msg.payload to an Android device that has NotifyMyAndroid app installed.

Optionally uses msg.topic to set the title, if not already set in the properties.

The API-key is stored in a separate credentials file.

Uses Notify-My-Android. See this link for more details.

npm install node-red-node-nma

notify

A Node-RED node to send local popup Notify alerts

Uses Growl to provide a desktop popup containing the msg.payload. Only useful on the local machine.

Optionally uses msg.topic as the title.

Uses Growl so should work cross platform but will need pre-reqs installed... see this link.

If installing on Windows you MUST read the install instructions ... especially the bit about adding growlnotify to your path... or it WILL NOT work.

npm install node-red-node-notify

PID control

A Node-RED node that that provides a simple PID controller.

A PID controller node.

This node ONLY expects a numeric msg.payload containing the current reading. It will output the correction that needs to be applied in order to move to the preset set point value.

See Wikipedia for more details.

The set point may be overridden by msg.setpoint. If you do so the edit box value can be used as the initial value.

npm install node-red-node-pidcontrol

ping

A Node-RED node to ping a remote server, for use as a keep-alive check.

Pings a machine and returns the trip time in mS.

Returns false if no response received within 5 seconds, or if the host is unresolveable.

Default ping is every 20 seconds but can be configured.

npm install node-red-node-ping

prowl

A Node-RED node to send alerts via Prowl

Uses Prowl to push the msg.payload to an Apple device that has the prowl app installed.

Optionally uses msg.topic to set the title. You can also set msg.priority to confgure the urgency from -2 (low), through 0 (normal) to 2 (urgent).

The API Key is stored in a separate credentials file.

The old method of storing your Prowl API key in the pushkey.js file in the directory above node-red has been deprecated.

Uses Prowl. See this link for more details.

npm install node-red-node-prowl

pushbullet

A Node-RED node to send alerts via Pushbullet

Uses PushBullet to push msg.payload to a device that has the PushBullet app installed.

Optionally uses msg.topic to set the title, if not already set in the properties.

Optionally uses msg.pushtype to set the type of the push, if not already set in the properties.

Optionally uses msg.deviceid to set the device ID, if not already set in the properties.

You can also push to any channels that you own either configured or via msg.channel.

The node can also dismiss and delete and update items in a pushed list. In this case msg.data.iden must be set to a valid push id, if msg originates from the Pushbullet input node this value is already set.

The old method of storing your credentials in the pushkey.js file in the directory above /node-red is deprecated.

npm install node-red-node-pushbullet

pushbullet in

A Node-RED node to send alerts via Pushbullet

Uses PushBullet to push msg.payload to a device that has the PushBullet app installed.

Optionally uses msg.topic to set the title, if not already set in the properties.

Optionally uses msg.pushtype to set the type of the push, if not already set in the properties.

Optionally uses msg.deviceid to set the device ID, if not already set in the properties.

You can also push to any channels that you own either configured or via msg.channel.

The node can also dismiss and delete and update items in a pushed list. In this case msg.data.iden must be set to a valid push id, if msg originates from the Pushbullet input node this value is already set.

The old method of storing your credentials in the pushkey.js file in the directory above /node-red is deprecated.

Receives Pushbullets from all devices. Messages contain the following data:

msg.pushtype: type of message

msg.topic: topic information from the push

msg.payload: main content of the push

msg.data: original object from the pushbullet API containing e.g. sender, receiver and message ids.

Pushes of type link and file will also have msg.message containing the message associated with the push.

For further details of see Pushbullet Stream API and Pushbullet Push API.

npm install node-red-node-pushbullet

pusher in

A Node-RED node to send and receive messages using Pusher.com

Pusher input mode. Use this node to subscribe to a Pusher channel/event.

You need a valid Pusher App key.

npm install node-red-node-pusher

pusher out

A Node-RED node to send and receive messages using Pusher.com

Pusher input mode. Use this node to subscribe to a Pusher channel/event.

You need a valid Pusher App key.

Pusher output node for sending messages to a specific channel/event.

You need an App key, secret and ID of a Pusher app.

The node will send the msg.payload of the incoming message.

If you leave the eventname blank you can set it using msg.topic.

npm install node-red-node-pusher

pushover

A Node-RED node to send alerts via Pushover

Uses Pushover to push the msg.payload to a device that has the Pushover app installed.

Optionally uses msg.topic to set the title, msg.device to set the device, and msg.priority to set the priority, if not already set in the properties.

The User-key and API-token are stored in a separate credentials file.

Uses Pushover. See this link for more details.

npm install node-red-node-pushover

random

A Node-RED node that when triggered generates a random number between two values.

Generates a random number between a low and high value.

If you return an integer it can include both the low and high values.

If you return a floating point value it will be between the low and high values.

npm install node-red-node-random

rbe

A Node-RED node that provides report-by-exception (RBE) and deadband capability.

Report by Exception node - only passes on data if it has changed.

The node can either block until the msg.payload is different to the previous one - rbe mode. Works on numbers and strings.

Or it can block until the value changes by a specified amount - deadband mode.

In deadband mode the incoming payload should contain a parseable number and is output only if greater than + or - the band gap away from the previous output.

Deadband also supports % - only sends if the input differs by more than x% of the original value.

Note: This works on a per msg.topic basis. This means that a single rbe node can handle multiple topics at the same time.

npm install node-red-node-rbe

redis out

A Node-RED node to save data to an Redis database

A Redis output node. Options include Hash, Set, List and String.

To run this you need a local Redis server running. For details see the Redis site.

npm install node-red-node-redis

rpi-liter

A Node-RED node to drive a Raspberry Pi Pi-LITEr 8 LED board.

Raspberry Pi-LITEr output node. The Pi-LITEr must be fitted.

Operates in one of 5 different modes :

Requires the WiringPi gpio command in order to work.

npm install node-red-node-piliter

rpi-pibrella in

A Node-RED node to read from and write to a Pibrella Raspberry Pi add-on board

Raspberry Pi Pibrella input node. Generates a msg.payload with either a 0 or 1 depending on the state of the input pin.

The msg.topic is set to pibrella/{the pin id}, A, B, C, D or R

Requires the RPi.GPIO python library version 0.5.8 (or better) in order to work.

npm install node-red-node-pibrella

rpi-pibrella out

A Node-RED node to read from and write to a Pibrella Raspberry Pi add-on board

Raspberry Pi Pibrella input node. Generates a msg.payload with either a 0 or 1 depending on the state of the input pin.

The msg.topic is set to pibrella/{the pin id}, A, B, C, D or R

Requires the RPi.GPIO python library version 0.5.8 (or better) in order to work.

Raspberry Pi Pibrella output node. The Pibrella board must be fitted.

Will set the selected output high (on) or low (off) depending on the value passed in. Expects a msg.payload with either a 0 or 1 (or true or false).

In PWM mode you can dim the onboard LEDs - expects a number from 0 - 100 (%).

The Buzzer takes a number in Hz (up to about 4000), or 0 for off, and 1 is a shortcut for 262.

Requires the RPi.GPIO python library version 0.5.8 (or better) in order to work.

npm install node-red-node-pibrella

rpi-piface in

Node-RED nodes to read from and write to a PiFace Digital Raspberry Pi add-on board

Raspberry Pi PiFace input node. Generates a msg.payload with either a 0 or 1 depending on the state of the input pin.

You may also enable the input pullup resistor if required.

The msg.topic is set to piface/{the pin number}

Requires the WiringPi gpio command in order to work.

Note: This node currently polls the pin every 250mS. This is not ideal as it loads the cpu.

npm install node-red-node-piface

rpi-piface out

Node-RED nodes to read from and write to a PiFace Digital Raspberry Pi add-on board

Raspberry Pi PiFace input node. Generates a msg.payload with either a 0 or 1 depending on the state of the input pin.

You may also enable the input pullup resistor if required.

The msg.topic is set to piface/{the pin number}

Requires the WiringPi gpio command in order to work.

Note: This node currently polls the pin every 250mS. This is not ideal as it loads the cpu.

Raspberry Pi PiFace output node. The PiFace board must be fitted.

Will set the selected relay, LED, or pin on or off depending on the value passed in. Expects a msg.payload with either a 1 or 0 (or true or false).

Requires the WiringPi gpio command in order to work.

npm install node-red-node-piface

scanBLE

Scans for a specific BLE Device

(package information not available)

sensorTag

A Node-RED node to read data from a TI SensorTag

Node to read from the Ti SensorTag

For this node to work correctly on Linux, Node-Red needs to be run as root, this due to how Bluetooth 4.0 support is currently implemented in Linux.

The UUID field is the bluetooth mac address of the sensor tag, this is optional and can be used to bind to a specific SensorTag if you have more than one active in range at the same time. Note: you can only have one SensorTag per node-red instance at the moment.

The topic setting is a prefix that will be pre-pended to the name of the sensor that creates the reading. e.g. sensorTag/temperature. If blank it will be set to the UUID of the sensor tag.

NOTE: Only 1 sensorTag can be read from at a time, if you add more than one to the canvas then only the first to connect will work.

npm install node-red-node-sensortag

serial in

Node-RED nodes to talk to an serial port

Reads data from a local serial port.

Can either

It then outputs msg.payload as either a UTF8 ascii string or a binary Buffer object.

If no split character is specified, or a timeout or buffer size of 0, then a stream of single characters is sent - again either as ascii chars or size 1 binary buffers.

npm install node-red-node-serialport

serial out

Node-RED nodes to talk to an serial port

Reads data from a local serial port.

Can either

It then outputs msg.payload as either a UTF8 ascii string or a binary Buffer object.

If no split character is specified, or a timeout or buffer size of 0, then a stream of single characters is sent - again either as ascii chars or size 1 binary buffers.

Provides a connection to an outbound serial port.

Only the msg.payload is sent.

Optionally the new line character used to split the input can be appended to every message sent out to the serial port.

npm install node-red-node-serialport

smooth

A Node-RED node that provides several simple smoothing algorithms for incoming data values.

A simple node to provide various functions across several previous values, including max, min, mean, high and low pass filters.

Max, Min and Mean work over a specified number of previous values.

The High and Low pass filters use a smoothing factor. The higher the number the more the smoothing. E.g. a value of 10 is similar to an α of 0.1. It is analagous to an RC time constant - but there is no time component to this as the time is based on events arriving.

Note: This only operates on numbers. Anything else will try to be made into a number and rejected if that fails.

npm install node-red-node-smooth

snmp

A Node-RED node that looks for SNMP oids.

Simple SNMP oid or oid list fetcher. Triggered by any input.

msg.oid may contain a comma separated list of oids to request. (no spaces)

npm install node-red-node-snmp

snmp table

A Node-RED node that looks for SNMP oids.

Simple SNMP oid or oid list fetcher. Triggered by any input.

msg.oid may contain a comma separated list of oids to request. (no spaces)

Simple SNMP oid table fetcher. Triggered by any input.

msg.oid may contain the oid of a table to request.

npm install node-red-node-snmp

sqlite

A sqlite node for Node-RED

Allows basic access to a Sqlite database.

This node uses the db.all operation against the configured database. This does allow INSERTS, UPDATES and DELETES. By it's very nature it is SQL injection... so be careful out there...

msg.topic must hold the query for the database, and the result is returned in msg.payload.

msg.payload can contain an array of values to bind to the topic.

Typically the returned payload will be an array of the result rows, (or an error).

The reconnect timeout in milliseconds can be changed by adding a line to settings.js

sqliteReconnectTime: 20000,

npm install node-red-node-sqlite

stomp in

A Node-RED node to publish and subscribe to/from a Stomp server

Connects to a server using the Stomp protocol to receive messages.

If the message received is JSON msg.payload will be parsed into an object. If not it will be the raw data.

msg.headers contains any header information that was also delivered.

msg.topic is set to the predefined subscription topic.

Note: While not a requirement of the Stomp protocol, if connecting to an ActiveMQ server, the destination should begin with "/queue/" or with "/topic/". See Stomp 1.0 spec for more details.

npm install node-red-node-stomp

stomp out

A Node-RED node to publish and subscribe to/from a Stomp server

Connects to a server using the Stomp protocol to receive messages.

If the message received is JSON msg.payload will be parsed into an object. If not it will be the raw data.

msg.headers contains any header information that was also delivered.

msg.topic is set to the predefined subscription topic.

Note: While not a requirement of the Stomp protocol, if connecting to an ActiveMQ server, the destination should begin with "/queue/" or with "/topic/". See Stomp 1.0 spec for more details.

Connects to an Stomp capable server to send messages.

The Destination field is optional. If set it overrides the msg.topic property of the message.

msg.headers, if set, should be an object containing field/value pairs to be added as request headers.

Note: While not a requirement of the Stomp protocol, if connecting to an ActiveMQ server, the destination should begin with "/queue/" or with "/topic/". See the Stomp 1.0 spec for more details.

npm install node-red-node-stomp

sunrise

A Node-RED node to provide a signal at sunrise and sunset

Uses the suncalc module to generate an output at sunrise and sunset based on a specified location.

Several choices of definition of sunrise and sunset are available, see the suncalc module for details.

The first output emits a msg.payload of 1 or 0 every minute depending if in between selected times or not. The second output emits only on the transition between night to day (-> 1) or day to night (-> 0).

Also sets msg.topic to sun and msg.moon to the fraction of the moon between 0 and 1.

npm install node-red-node-suncalc

twilio out

A Node-RED node to send SMS messages via the Twilio service.

Sends an SMS message or makes a call using the Twilio service.

msg.payload can either contain the text of the SMS message, or the URL of the TWiML used to create the call. The node can be configured with the number to send the message to. Alternatively, if the number is left blank, it can be set using msg.topic. If the node is configured to make a call then the TWiML URL must be publically accessible.

You must have an account with Twilio to use this node. You can register for one here.

You can either set your account details within the node, or provide it globally using either the settings file or a file called 'twiliokey.js' located in the directory above node-red.

To use the settings.js file, add an entry such as:

twilio: { account:'My-ACCOUNT-SID', authtoken:'TWILIO-TOKEN', from:'FROM-NUMBER' }

To use the 'twiliokey.js' file in the directory above node-red, use the following format:

module.exports = { account:'My-ACCOUNT-SID', authtoken:'TWILIO-TOKEN',from:'FROM-NUMBER' }

npm install node-red-node-twilio

twitter in

A Node-RED node to talk to Twitter

Twitter input node. Can be used to search either:

Use space for and and comma , for or when searching for multiple terms.

Sets the msg.topic to tweets/ and then appends the senders screen name.

Sets msg.location to the tweeters location if known.

Sets msg.tweet to the full tweet object as documented by Twitter.

Note: when set to a specific user's tweets, or your direct messages, the node is subject to Twitter's API rate limiting. If you deploy the flows multiple times within a 15 minute window, you may exceed the limit and will see errors from the node. These errors will clear when the current 15 minute window passes.

npm install node-red-node-twitter

twitter out

A Node-RED node to talk to Twitter

Twitter input node. Can be used to search either:

Use space for and and comma , for or when searching for multiple terms.

Sets the msg.topic to tweets/ and then appends the senders screen name.

Sets msg.location to the tweeters location if known.

Sets msg.tweet to the full tweet object as documented by Twitter.

Note: when set to a specific user's tweets, or your direct messages, the node is subject to Twitter's API rate limiting. If you deploy the flows multiple times within a 15 minute window, you may exceed the limit and will see errors from the node. These errors will clear when the current 15 minute window passes.

Twitter out node. Tweets the msg.payload.

To send a Direct Message (DM) - use a payload like "D {username} {message}"

If msg.media exists and is a Buffer object, this node will treat it as an image and attach it to the tweet.

If msg.params exists and is an object of name:value pairs, this node will treat it as parameters for the update request.

npm install node-red-node-twitter

wake on lan

A Node-RED node to send Wake-On-LAN (WOL) magic packets

Sends a Wake-On-LAN magic packet to the mac address specified.

You may instead set msg.mac to dynamically set the target device mac to wake up.

npm install node-red-node-wol

wemo in

A Node-RED node to control a Belkin Wemo set of devices.

Wemo output node. Expects a msg.payload with either 1/0, on/off or true/false.

It doesn't yet do any ip address discovery of the wemo devices.

Wemo input node. Creates a msg.payload with either 1, 0, nc (no change), or na (not available).

It doesn't yet do any ip address discovery of the wemo devices.

npm install node-red-node-wemo

wemo out

A Node-RED node to control a Belkin Wemo set of devices.

Wemo output node. Expects a msg.payload with either 1/0, on/off or true/false.

It doesn't yet do any ip address discovery of the wemo devices.

npm install node-red-node-wemo

what3words

A Node-RED node to convert locations to/from what3words

Uses what3words to convert a location to a unique three.word.combination .

Expects either

and produces a msg.payload of unique.three.words .

Also does the reverse by accepting a dot (.) separated three.word.string in msg.payload, and adds the corresponding msg.location property.

Note: This is an online service and requires a live internet connection.

The API-key is stored in a separate credentials file.

See what3words for more details.

npm install node-red-node-what3words

wordpos

A Node-RED node that breaks a sentence into the various parts of (English) speech.

Analyses msg.payload and classifies the part-of-speech of each word.

The resulting message has msg.pos added with the results:

{
    nouns:[],
    verbs:[],
    adjectives:[],
    adverbs:[],
    rest:[]
}

Note: a word may appear in multiple POS (eg, 'great' is both a noun and an adjective)

npm install node-red-node-wordpos

xmpp in

A Node-RED node to talk to an XMPP server

Connects to an XMPP server to receive messages.

The Buddy field is the id of the buddy or room you want to receive messages from.

Incoming messages will appear as msg.payload on the first output, while msg.topic will contain who it is from.

The second output will show the presence and status of a user in msg.payload. Again msg.topic will hold the user.

npm install node-red-node-xmpp

xmpp out

A Node-RED node to talk to an XMPP server

Connects to an XMPP server to receive messages.

The Buddy field is the id of the buddy or room you want to receive messages from.

Incoming messages will appear as msg.payload on the first output, while msg.topic will contain who it is from.

The second output will show the presence and status of a user in msg.payload. Again msg.topic will hold the user.

Connects to an XMPP server to send messages.

The To field is optional. If not set the msg.topic property of the message is used.

If you are joining a room then the To field must be filled in.

You may also send a msg with msg.presence to set your presence to one of chat, away, dnd or xa. If you do so then the msg.payload will set your status message.

npm install node-red-node-xmpp