diff --git a/devices.js b/devices.js
index a07feea..abd1a7c 100644
--- a/devices.js
+++ b/devices.js
@@ -5,6 +5,25 @@ module.exports = {
'showtec-multidim2': {
channels: ['1', '2', '3', '4']
},
+ 'led-wall-tri-4c-1': {
+ channels: ['dimmer', 'red', 'green', 'blue'],
+ ranges: {
+ ctrl: {
+ type: 'option',
+ 'options': [
+ {'value': 0, 'label': 'Dimmer'},
+ {'value': 0, 'label': 'Red'},
+ {'value': 0, 'label': 'Green'},
+ {'value': 0, 'label': 'Blue'},
+ ]
+ },
+ 'dimmer': {
+ 'type': 'slider',
+ 'min': 0,
+ 'max': 255
+ }
+ }
+ },
'eurolite-led-bar': {
channels: ['ctrl', 'dimmer', 'strobe', 'red0', 'green0', 'blue0', 'red1', 'green1', 'blue1', 'red2', 'green2', 'blue2'],
ranges: {
diff --git a/dmx-web.js b/dmx-web.js
index 9ef849d..c363ef7 100755
--- a/dmx-web.js
+++ b/dmx-web.js
@@ -8,6 +8,7 @@ var express = require('express')
var socketio = require('socket.io')
var program = require('commander')
var DMX = require('./dmx')
+var pliabAnim = require('./pliabAnim')
var A = DMX.Animation
program
@@ -48,14 +49,9 @@ function DMXWeb() {
}
}
})
- io.set('log level', 1)
-
- app.configure(function() {
- app.use(connect.json())
- })
app.get('/', function(req, res) {
- res.sendfile(__dirname + '/index.html')
+ res.sendFile(__dirname + '/index.html')
})
app.get('/config', function(req, res) {
@@ -93,10 +89,17 @@ function DMXWeb() {
// preserve old states
var old = dmx.universeToObject(req.params.universe)
- var animation = new A()
- for(var step in req.body) {
+ var animation = new A()
+ for(var step in req.body) {
+ let stepTo = req.body[step].to;
+
+ if (stepTo.hasOwnProperty('color') || stepTo.hasOwnProperty('opacity')) {
+ stepTo = pliabAnim.convertToDMX(stepTo);
+ }
+
+ console.log('stepTo', stepTo);
animation.add(
- req.body[step].to,
+ stepTo,
req.body[step].duration || 0,
req.body[step].options || {}
)
diff --git a/dmx-web.json b/dmx-web.json
new file mode 100644
index 0000000..92099bf
--- /dev/null
+++ b/dmx-web.json
@@ -0,0 +1,28 @@
+{
+ "server": {
+ "listen_port": 8080,
+ "listen_host": "::"
+ },
+ "presets": [
+ {
+ "label": "White",
+ "values": {
+ "office": { "1": 16, "2": 255, "3": 0, "4": 255, "5": 255, "6": 255, "16": 16, "17": 255, "18": 0, "19": 255, "20": 255, "21": 255 }
+ }
+ }
+ ],
+ "universes": {
+ "office": {
+ "output": {
+ "driver": "enttec-usb-dmx-pro",
+ "device": "/dev/cu.usbserial-EN216442"
+ },
+ "devices": [
+ {
+ "type": "led-wall-tri-4c-1",
+ "address": 0
+ }
+ ]
+ }
+ }
+}
diff --git a/drivers/dmx4all.js b/drivers/dmx4all.js
index f7190d6..a808920 100644
--- a/drivers/dmx4all.js
+++ b/drivers/dmx4all.js
@@ -11,7 +11,7 @@ function DMX4ALL(device_id, options) {
this.universe.fill(0)
this.dev = new SerialPort(device_id, {
- 'baudrate': 38400,
+ 'baudRate': 38400,
'databits': 8,
'stopbits': 1,
'parity': 'none'
@@ -26,7 +26,7 @@ function DMX4ALL(device_id, options) {
}
DMX4ALL.prototype.send_universe = function() {
- if(!this.dev.isOpen()) {
+ if(!this.dev.writable) {
return
}
diff --git a/drivers/dmxking-ultra-dmx-pro.js b/drivers/dmxking-ultra-dmx-pro.js
index 165b849..4b50ff5 100644
--- a/drivers/dmxking-ultra-dmx-pro.js
+++ b/drivers/dmxking-ultra-dmx-pro.js
@@ -25,7 +25,7 @@ function DMXKingUltraDMXPro(device_id, options) {
}
this.dev = new SerialPort(device_id, {
- 'baudrate': 250000,
+ 'baudRate': 250000,
'databits': 8,
'stopbits': 2,
'parity': 'none'
@@ -37,7 +37,7 @@ function DMXKingUltraDMXPro(device_id, options) {
}
DMXKingUltraDMXPro.prototype.send_universe = function() {
- if(!this.dev.isOpen()) {
+ if(!this.dev.writable) {
return
}
var hdr = Buffer([
diff --git a/drivers/enttec-open-usb-dmx.js b/drivers/enttec-open-usb-dmx.js
index aa3f56a..b6508c8 100644
--- a/drivers/enttec-open-usb-dmx.js
+++ b/drivers/enttec-open-usb-dmx.js
@@ -12,7 +12,7 @@ function EnttecOpenUsbDMX(device_id, options) {
self.interval = 46
this.dev = new SerialPort(device_id, {
- 'baudrate': 250000,
+ 'baudRate': 250000,
'databits': 8,
'stopbits': 2,
'parity': 'none'
@@ -27,7 +27,7 @@ function EnttecOpenUsbDMX(device_id, options) {
EnttecOpenUsbDMX.prototype.send_universe = function() {
var self = this
- if(!this.dev.isOpen()) {
+ if(!this.dev.writable) {
return
}
diff --git a/drivers/enttec-usb-dmx-pro.js b/drivers/enttec-usb-dmx-pro.js
index d854ce2..99ec7fe 100644
--- a/drivers/enttec-usb-dmx-pro.js
+++ b/drivers/enttec-usb-dmx-pro.js
@@ -1,75 +1,76 @@
-"use strict"
+"use strict";
-var SerialPort = require("serialport")
+const SerialPort = require("serialport");
-var ENTTEC_PRO_DMX_STARTCODE = 0x00
- , ENTTEC_PRO_START_OF_MSG = 0x7e
- , ENTTEC_PRO_END_OF_MSG = 0xe7
- , ENTTEC_PRO_SEND_DMX_RQ = 0x06
- , ENTTEC_PRO_RECV_DMX_PKT = 0x05
- ;
+const ENTTEC_PRO_DMX_STARTCODE = 0x00
+, ENTTEC_PRO_START_OF_MSG = 0x7e
+, ENTTEC_PRO_END_OF_MSG = 0xe7
+, ENTTEC_PRO_SEND_DMX_RQ = 0x06
+, ENTTEC_PRO_RECV_DMX_PKT = 0x05
+;
-function EnttecUSBDMXPRO(device_id, options) {
- var self = this
- options = options || {}
- this.universe = new Buffer(513)
- this.universe.fill(0)
-
- this.dev = new SerialPort(device_id, {
- 'baudrate': 250000,
- 'databits': 8,
- 'stopbits': 2,
- 'parity': 'none'
- }, function(err) {
- if(!err) {
- self.send_universe()
- }
- })
-}
-
-EnttecUSBDMXPRO.prototype.send_universe = function() {
- if(!this.dev.isOpen()) {
- return
+const EnttecUSBDMXPRO = class EnttecUSBDMXPRO {
+ constructor(device_id, options) {
+ options = options || {};
+ this.universe = new Buffer(512);
+ this.universe.fill(0);
+
+ this.dev = new SerialPort(device_id, {
+ 'baudRate': 250000,
+ 'databits': 8,
+ 'stopbits': 2,
+ 'parity': 'none'
+ }, (err) => {
+ if(!err) {
+ this.send_universe();
+ }
+ })
}
- var hdr = Buffer([
- ENTTEC_PRO_START_OF_MSG,
- ENTTEC_PRO_SEND_DMX_RQ,
- (this.universe.length) & 0xff,
- ((this.universe.length) >> 8) & 0xff,
- ENTTEC_PRO_DMX_STARTCODE
- ])
- var msg = Buffer.concat([
- hdr,
- this.universe.slice(1),
- Buffer([ENTTEC_PRO_END_OF_MSG])
- ])
- this.dev.write(msg)
-}
+ send_universe () {
+ if(!this.dev.writable) {
+ return;
+ }
+ const hdr = Buffer([
+ ENTTEC_PRO_START_OF_MSG,
+ ENTTEC_PRO_SEND_DMX_RQ,
+ (this.universe.length + 1) & 0xff,
+ ((this.universe.length + 1) >> 8) & 0xff,
+ ENTTEC_PRO_DMX_STARTCODE
+ ]);
+
+ const msg = Buffer.concat([
+ hdr,
+ this.universe,
+ Buffer([ENTTEC_PRO_END_OF_MSG])
+ ]);
+ this.dev.write(msg);
+ }
-EnttecUSBDMXPRO.prototype.start = function() {}
-EnttecUSBDMXPRO.prototype.stop = function() {}
+ start() {}
+ stop() {}
-EnttecUSBDMXPRO.prototype.close = function(cb) {
- this.dev.close(cb)
-}
+ close(cb) {
+ this.dev.close(cb);
+ }
-EnttecUSBDMXPRO.prototype.update = function(u) {
- for(var c in u) {
- this.universe[c] = u[c]
+ update(u) {
+ for(let c in u) {
+ this.universe[c] = u[c];
+ }
+ this.send_universe();
}
- this.send_universe()
-}
-EnttecUSBDMXPRO.prototype.updateAll = function(v){
- for(var i = 1; i <= 512; i++) {
- this.universe[i] = v
+ updateAll(v) {
+ for(let i = 0; i < 512; i++) {
+ this.universe[i] = v;
+ }
+ this.send_universe();
}
- this.send_universe()
-}
-EnttecUSBDMXPRO.prototype.get = function(c) {
- return this.universe[c]
+ get(c) {
+ return this.universe[c];
+ }
}
module.exports = EnttecUSBDMXPRO
\ No newline at end of file
diff --git a/index.html b/index.html
index b0acbd0..66dad48 100644
--- a/index.html
+++ b/index.html
@@ -55,8 +55,7 @@
function get_html_id(universe, channel) {
return 'channel_' + universe + '_' + channel;
}
-
- var socket = io.connect();
+ var socket = io();
socket.on('init', function (msg) {
$('#presets').empty();
$('#sliders').empty();
@@ -73,7 +72,6 @@
socket.emit('update', universe, values[universe]);
}
};}(setup.presets[preset].values));
- console.log(html);
}
/* blackout button */
@@ -95,16 +93,20 @@
var html = "
" + universe + "
";
for(var device in setup.universes[universe].devices) {
var dev = setup.universes[universe].devices[device];
- html += '
'
- for(var channel in devices[dev.type].channels) {
- var channel_id = dev.address + Number(channel)
- var html_id = get_html_id(universe, channel_id);
- html += '
'
- html += '
';
- html += '
'
+ if (devices[dev.type]) {
+ html += '
'
+ for(var channel in devices[dev.type].channels) {
+ var channel_id = dev.address + Number(channel)
+ var html_id = get_html_id(universe, channel_id);
+ html += '
'
+ html += '';
+ html += ''
+ html += '
'
+ }
html += '
'
+ } else {
+ console.log("[WARNING] Device " + dev.type + " is unknown and cannot be displayed in sliders overview!")
}
- html += '
'
}
html += "
";
$(html).hide().appendTo('#sliders').fadeIn();
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..bb42994
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1355 @@
+{
+ "name": "dmx",
+ "version": "0.0.6",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "active-x-obfuscator": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/active-x-obfuscator/-/active-x-obfuscator-0.0.1.tgz",
+ "integrity": "sha1-CJuJs3FF/x2ex0r2UwvlUmyuHxo=",
+ "requires": {
+ "zeparser": "0.0.5"
+ }
+ },
+ "base64id": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz",
+ "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8="
+ },
+ "batch": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz",
+ "integrity": "sha1-/S4Fp6XWlrTbkxQBPihdj/NVfsM="
+ },
+ "bindings": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
+ "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
+ },
+ "buffer-crc32": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz",
+ "integrity": "sha1-vj5TgvwCttYySVasGvmKqYsIU0w="
+ },
+ "bytes": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz",
+ "integrity": "sha1-VVsIq8sGP4l1kFMCUj5M1P/f3zE="
+ },
+ "color-convert": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
+ "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
+ "integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg="
+ },
+ "connect": {
+ "version": "2.11.2",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-2.11.2.tgz",
+ "integrity": "sha1-zQXGYfaG3+m80uEiDIX+goSNsBA=",
+ "requires": {
+ "buffer-crc32": "0.2.1",
+ "bytes": "0.2.1",
+ "cookie": "0.1.0",
+ "cookie-signature": "1.0.1",
+ "debug": "0.8.1",
+ "fresh": "0.2.0",
+ "methods": "0.1.0",
+ "multiparty": "2.2.0",
+ "negotiator": "0.3.0",
+ "pause": "0.0.1",
+ "qs": "0.6.5",
+ "raw-body": "1.1.2",
+ "send": "0.1.4",
+ "uid2": "0.0.3"
+ }
+ },
+ "cookie": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz",
+ "integrity": "sha1-kOtGndzpBchm3mh+/EMTHYgB+dA="
+ },
+ "cookie-signature": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz",
+ "integrity": "sha1-ROByFIrwHm6OJK+/EmkNaK5pjss="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "debug": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz",
+ "integrity": "sha1-IP9NJvXkIstoobrLu2EDmtjBwTA="
+ },
+ "define-properties": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
+ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "requires": {
+ "foreach": "2.0.5",
+ "object-keys": "1.0.11"
+ }
+ },
+ "express": {
+ "version": "3.4.8",
+ "resolved": "https://registry.npmjs.org/express/-/express-3.4.8.tgz",
+ "integrity": "sha1-qnqJht4HBTM39Lxe2aZFPZzI4uE=",
+ "requires": {
+ "buffer-crc32": "0.2.1",
+ "commander": "1.3.2",
+ "connect": "2.12.0",
+ "cookie": "0.1.0",
+ "cookie-signature": "1.0.1",
+ "debug": "0.8.1",
+ "fresh": "0.2.0",
+ "merge-descriptors": "0.0.1",
+ "methods": "0.1.0",
+ "mkdirp": "0.3.5",
+ "range-parser": "0.0.4",
+ "send": "0.1.4"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz",
+ "integrity": "sha1-io8w7GcKb91kr1LxkUuQfXnq1bU=",
+ "requires": {
+ "keypress": "0.1.0"
+ }
+ },
+ "connect": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-2.12.0.tgz",
+ "integrity": "sha1-Mdj6DcrN8ZCNgivSkjvootKn7Zo=",
+ "requires": {
+ "batch": "0.5.0",
+ "buffer-crc32": "0.2.1",
+ "bytes": "0.2.1",
+ "cookie": "0.1.0",
+ "cookie-signature": "1.0.1",
+ "debug": "0.8.1",
+ "fresh": "0.2.0",
+ "methods": "0.1.0",
+ "multiparty": "2.2.0",
+ "negotiator": "0.3.0",
+ "pause": "0.0.1",
+ "qs": "0.6.6",
+ "raw-body": "1.1.2",
+ "send": "0.1.4",
+ "uid2": "0.0.3"
+ }
+ },
+ "qs": {
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz",
+ "integrity": "sha1-bgFQmP9RlouKPIGQAdXyyJvEsQc="
+ }
+ }
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
+ },
+ "fresh": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz",
+ "integrity": "sha1-v9lALPPfEsSkwxDHn5mj3eE9NKc="
+ },
+ "function-bind": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
+ "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E="
+ },
+ "immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "keypress": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
+ "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo="
+ },
+ "lie": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
+ "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+ "requires": {
+ "immediate": "3.0.6"
+ }
+ },
+ "merge-descriptors": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.1.tgz",
+ "integrity": "sha1-L/CYDJJM+B0LXR+2ARd8uLtWwNA="
+ },
+ "methods": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-0.1.0.tgz",
+ "integrity": "sha1-M11Cnu/SG3us8unJIqjSvRSjDk8="
+ },
+ "mime": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
+ "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA="
+ },
+ "mkdirp": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+ "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "multiparty": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz",
+ "integrity": "sha1-pWfCrwAK0i3I8qZT2Rl4rh9TFvQ=",
+ "requires": {
+ "readable-stream": "1.1.14",
+ "stream-counter": "0.2.0"
+ }
+ },
+ "nan": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
+ "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U="
+ },
+ "negotiator": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz",
+ "integrity": "sha1-cG1pLv7d9XTVfqn7GriaT6fuj2A="
+ },
+ "object-keys": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
+ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
+ },
+ "object.assign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz",
+ "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=",
+ "requires": {
+ "define-properties": "1.1.2",
+ "function-bind": "1.1.0",
+ "object-keys": "1.0.11"
+ }
+ },
+ "options": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
+ },
+ "pause": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
+ "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
+ },
+ "policyfile": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz",
+ "integrity": "sha1-1rgurZiueeviKOLa9ZAzEeyYLk0="
+ },
+ "qs": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.5.tgz",
+ "integrity": "sha1-KUsmjksNQlD23eGbO4s0k13/FO8="
+ },
+ "range-parser": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz",
+ "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs="
+ },
+ "raw-body": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.2.tgz",
+ "integrity": "sha1-x0swBN6l3v0WlhcRBqx0DsMdYr4=",
+ "requires": {
+ "bytes": "0.2.1"
+ }
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "redis": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz",
+ "integrity": "sha1-7le3pE0l7BWU5ENl2BZfp9HUgRo=",
+ "optional": true
+ },
+ "send": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz",
+ "integrity": "sha1-vnDY0b4B3mGCGvE3gLUDRaT3Gr0=",
+ "requires": {
+ "debug": "0.8.1",
+ "fresh": "0.2.0",
+ "mime": "1.2.11",
+ "range-parser": "0.0.4"
+ }
+ },
+ "serialport": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/serialport/-/serialport-4.0.7.tgz",
+ "integrity": "sha1-QhxhiophK9QM+kYbSkYVTa8iKaU=",
+ "requires": {
+ "bindings": "1.2.1",
+ "commander": "2.11.0",
+ "debug": "2.6.8",
+ "lie": "3.1.1",
+ "nan": "2.6.2",
+ "node-pre-gyp": "0.6.32",
+ "object.assign": "4.0.4"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ=="
+ },
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.6.32",
+ "bundled": true,
+ "requires": {
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "npmlog": "4.0.1",
+ "rc": "1.1.6",
+ "request": "2.79.0",
+ "rimraf": "2.5.4",
+ "semver": "5.3.0",
+ "tar": "2.2.1",
+ "tar-pack": "3.3.0"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1.0.9"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.0.9",
+ "bundled": true
+ }
+ }
+ },
+ "npmlog": {
+ "version": "4.0.1",
+ "bundled": true,
+ "requires": {
+ "are-we-there-yet": "1.1.2",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.2",
+ "set-blocking": "2.0.0"
+ },
+ "dependencies": {
+ "are-we-there-yet": {
+ "version": "1.1.2",
+ "bundled": true,
+ "requires": {
+ "delegates": "1.0.0",
+ "readable-stream": "2.2.2"
+ },
+ "dependencies": {
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "readable-stream": {
+ "version": "2.2.2",
+ "bundled": true,
+ "requires": {
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ },
+ "dependencies": {
+ "buffer-shims": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "gauge": {
+ "version": "2.7.2",
+ "bundled": true,
+ "requires": {
+ "aproba": "1.0.4",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.0",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "supports-color": "0.2.0",
+ "wide-align": "1.1.0"
+ },
+ "dependencies": {
+ "aproba": {
+ "version": "1.0.4",
+ "bundled": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "object-assign": {
+ "version": "4.1.0",
+ "bundled": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ },
+ "dependencies": {
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "supports-color": {
+ "version": "0.2.0",
+ "bundled": true
+ },
+ "wide-align": {
+ "version": "1.1.0",
+ "bundled": true,
+ "requires": {
+ "string-width": "1.0.2"
+ }
+ }
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "rc": {
+ "version": "1.1.6",
+ "bundled": true,
+ "requires": {
+ "deep-extend": "0.4.1",
+ "ini": "1.3.4",
+ "minimist": "1.2.0",
+ "strip-json-comments": "1.0.4"
+ },
+ "dependencies": {
+ "deep-extend": {
+ "version": "0.4.1",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "bundled": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "strip-json-comments": {
+ "version": "1.0.4",
+ "bundled": true
+ }
+ }
+ },
+ "request": {
+ "version": "2.79.0",
+ "bundled": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.5.0",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.0",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.2",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.13",
+ "oauth-sign": "0.8.2",
+ "qs": "6.3.0",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.2",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.0.1"
+ },
+ "dependencies": {
+ "aws-sign2": {
+ "version": "0.6.0",
+ "bundled": true
+ },
+ "aws4": {
+ "version": "1.5.0",
+ "bundled": true
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "bundled": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "bundled": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ },
+ "dependencies": {
+ "delayed-stream": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.0",
+ "bundled": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "bundled": true
+ },
+ "form-data": {
+ "version": "2.1.2",
+ "bundled": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.13"
+ },
+ "dependencies": {
+ "asynckit": {
+ "version": "0.4.0",
+ "bundled": true
+ }
+ }
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "bundled": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "commander": "2.11.0",
+ "is-my-json-valid": "2.15.0",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "bundled": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "bundled": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "bundled": true
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "is-my-json-valid": {
+ "version": "2.15.0",
+ "bundled": true,
+ "requires": {
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "jsonpointer": "4.0.0",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "generate-function": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "bundled": true,
+ "requires": {
+ "is-property": "1.0.2"
+ },
+ "dependencies": {
+ "is-property": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "jsonpointer": {
+ "version": "4.0.0",
+ "bundled": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "bundled": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ },
+ "dependencies": {
+ "pinkie": {
+ "version": "2.0.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "bundled": true,
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "2.10.1",
+ "bundled": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "bundled": true,
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "bundled": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "bundled": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.3.1",
+ "sshpk": "1.10.1"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "0.2.0",
+ "bundled": true
+ },
+ "jsprim": {
+ "version": "1.3.1",
+ "bundled": true,
+ "requires": {
+ "extsprintf": "1.0.2",
+ "json-schema": "0.2.3",
+ "verror": "1.3.6"
+ },
+ "dependencies": {
+ "extsprintf": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "bundled": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "bundled": true,
+ "requires": {
+ "extsprintf": "1.0.2"
+ }
+ }
+ }
+ },
+ "sshpk": {
+ "version": "1.10.1",
+ "bundled": true,
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.0",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.6",
+ "jodid25519": "1.0.2",
+ "jsbn": "0.1.0",
+ "tweetnacl": "0.14.4"
+ },
+ "dependencies": {
+ "asn1": {
+ "version": "0.2.3",
+ "bundled": true
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.4"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.0"
+ }
+ },
+ "getpass": {
+ "version": "0.1.6",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "jodid25519": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.0",
+ "bundled": true,
+ "optional": true
+ },
+ "tweetnacl": {
+ "version": "0.14.4",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ }
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "bundled": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "bundled": true
+ },
+ "mime-types": {
+ "version": "2.1.13",
+ "bundled": true,
+ "requires": {
+ "mime-db": "1.25.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.25.0",
+ "bundled": true
+ }
+ }
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "bundled": true
+ },
+ "qs": {
+ "version": "6.3.0",
+ "bundled": true
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "bundled": true
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "bundled": true,
+ "requires": {
+ "punycode": "1.4.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "bundled": true
+ }
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "bundled": true
+ },
+ "uuid": {
+ "version": "3.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "rimraf": {
+ "version": "2.5.4",
+ "bundled": true,
+ "requires": {
+ "glob": "7.1.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.1",
+ "bundled": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ },
+ "dependencies": {
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ },
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "minimatch": {
+ "version": "3.0.3",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "1.1.6"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.6",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.4.2",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ },
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.10",
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "block-stream": {
+ "version": "0.0.9",
+ "bundled": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "fstream": {
+ "version": "1.0.10",
+ "bundled": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.5.4"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "tar-pack": {
+ "version": "3.3.0",
+ "bundled": true,
+ "requires": {
+ "debug": "2.2.0",
+ "fstream": "1.0.10",
+ "fstream-ignore": "1.0.5",
+ "once": "1.3.3",
+ "readable-stream": "2.1.5",
+ "rimraf": "2.5.4",
+ "tar": "2.2.1",
+ "uid-number": "0.0.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.2.0",
+ "bundled": true,
+ "requires": {
+ "ms": "0.7.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "bundled": true
+ }
+ }
+ },
+ "fstream": {
+ "version": "1.0.10",
+ "bundled": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.5.4"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "fstream-ignore": {
+ "version": "1.0.5",
+ "bundled": true,
+ "requires": {
+ "fstream": "1.0.10",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "minimatch": {
+ "version": "3.0.3",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "1.1.6"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.6",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.4.2",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "once": {
+ "version": "1.3.3",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ },
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.1.5",
+ "bundled": true,
+ "requires": {
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ },
+ "dependencies": {
+ "buffer-shims": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "socket.io": {
+ "version": "0.9.19",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.19.tgz",
+ "integrity": "sha1-SQu1/Q3FTPAC7gTmf638Q7hIo48=",
+ "requires": {
+ "base64id": "0.1.0",
+ "policyfile": "0.0.4",
+ "redis": "0.7.3",
+ "socket.io-client": "0.9.16"
+ }
+ },
+ "socket.io-client": {
+ "version": "0.9.16",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz",
+ "integrity": "sha1-TadRXF53MEHRtCOXBBW8xDDzX8Y=",
+ "requires": {
+ "active-x-obfuscator": "0.0.1",
+ "uglify-js": "1.2.5",
+ "ws": "0.4.32",
+ "xmlhttprequest": "1.4.2"
+ }
+ },
+ "stream-counter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz",
+ "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=",
+ "requires": {
+ "readable-stream": "1.1.14"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "tinycolor": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz",
+ "integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ="
+ },
+ "uglify-js": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz",
+ "integrity": "sha1-tULCx29477NLIAsgF3Y0Mw/3ArY="
+ },
+ "uid2": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
+ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I="
+ },
+ "ws": {
+ "version": "0.4.32",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz",
+ "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=",
+ "requires": {
+ "commander": "2.1.0",
+ "nan": "1.0.0",
+ "options": "0.0.6",
+ "tinycolor": "0.0.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz",
+ "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E="
+ },
+ "nan": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz",
+ "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg="
+ }
+ }
+ },
+ "xmlhttprequest": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz",
+ "integrity": "sha1-AUU6HZvtHo8XL2SVu/TIxCYyFQA="
+ },
+ "zeparser": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz",
+ "integrity": "sha1-A3JlYbwmjy5URPVMZlt/1KjAKeI="
+ }
+ }
+}
diff --git a/package.json b/package.json
index 2ad0588..78acaf4 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,12 @@
{
- "name": "dmx",
- "version": "0.0.5",
- "author": "Sebastian Wiedenroth
",
+ "name": "dmx",
+ "version": "0.0.6",
+ "author": "Sebastian Wiedenroth ",
"description": "DMX library and webservice",
- "url": "https://github.com/wiedi/node-dmx",
- "main": "dmx.js",
+ "url": "https://github.com/thomfort/node-dmx",
+ "main": "dmx.js",
"bin": {
- "dmx-web": "./dmx-web.js"
+ "dmx-web": "./dmx-web.js"
},
"repository": {
"type": "git",
@@ -17,16 +17,19 @@
"light control"
],
"dependencies": {
- "serialport": "4.0.x",
- "socket.io": "0.9.x",
- "connect": "2.11.x",
- "express": "3.4.x",
- "commander": "2.0.x"
+ "serialport": "6.0.4",
+ "socket.io": "2.0.4",
+ "connect": "3.6.5",
+ "express": "4.16.2",
+ "commander": "2.12.2"
},
"licenses": [
{
"name": "MIT",
"url": "http://www.opensource.org/licenses/mit-license.php"
}
- ]
+ ],
+ "devDependencies": {
+ "color-convert": "^1.9.0"
+ }
}
diff --git a/pliabAnim.js b/pliabAnim.js
new file mode 100644
index 0000000..8798c54
--- /dev/null
+++ b/pliabAnim.js
@@ -0,0 +1,42 @@
+const convert = require('color-convert');
+
+module.exports = class plibAnim {
+ static convertToDMX(body) {
+ // {"0": 255, "1": 0, "2": 244, "3": 255}
+ // Channel 4c-1
+ let convertedOpacity, convertedColor;
+
+ if (body.opacity === 0) {
+ convertedOpacity = 0;
+ convertedColor = [0, 0, 0];
+ } else {
+ convertedColor = this._convertHexToRgb(body.color);
+ convertedOpacity = this._convertOpacity(body.opacity);
+ }
+
+ console.log('convertedOpacity', convertedOpacity);
+ console.log('convertedColor', convertedColor);
+
+ return {
+ "0": convertedOpacity,
+ "1": convertedColor[0],
+ "2": convertedColor[1],
+ "3": convertedColor[2],
+ }
+ }
+
+ static _convertOpacity(opacity) {
+ return (opacity * 100) * 255 / 100;
+ }
+
+ static _convertHexToRgb(c) {
+ if (this._validHex(c)) {
+ return convert.hex.rgb(c);
+ }
+ return convert.keyword.rgb(c) || `Color "${c}" is invalid.`;
+ }
+
+ static _validHex(c) {
+ return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(c);
+ }
+}