node-red-contrib-ledmatrix
Version:
Contains the nodes used in TimeSquAir to use the LEDMatrix library
84 lines (72 loc) • 2.44 kB
JavaScript
/**
Copyright © 2015 Digital Airways (www.DigitalAirways.com)
This work is free. You can redistribute it and/or modify it under the
terms of the Do What The Fuck You Want To Public License, Version 2,
as published by Sam Hocevar.
See http://www.wtfpl.net for more details.
**/
module.exports = function(RED) {
"use strict";
var Mustache = require("mustache");
var exec = require('child_process').exec;
var CMD = "killall -9 led-matrix;";
CMD += "killall -9 convert ;";
CMD += "{{{script}}}";
CMD += "pnmcat -l {{{src}}} /root/thethingbox/rpi-rgb-led-matrix-sh/col5.ppm > tmp;\n"
CMD += "mv -f tmp {{{src}}};\n";
CMD += "/root/rpi-rgb-led-matrix-master/led-matrix -r {{r}} -c {{c}} -d -t {{t}} -D {{D}} -m {{m}} {{p}} {{{src}}} 2> {{{log}}};"
function ledmatrix(n) {
RED.nodes.createNode(this,n);
this.time = n.time;
this.speed = n.speed;
var node = this;
this.on('input', function (msg) {
var speed_value = typeof msg.speed == "undefined" || msg.speed == null ? this.speed : msg.speed;
var time = typeof msg.time == "undefined" || msg.time == null ? this.time : msg.time;
msg.testintensity = msg.intensity ? 100 - parseInt(msg.intensity) : 20;
switch(parseInt(speed_value)){
case 0:
var speed = 0;
break;
case 1:
var speed = 100;
break;
case 2:
var speed = 70;
break;
case 3:
var speed = 50;
break;
case 4:
var speed = 30;
break;
case 5:
var speed = 10;
break;
default:
var speed = 50;
break;
}
var params = {
r: 16,
c: 1,
t: time,
D: 1,
m: speed,
p: (speed==0)?"-p 5":"",
intensity: msg.intensity ? 100 - parseInt(msg.intensity) : 20,
src: "/root/userdir/ledmatrix/final.ppm",
log: "/root/userdir/ledmatrix/log.txt",
script: msg.cmd
}
var cmd = Mustache.render(CMD, params);
params = {
finalppm: "/root/userdir/ledmatrix/final.ppm"
}
cmd = Mustache.render(cmd, params);
var child = exec(cmd, { encoding: "binary", maxBuffer: 10000000 }, function(err, stdout, stderr) {
});
});
}
RED.nodes.registerType("ledmatrix", ledmatrix);
}