1
0
mirror of https://github.com/node-red/node-red-nodes.git synced 2023-10-10 13:36:58 +02:00

Make fade work properly for Blink1,

And add some colour name support for @cheerlights
This commit is contained in:
Dave C-J 2013-12-19 14:38:26 +00:00
parent 57d5db945d
commit 83965a91af
2 changed files with 21 additions and 4 deletions

View File

@ -23,11 +23,11 @@
<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="Name">
</div> </div>
<div class="form-tips">Expects a msg.payload with three part csv string of r,g,b.</div>
</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.</p>
<p>Expects a msg.payload with either a three part csv string of r,g,b or a hex colour #rrggbb</p>
</script> </script>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -19,7 +19,7 @@ var Blink1 = require("node-blink1");
function Blink1Node(n) { function Blink1Node(n) {
RED.nodes.createNode(this,n); RED.nodes.createNode(this,n);
this.fade = n.fade||0; this.fade = Number(n.fade) || 0;
var node = this; var node = this;
try { try {
@ -43,14 +43,31 @@ function Blink1Node(n) {
} }
else { else {
// you can add fancy colours by name here if you want... // you can add fancy colours by name here if you want...
// these are the @cheerlight ones.
var result = msg.payload.toLowerCase().match(/red|green|blue|cyan|white|warmwhite|purple|magenta|yellow|orange|black/g);
var colors = {"red":"#FF0000","green":"#008000","blue":"#0000FF","cyan":"#00FFFF","white":"#FFFFFF",
"warmwhite":"#FDF5E6","purple":"#800080","magenta":"#FF00FF","yellow":"#FFFF00","orange":"#FFA500","black":"#000000"}
if (result != null) {
for (var colour in result) {
var c = colors[result[colour]];
var r = parseInt(c.slice(1,3),16);
var g = parseInt(c.slice(3,5),16);
var b = parseInt(c.slice(5),16);
if (node.fade == 0) { blink1.setRGB( r, g, b ); }
else { blink1.fadeToRGB(node.fade, r, g, b ); }
}
}
else {
node.warn("Blink1 : invalid msg : "+msg.payload); node.warn("Blink1 : invalid msg : "+msg.payload);
} }
} }
}
else { else {
node.warn("No Blink1 found"); node.warn("No Blink1 found");
} }
}); });
this.on("close", function() { this.on("close", function() {
console.log(typeof blink1.close);
if (blink1 && typeof blink1.close == "function") { if (blink1 && typeof blink1.close == "function") {
blink1.close(); blink1.close();
} }