UNPKG

node-red-contrib-ledmatrix

Version:

Contains the nodes used in TimeSquAir to use the LEDMatrix library

75 lines (65 loc) 3.11 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 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); }