UNPKG

node-red-contrib-ledmatrix

Version:

Contains the nodes used in TimeSquAir to use the LEDMatrix library

84 lines (72 loc) 2.44 kB
/** 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); }