node-red-contrib-ledmatrix
Version:
Contains the nodes used in TimeSquAir to use the LEDMatrix library
75 lines (65 loc) • 3.11 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 CMD = "{{#url}}wget {{{src}}} -O tmphttp > {{{log}}};\n{{/url}}";
CMD += "case `file {{#url}}tmphttp{{/url}}{{^url}}{{{src}}}{{/url}}` in\n";
CMD += "\t*JPEG*) jpegtopnm {{#url}}tmphttp{{/url}}{{^url}}{{{src}}}{{/url}} | pnmscale -ysize 16 {{#intensity}}| ppmbrighten -v -{{intensity}} 2>> {{{log}}} {{/intensity}} > tmp;;\n";
CMD += "\t*PNG*) pngtopnm -background black {{#url}}tmphttp{{/url}}{{^url}}{{{src}}}{{/url}} | pnmscale -ysize 16 {{#intensity}}| ppmbrighten -v -{{intensity}} 2>> {{{log}}} {{/intensity}} > tmp;;\n";
CMD += "\t*PPM*) cat {{#url}}tmphttp{{/url}}{{^url}}{{{src}}}{{/url}} | pnmscale -ysize 16 {{#intensity}}| ppmbrighten -v -{{intensity}} 2>> {{{log}}} {{/intensity}} > tmp;;\n";
CMD += "esac\n";
CMD += "\nif [ -e {{{dest}}} ]\n";
CMD += "then\n";
CMD += "\tif [ {{cat}} -eq 0 ]\n";
CMD += "\tthen\n";
CMD += "\t\tpnmcat -l {{{dest}}} /root/thethingbox/rpi-rgb-led-matrix-sh/col.ppm tmp > tmp2;\n";
CMD += "\telse\n";
CMD += "\t\tpnmcat -l {{{dest}}} tmp > tmp2;\n";
CMD += "\tfi\n";
CMD += "\tmv -f tmp2 {{{dest}}};\n\trm tmp;\n";
CMD += "else\n";
CMD += "\tmv -f tmp {{{dest}}}\n";
CMD += "fi\n";
CMD += "{{#url}}rm tmphttp;\n{{/url}}";
function ledpicture(n) {
RED.nodes.createNode(this,n);
this.text = n.text;
var node = this;
this.on('input', function (msg) {
if(!msg.picture || msg.picture == "") {
return node.send(msg);
}
var picl = msg.picture.length;
// var params = {
// url: msg.picture.indexOf("http://") == 0 || msg.picture.indexOf("https://") == 0,
// jpeg: msg.picture.indexOf(".jpeg") == picl-5 || msg.picture.indexOf(".jpg") == picl-4,
// png: msg.picture.indexOf(".png") == picl-4,
// src: msg.picture,
// dest: "{{{finalppm}}}",
// log: "/root/userdir/ledmatrix/log.txt"
// }
// params.ppm = !(params.jpeg || params.png);
var params = {
cat: msg.alongside || 0,
url: msg.picture.indexOf("http://") == 0 || msg.picture.indexOf("https://") == 0,
src: msg.picture,
intensity: msg.intensity ? 100 - msg.intensity : null,
dest: "{{{finalppm}}}",
log: "/root/userdir/ledmatrix/log.txt"
}
var cmd = Mustache.render(CMD, params);
if(typeof msg.cmd != "string") {
msg.cmd = "";
}
msg.cmd += cmd;
node.send(msg);
});
}
RED.nodes.registerType("ledpicture", ledpicture);
}