mirror of
https://github.com/node-red/node-red-nodes.git
synced 2023-10-10 13:36:58 +02:00
Added list of Nodes to he ReadME so people can see what's there without digging... Bunch of cleanups to node-red-nodes... mainly just removing tabs -> spaces and stuff. No code changes...
This commit is contained in:
parent
6425bd75cb
commit
793fd3c7fd
61
README.md
61
README.md
@ -1,6 +1,6 @@
|
|||||||
# Node-RED Nodes
|
# Node-RED Nodes
|
||||||
|
|
||||||
A collection of nodes for [Node-RED](http://nodered.org).
|
A collection of nodes for [Node-RED](http://nodered.org). See below for a list.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@ -42,3 +42,62 @@ slightly different.
|
|||||||
## Copyright and license
|
## Copyright and license
|
||||||
|
|
||||||
Copyright 2013 IBM Corp. under [the Apache 2.0 license](LICENSE).
|
Copyright 2013 IBM Corp. under [the Apache 2.0 license](LICENSE).
|
||||||
|
|
||||||
|
# Extra Node Information
|
||||||
|
|
||||||
|
### Analysis
|
||||||
|
|
||||||
|
**72-wordpos** - Analyses the payload and classifies the part-of-speech of each word. The resulting message has msg.pos added with the results. A word may appear in multiple categories (eg, 'great' is both a noun and an adjective).
|
||||||
|
|
||||||
|
**74-swearfilter** - Analyses the payload and tries to filter out any messages containing bad swear words. This only operates on payloads of type string. Everything else is blocked.
|
||||||
|
|
||||||
|
### Hardware
|
||||||
|
|
||||||
|
**37-rpi-piface** - Adds support for the PiFace interface module for Raspberry Pi.
|
||||||
|
|
||||||
|
**78-ledborg** - A simple driver for the LEDborg plug on module for Raspberry Pi.
|
||||||
|
|
||||||
|
**76-blinkstick** - Provides support for the BlinkStick USB LED device.
|
||||||
|
|
||||||
|
**77-blink1** - Provides support for the Blink1 USB LED from ThingM.
|
||||||
|
|
||||||
|
**78-digiRGB** - Provides support for the DigiPark RGB USB LED.
|
||||||
|
|
||||||
|
**79-sensorTag** - Reads data from the Ti BLE SensorTag device.
|
||||||
|
|
||||||
|
**101-scanBLE** - Scans for a particular Bluetooth Low Energy (BLE) device.
|
||||||
|
|
||||||
|
### IO
|
||||||
|
|
||||||
|
**26-rawserial** - Only really needed for Windows boxes without serialport npm module installed.
|
||||||
|
Uses a simple read of the serial port as a file to input data. You **must** set the baud rate etc externally *before* starting Node-RED. This node does not implement pooling of connections so only one instance of each port may be used - so in **or** out but **not** both.
|
||||||
|
|
||||||
|
**39-wol** - 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.
|
||||||
|
|
||||||
|
**88-ping** - Pings a machine and returns the trip time in mS. Returns false if no response received within 3 seconds, or if the host is unresolveable. Default ping is every 20 seconds but can be configured.
|
||||||
|
|
||||||
|
### Social
|
||||||
|
|
||||||
|
**69-mpd** - MPD music control nodes. Output node expects payload to be a valid mpc command. Currently only simple commands that expect no reply are supported. Input node creates a payload object with Artist, Album, Title, Genre and Date.
|
||||||
|
|
||||||
|
**57-notify** - Uses Growl to provide a desktop popup containing the payload. Only useful on the local machine.
|
||||||
|
|
||||||
|
**57-prowl** - Uses Prowl to push the payload to an Apple device that has the Prowl app installed.
|
||||||
|
|
||||||
|
**57-pushbullet** - Uses PushBullet to push the payload to an Android device that has the PushBullet app installed.
|
||||||
|
|
||||||
|
**92-xmpp** - Connects to an XMPP server to send and receive messages.
|
||||||
|
|
||||||
|
### Storage
|
||||||
|
|
||||||
|
**67-leveldb** - Uses LevelDB for a simple key value pair database.
|
||||||
|
|
||||||
|
**68-mysql** - 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...*
|
||||||
|
|
||||||
|
### Time
|
||||||
|
|
||||||
|
**79-suncalc** - 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,
|
||||||
|
|
||||||
|
### Misc
|
||||||
|
|
||||||
|
**99-sample** - A sample node with more comments than most to try to help you get started without any other docs...
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
category: 'analysis-function',
|
category: 'analysis-function',
|
||||||
color:"#E6E0F8",
|
color:"#E6E0F8",
|
||||||
defaults: {
|
defaults: {
|
||||||
name: {value:""},
|
name: {value:""}
|
||||||
},
|
},
|
||||||
inputs:1,
|
inputs:1,
|
||||||
outputs:1,
|
outputs:1,
|
||||||
|
@ -53,5 +53,4 @@
|
|||||||
return this.name?"node_label_italic":"";
|
return this.name?"node_label_italic":"";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -15,9 +15,7 @@
|
|||||||
**/
|
**/
|
||||||
|
|
||||||
var RED = require(process.env.NODE_RED_HOME+"/red/red");
|
var RED = require(process.env.NODE_RED_HOME+"/red/red");
|
||||||
var util = require("util");
|
|
||||||
var WordPos = require('wordpos');
|
var WordPos = require('wordpos');
|
||||||
|
|
||||||
var wordpos = new WordPos();
|
var wordpos = new WordPos();
|
||||||
|
|
||||||
function WordPOSNode(n) {
|
function WordPOSNode(n) {
|
||||||
@ -30,5 +28,4 @@ function WordPOSNode(n) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
RED.nodes.registerType("wordpos",WordPOSNode);
|
RED.nodes.registerType("wordpos",WordPOSNode);
|
||||||
|
@ -20,7 +20,7 @@ var fs = require('fs');
|
|||||||
|
|
||||||
// check if /dev/ledborg exists - if not then don't even show the node.
|
// check if /dev/ledborg exists - if not then don't even show the node.
|
||||||
if (!fs.existsSync("/dev/ledborg")) {
|
if (!fs.existsSync("/dev/ledborg")) {
|
||||||
util.log("[78-ledborg.js] Error: PiBorg hardware : LedBorg not found");
|
util.log("[78-ledborg.js] Warning: PiBorg hardware : LedBorg not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,5 +49,4 @@ function LedBorgNode(n) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
RED.nodes.registerType("ledborg",LedBorgNode);
|
RED.nodes.registerType("ledborg",LedBorgNode);
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/x-red" data-help-name="blink1">
|
<script type="text/x-red" data-help-name="blink1">
|
||||||
<p>Thingm Blink1 output node. Expects a msg.payload with a three part csv string of r,g,b.</p>
|
<p>ThingM Blink1 output node. Expects a msg.payload with a three part csv string of r,g,b.</p>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
@ -46,7 +46,7 @@
|
|||||||
return this.name||"blink1";
|
return this.name||"blink1";
|
||||||
},
|
},
|
||||||
labelStyle: function() {
|
labelStyle: function() {
|
||||||
return (this.name||!this.topic)?"node_label_italic":"";
|
return this.name?"node_label_italic":"";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -42,7 +42,7 @@ function Blink1Node(n) {
|
|||||||
else { blink1.fadeToRGB(node.fade, parseInt(rgb[0])&255, parseInt(rgb[1])&255, parseInt(rgb[2])&255); }
|
else { blink1.fadeToRGB(node.fade, parseInt(rgb[0])&255, parseInt(rgb[1])&255, parseInt(rgb[2])&255); }
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// you can do fancy colours by name here if you want...
|
// you can add fancy colours by name here if you want...
|
||||||
node.warn("Blink1 : invalid msg : "+msg.payload);
|
node.warn("Blink1 : invalid msg : "+msg.payload);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -56,5 +56,4 @@ function Blink1Node(n) {
|
|||||||
node.error("No Blink1 found");
|
node.error("No Blink1 found");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RED.nodes.registerType("blink1",Blink1Node);
|
RED.nodes.registerType("blink1",Blink1Node);
|
||||||
|
@ -14,55 +14,34 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<!-- First, the content of the edit dialog is defined. -->
|
|
||||||
|
|
||||||
<script type="text/x-red" data-template-name="digiRGB">
|
<script type="text/x-red" data-template-name="digiRGB">
|
||||||
<!-- data-template-name identifies the node type this is for -->
|
|
||||||
|
|
||||||
<!-- Each of the following divs creates a field in the edit dialog. -->
|
|
||||||
<!-- Generally, there should be an input for each property of the node. -->
|
|
||||||
<!-- The for and id attributes identify the corresponding property -->
|
|
||||||
<!-- (with the 'node-input-' prefix). -->
|
|
||||||
<!-- The available icon classes are defined in Twitter Bootstrap -->
|
|
||||||
|
|
||||||
<!-- By convention, most nodes have a 'name' property. The following div -->
|
|
||||||
<!-- provides the necessary field. -->
|
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
|
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
|
||||||
<input type="text" id="node-input-name" placeholder="Name">
|
<input type="text" id="node-input-name" placeholder="DigiSpark">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-tips">Expects a msg.payload with three part csv string of r,g,b.</div>
|
<div class="form-tips">Expects a msg.payload with three part csv string of r,g,b.</div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<!-- Next, some simple help text is provided for the node. -->
|
|
||||||
<script type="text/x-red" data-help-name="digiRGB">
|
<script type="text/x-red" data-help-name="digiRGB">
|
||||||
<!-- data-help-name identifies the node type this help is for -->
|
|
||||||
<!-- This content appears in the Info sidebar when a node is selected -->
|
|
||||||
<!-- The first <p> is used as the pop-up tool tip when hovering over a -->
|
|
||||||
<!-- node in the palette. -->
|
|
||||||
<p>Simple output node to drive digispark RGB</p>
|
<p>Simple output node to drive digispark RGB</p>
|
||||||
<p>Requires msg.payload to be of the form 'r,g,b'</p>
|
<p>Requires <b>msg.payload</b> to be of the form 'r,g,b'</p>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- Finally, the node type is registered along with all of its properties -->
|
|
||||||
<!-- The example below shows a small subset of the properties that can be set-->
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
RED.nodes.registerType('digiRGB',{
|
RED.nodes.registerType('digiRGB',{
|
||||||
category: 'output', // the palette category
|
category: 'output',
|
||||||
color:"GoldenRod",
|
color:"GoldenRod",
|
||||||
defaults: { // defines the editable properties of the node
|
defaults: {
|
||||||
name: {value:"digiSparkRGB"} // along with default values.
|
name: {value:""}
|
||||||
},
|
},
|
||||||
inputs:1, // set the number of inputs - only 0 or 1
|
inputs:1,
|
||||||
outputs:0, // set the number of outputs - 0 to n
|
outputs:0,
|
||||||
icon: "light.png", // set the icon (held in public/icons)
|
icon: "light.png",
|
||||||
align: "right",
|
align: "right",
|
||||||
label: function() { // sets the default label contents
|
label: function() {
|
||||||
return this.name||this.topic||"sample";
|
return this.name||"digiSparkRGB";
|
||||||
},
|
},
|
||||||
labelStyle: function() { // sets the class to apply to the label
|
labelStyle: function() {
|
||||||
return this.name?"node_label_italic":"";
|
return this.name?"node_label_italic":"";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -14,17 +14,12 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
// Sample Node-RED node file
|
|
||||||
|
|
||||||
// Require main module
|
|
||||||
var RED = require(process.env.NODE_RED_HOME+"/red/red");
|
var RED = require(process.env.NODE_RED_HOME+"/red/red");
|
||||||
var HID = require('node-hid');
|
var HID = require('node-hid');
|
||||||
var device;
|
var device;
|
||||||
var node;
|
var node;
|
||||||
|
|
||||||
// The main node definition - most things happen in here
|
|
||||||
function DigiRGBNode(n) {
|
function DigiRGBNode(n) {
|
||||||
// Create a RED node
|
|
||||||
RED.nodes.createNode(this,n);
|
RED.nodes.createNode(this,n);
|
||||||
node=this;
|
node=this;
|
||||||
|
|
||||||
@ -66,18 +61,8 @@ function DigiRGBNode(n) {
|
|||||||
} else {
|
} else {
|
||||||
node.warn("no digispark RGB found");
|
node.warn("no digispark RGB found");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Register the node by name. This must be called before overriding any of the
|
this.on('close', function() {
|
||||||
// Node functions.
|
if (device) { device.close(); });
|
||||||
|
}
|
||||||
RED.nodes.registerType("digiRGB",DigiRGBNode);
|
RED.nodes.registerType("digiRGB",DigiRGBNode);
|
||||||
|
|
||||||
|
|
||||||
DigiRGBNode.prototype.close = function() {
|
|
||||||
// Called when the node is shutdown - eg on redeploy.
|
|
||||||
// Allows ports to be closed, connections dropped etc.
|
|
||||||
// eg: this.client.disconnect();
|
|
||||||
if (device) {
|
|
||||||
device.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -51,7 +51,5 @@ function PingNode(n) {
|
|||||||
this.on("close", function() {
|
this.on("close", function() {
|
||||||
clearInterval(this.tout);
|
clearInterval(this.tout);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RED.nodes.registerType("ping",PingNode);
|
RED.nodes.registerType("ping",PingNode);
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/x-red" data-help-name="mpd out">
|
<script type="text/x-red" data-help-name="mpd out">
|
||||||
<p>MPD music control output node</p>
|
<p>MPD music control output node.</p>
|
||||||
<p>Expects <b>msg.payload</b> to be a valid mpc command. Currently only simple commands that expect no reply are supported.</p>
|
<p>Expects <b>msg.payload</b> to be a valid mpc command. Currently only simple commands that expect no reply are supported.</p>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -25,11 +25,12 @@ function LevelNode(n) {
|
|||||||
if (err) node.error(err);
|
if (err) node.error(err);
|
||||||
node.db = db;
|
node.db = db;
|
||||||
});
|
});
|
||||||
|
this.on('close', function() {
|
||||||
|
if (node.db) { node.db.close(); }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
RED.nodes.registerType("leveldbase",LevelNode);
|
RED.nodes.registerType("leveldbase",LevelNode);
|
||||||
LevelNode.prototype.close = function() {
|
|
||||||
this.db.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
function LevelDBNodeIn(n) {
|
function LevelDBNodeIn(n) {
|
||||||
RED.nodes.createNode(this,n);
|
RED.nodes.createNode(this,n);
|
||||||
|
@ -54,7 +54,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/x-red" data-template-name="mysql">
|
<script type="text/x-red" data-template-name="mysql">
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="node-input-mydb"><i class="icon-briefcase"></i> Database</label>
|
<label for="node-input-mydb"><i class="icon-briefcase"></i> Database</label>
|
||||||
@ -95,53 +94,3 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!--
|
|
||||||
<script type="text/x-red" data-template-name="mysql out">
|
|
||||||
<div class="form-row node-input-level">
|
|
||||||
<label for="node-input-level"><i class="icon-briefcase"></i> Database</label>
|
|
||||||
<input type="text" id="node-input-level">
|
|
||||||
</div>
|
|
||||||
<div class="form-row">
|
|
||||||
<label for="node-input-operation"><i class="icon-wrench"></i> Operation</label>
|
|
||||||
<select type="text" id="node-input-operation" style="display: inline-block; vertical-align: top;">
|
|
||||||
<option value="store">Store</option>
|
|
||||||
<option value="delete">Delete</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="form-row">
|
|
||||||
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
|
|
||||||
<input type="text" id="node-input-name" placeholder="Name">
|
|
||||||
</div>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/x-red" data-help-name="mysql out">
|
|
||||||
<p>Allows access to a MySQL database.</p>
|
|
||||||
<p>Use this node to either <b>put</b> (store) the <b>msg.payload</b> to the named database file, using <b>msg.topic</b> as the key.</p>
|
|
||||||
<p>To <b>delete</b> information select delete in the properties dialogue and again use <b>msg.topic</b> as the key.</b>.</p>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
RED.nodes.registerType('mysql out',{
|
|
||||||
category: 'storage-output',
|
|
||||||
color:"#e97b00",
|
|
||||||
defaults: {
|
|
||||||
level: {type:"MySQLdatabase",required:true},
|
|
||||||
operation: {value:"store"},
|
|
||||||
name: {value:""}
|
|
||||||
},
|
|
||||||
inputs:1,
|
|
||||||
outputs:0,
|
|
||||||
icon: "db.png",
|
|
||||||
align: "right",
|
|
||||||
label: function() {
|
|
||||||
var levelNode = RED.nodes.node(this.level);
|
|
||||||
return this.name||(levelNode?levelNode.label():"mysql");
|
|
||||||
},
|
|
||||||
labelStyle: function() {
|
|
||||||
return this.name?"node_label_italic":"";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
-->
|
|
||||||
|
Loading…
Reference in New Issue
Block a user