npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dnr-editor

v0.19.4-4.1.0

Published

Flows editor for Distributed Node-RED

Downloads

27

Readme

Distributed Node-RED (DNR) Editor

Node-RED is a visual tool for wiring the Internet of Things. The Distributed Node-RED (DNR) project extends Node-RED to support flows that can be distributed between devices. DNR works with a cluster of vanilla Node-RED instances and a coordinator called DNR Editor is used to coordinate the participating Node-RED instances.

Overall architecture: Distributed Node-RED

DNR Editor is a Node-RED flows editor modified to support the design of distributed flows. Once new flows are deployed, they are not started but distributed to participating Node RED instances in the cluster and deployed there.

A Node RED instance can be connected to a DNR cluster by installing node-red-contrib-dnr, a special Node RED node designed for DNR.

Node-red-contrib-dnr module consists of a special node called DNR Daemon node, which acts as a local agent that connects the local Node-RED instance to the DNR cluster. This node gets the DNR flows from DNR Editor, transforms it to a compatible Node-RED flow and deploys the "dnr-ized" flow to the local Node-RED instance.

A sample DNR flow that runs on several Raspberry Pis and a Cloud server:

Sample DNR Flow

The idea of DNR:

  • every device has a capability/property definition such as storage, memory or geographic location.
  • a Node-RED node can be configured so that it only run on certain devices by defining one or more constraints assocciate to it. The constraints will be matched against the device's capability/property definition.
  • if a node is not to be run on a device due to the device not meeting the required constraints, messages that are sent to it will be intercepted and finally dropped, or redirected to an external Node RED instance.
  • mechanism for all participating devices to download the distributed flow from a 'DNR Operator' (where run dnr-editor) such as a cloud server.

Quick Start

Requirements: several Raspberry Pi (participating Node-RED, just for fun, could be multiple instances of Node-RED in a single machine); a computer to run DNR Editor (the coordinator)

Setup DNR Editor

Similar to Node-RED: git clone, npm install, grunt build, and start by "node red"

Or just: npm install -g dnr-editor, dnr-editor -s <setting file>

DNR Editor will run by default at :1818 port.

Connect Node RED to the cluster:

  1. For each Node RED instance, install node-red-contrib-dnr nodes: either using GUI->Menu->Manage Pallete->Install or go to ~/.node-red and do npm install node-red-contrib-dnr
  2. Getting the Seed flow: go to DNR Editor at http://localhost:1818, GUI->Menu->DNR->Export DNR Seed->Export to clipboard
  3. Import the Seed flow on each participating Node RED: GUI->Import->Clipboard->Paste(CMD/CTRL V)->Import
  4. Configure the imported Seed flow: configure the DNR Editor's target (so that the daemon can connect to) and local Node RED's informration (credentials if local Node RED is password protected, device's name, and possibly location)
  5. Deploy the Seed flow: click Deploy.

After this, these connected devices can be seen on the Device Monitor on DNR Editor: GUI->Menu->DNR->Show devices

Device monitor

DNR Device Monitor

Sample flow

A minimal sample DNR flow:

Minimal DNR Flow

Code:

[{"id":"733a9ff3.9c766","type":"tab","label":"Flow 1"},{"id":"9d59c9cc.b67158","type":"inject","z":"733a9ff3.9c766","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":188.95140075683594,"y":86.97222900390625,"wires":[["b5a1fcec.5b0c4"]],"constraints":{"on my mac":{"id":"on my mac","deviceName":"nam-mba","fill":"#f404e0","text":"on my mac"}}},{"id":"b5a1fcec.5b0c4","type":"debug","z":"733a9ff3.9c766","name":"","active":true,"console":"false","complete":"false","x":401.2812042236328,"y":125.0625,"wires":[],"constraints":{"pi17":{"id":"pi17","deviceName":"pi17","fill":"#5103c6","text":"pi17"}}}]

Support

Documentation on vanilla Node-RED can be found here.

More tutorials on wiki page.

For support or questions related to DNR, please contact @mblackstock or Nam Giang at [email protected].

For more information on the initial ideas, see these presentation, presentation and assocated paper, paper.

An initial version of DNR is also available at https://github.com/mblackstock/node-red-contrib/ and at https://github.com/namgk/distributed-node-red where a single installation of modified Node-RED run on participating devices. In order to reduce the effort required to augment the vanilla Node-RED as well as to allow users to use vanilla Node-RED instead of an augmented one, a special node is created called DNR-Daemon (node-red-contrib-dnr) which downloads, converts DNR flows into flows that vanilla Node-RED can understand, and install them to the local vanilla Node RED where it run.

Acknowledgement

Node-RED is a project of the JS Foundation.

It was created by IBM Emerging Technology.

DNR Editor is an extension of Node-RED inspired by Mike Blackstock @mblackstock and created by Nam Giang [email protected]

This is a research project funded by NSERC that aims at designing a distributed application platform for the Internet of Things and Fog Computing.