1
0
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:
Dave C-J 2013-11-10 17:01:19 +00:00
parent 6425bd75cb
commit 793fd3c7fd
16 changed files with 340 additions and 375 deletions

View File

@ -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...

View File

@ -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,

View File

@ -53,5 +53,4 @@
return this.name?"node_label_italic":""; return this.name?"node_label_italic":"";
} }
}); });
</script> </script>

View File

@ -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);

View File

@ -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);

View File

@ -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>

View File

@ -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);

View File

@ -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":"";
} }
}); });

View File

@ -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();
}
}

View File

@ -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);

View File

@ -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>

View File

@ -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);

View File

@ -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>
-->