Node-RED 0.7.0 is now available to download or npm install.

Please read the upgrade instructions. Above all, don’t forget to run npm update after grabbing the latest code!

What’s new

When you run Node-RED, it attempts to load all of the nodes it finds. Typically you’ll have some nodes that have missing dependencies so you’ll get a number of messages such as:

16 Apr 21:16:59 - [23-watch.js] Error: Cannot find module 'fs.notify'
16 Apr 21:16:59 - [32-feedparse.js] Error: Cannot find module 'feedparser'

We’ve tidied that up a bit so it is less intimidating to new users. With this release, we now hide these message by default and just provide a summary:

16 Apr 21:23:32 - ------------------------------------------
16 Apr 21:23:32 - [red] Failed to register 10 node types
16 Apr 21:23:32 - [red] Run with -v for details
16 Apr 21:23:32 - ------------------------------------------

As you can see, we also tell you how to see the details - by running with the -v option.

As we now have a couple different command-line options, we’ve added help:

$ node red.js -?
Usage: node red.js [-v] [-?] [--settings settings.js] [flows.json]

Options:
  -s, --settings FILE  use specified settings file
  -v                   enable verbose output
  -?, --help           show usage

Documentation can be found at http://nodered.org

Headless Mode

One of our first issues on the tracker was the ability to run Node-RED in headless mode - without the UI running.

In previous releases, we’ve made some small steps towards enabling this feature, which we have finally done in this release.

If you recall with the last release we introduced the httpAdminRoot and httpNodeRoot configuration settings. These are used to define the root path of their respective http endpoints.

You can now set either of these properties to false (not 'false' the string, but false the boolean type). Doing so effectively turns off their respective endpoints. For ease of use, setting httpRoot to false is a short-cut for setting both httpAdminRoot and httpNodeRoot to false.

Furthermore, if httpAdminRoot and httpNodeRoot are both false (or httpRoot is false), and httpStatic isn’t set, then we don’t even start the http server.

If you have HTTP-In nodes in a flow and you have httpNodeRoot set to false, you will now get warning messages letting you know those nodes are not accessible.

If you have debug nodes and httpAdminRoot is false, you won’t have any access to the debug node output unless you also use their new option to send output to stdout.

UI updates

In the UI, when dragging nodes around, you could already snap to a grid by pressing shift after starting to drag the nodes. There were some inconsistences in how we calculated the grid position when you had multiple nodes selected which we’ve tidied up. This makes it easier to get the wires lining up.

In this release you can now also achieve pixel-perfect placement of your nodes using the cursor keys. If you press shift at the same time, the nodes will make large movements.

We’ve added support for cutting nodes in the workspace with Ctrl-X to compliment the existing copy (Ctrl-C) and paste (Ctrl-V) actions.

Removing old deprecated nodes

As announced earlier on the mailing list, we’ve removed some of the nodes we deprecated a long time ago. When we deprecate a node, it disappears from the palette to prevent new uses of it, but remains in the runtime so existing flows aren’t affected. The nodes we’ve removed are:

  • 30-socketin - the old simle tcp and udp socket - now replaced by separate tcp and udp and http nodes
  • 30-socketout - the matching outbound sockets
  • 32-multicast - the original multicast node - now replaced as part of the udp node
  • 35-rpi-gpio-in - original raspberry pi input node using a node library (no longer maintained) - now replaced by the one using gpio.
  • 35-rpi-gpio-out - the outbound pair

Deprecating HTTPGet

In this release we have deprecated the httpget node. This had been logically replaced by the HTTPRequest node some time ago, but we never got around to properly deprecating it. When I highlighted this, it was pointed out there was a feature of the httpget node not available in its replacement; the ability to programmatically construct the url within the node.

The httpget node allowed you to specify a ‘base url’ and an ‘append’ option. When a message arrived, the payload was inserted between these two to get the final url for the request. Rather than reproduce this feature in the HTTPRequest node as-is, it was a chance to do a better job of solving the problem.

When configured in the node itself, the url property of the HTTPRequest node now supports mustache-style template tags. This allows the url to be generated dynamically using any property of the incoming message. For example, a url of:

http://example.com/?s=

and an incoming message of:

{
    topic: "foo",
    user: "fred",
}

will result in the url:

http://example.com/foo/?s=fred

You can still construct the url yourself and pass it in with the url property of the message - this will override whatever else you have configured in the node.

Other node updates

  • Debug nodes can now optionally send their output to stdout. Also, clicking on a debug message in the sidebar will switch tabs in the workspace if needed to show the source of the message.
  • The Delay node has a new option to drop intermediate messages when in rate-limiting mode
  • The Sentiment node accepts a set of word-value pairs to customise its scoring

  • Added nodes to the node-red-nodes repository for:
    • Beaglebone Black hardware - analog, discrete and pulse IO
    • Heatmiser thermostat
    • Pibrella board
  • Updated the Emoncms and Hue nodes with new capabilities
  • The Twilio node no longer requires you to provide your account details in settings.js - you can provide them within the node itself.