All Projects → namgk → dnr-editor

namgk / dnr-editor

Licence: Apache-2.0 license
Distributed Data-Flow Coordination Platform Based on Node-RED

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to dnr-editor

slock
High-performance distributed sync service and atomic DB
Stars: ✭ 50 (-30.56%)
Mutual labels:  distributed
home-assistant-config
🏠 Home Assistant Configuration & Documentation for my smart home using Node-RED for automations. Press ⭐ for notification of updates.
Stars: ✭ 34 (-52.78%)
Mutual labels:  node-red
monitor-merlin
Module for Effortless Redundancy and Loadbalancing In Naemon
Stars: ✭ 21 (-70.83%)
Mutual labels:  distributed
chamomile
Lightweight p2p library. Support build robust stable connection on p2p/distributed network.
Stars: ✭ 87 (+20.83%)
Mutual labels:  distributed
node-red-contrib-FIWARE official
FIWARE-Node-Red integration supporting NGSI-LD
Stars: ✭ 14 (-80.56%)
Mutual labels:  node-red
NScrapy
NScrapy is a .net core corss platform Distributed Spider Framework which provide an easy way to write your own Spider
Stars: ✭ 88 (+22.22%)
Mutual labels:  distributed
demo-ipfs-todo
Simple ToDo app using window.ipfs
Stars: ✭ 16 (-77.78%)
Mutual labels:  distributed
awesome-nodered
A collection of interesting nodes and resources for Node-RED
Stars: ✭ 316 (+338.89%)
Mutual labels:  node-red
Fire-detection-using-Python
Fire detection without using sensor
Stars: ✭ 36 (-50%)
Mutual labels:  node-red
node-red-contrib-smartnora
Node Red Google Home integration
Stars: ✭ 80 (+11.11%)
Mutual labels:  node-red
Raft-Paxos-Sample
MIT6.824实现分布式一致性算法——Raft&Paxos
Stars: ✭ 37 (-48.61%)
Mutual labels:  distributed
docs
Documentation repo of nebula orchestration system
Stars: ✭ 16 (-77.78%)
Mutual labels:  distributed
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (+16.67%)
Mutual labels:  distributed
meepo
Connect to your service without public IP in p2p channel
Stars: ✭ 87 (+20.83%)
Mutual labels:  distributed
cachegrand
cachegrand is an open-source fast, scalable and secure Key-Value store, also fully compatible with Redis protocol, designed from the ground up to take advantage of modern hardware vertical scalability, able to provide better performance and a larger cache at lower cost, without losing focus on distributed systems.
Stars: ✭ 87 (+20.83%)
Mutual labels:  distributed
node-red-contrib-alexa-home
No description or website provided.
Stars: ✭ 31 (-56.94%)
Mutual labels:  node-red
2017-highload-kv
Курсовой проект 2017 года курса "Проектирование высоконагруженных систем"
Stars: ✭ 26 (-63.89%)
Mutual labels:  distributed
demo-ipfs-id-qr-codes
Generates a QR Code of your IPNS URL and Public Key
Stars: ✭ 21 (-70.83%)
Mutual labels:  distributed
insightedge
InsightEdge Core
Stars: ✭ 22 (-69.44%)
Mutual labels:  distributed
node-red-contrib-fritzapi
Home automation node for Fritz!Box, Fritz!DECT and FRITZ!Powerline devices.
Stars: ✭ 15 (-79.17%)
Mutual labels:  node-red

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

UPDATE Feb 2019: a docker container has been prepared for running dnr-editor right out of the shelf:

docker run -it -p 1818:1818 nhong/dnr-editor

Github installation: similar to Node-RED development: git clone, npm install, grunt build, and start by "node red"

Npm installation: 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:

UPDATE: there's a tutorial video: https://www.youtube.com/watch?v=NVhIAz2s--Q&frags=pl%2Cwn
  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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].