Skip to content

Commit 31f79d3

Browse files
committed
ref
1 parent 5bdaf53 commit 31f79d3

File tree

8 files changed

+1891
-1
lines changed

8 files changed

+1891
-1
lines changed

dmx-lyre-control

-1
This file was deleted.

lyre-dmx-control/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

lyre-dmx-control/ecosystem.config.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module.exports = {
2+
apps : [{
3+
name : 'DMX-control',
4+
script : 'index.js',
5+
env: {
6+
COMMON_VARIABLE: 'true'
7+
},
8+
env_production : {
9+
NODE_ENV: 'production'
10+
}
11+
}]
12+
};

lyre-dmx-control/index.js

+149
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
var DMX = require('dmx');
2+
var pmx = require('pmx');
3+
var Voice = require('easy-voice');
4+
5+
var A = DMX.Animation;
6+
7+
var dmx = new DMX();
8+
9+
var universe = dmx.addUniverse('demo', 'enttec-usb-dmx-pro', '/dev/ttyUSB0');
10+
11+
function addressMapping(address, mapping, map_addressage, override) {
12+
var hash_mapping = mapping['mapping'];
13+
var addressage = mapping[map_addressage];
14+
15+
var result_mapping = {};
16+
17+
hash_mapping.forEach(function(channel_name, index) {
18+
var channel_nb = address + index;
19+
result_mapping[channel_nb] = addressage[channel_name] || 0;
20+
if (override && override[channel_name]) {
21+
result_mapping[channel_nb] = override[channel_name];
22+
}
23+
});
24+
25+
return result_mapping;
26+
}
27+
28+
function run(address, mapping, map_addressage, override) {
29+
if (Array.isArray(address)) {
30+
var result = {};
31+
address.forEach(function(_address) {
32+
Object.assign(result, addressMapping(_address, mapping, map_addressage, override))
33+
})
34+
return result;
35+
}
36+
37+
addressMapping(addres, mapping, map_addressage, override);
38+
}
39+
40+
var lyre_mapping = require('./mappings/lyre.js');
41+
42+
var current_timer = null;
43+
44+
var Lyres = {
45+
spotMode : function() {
46+
Voice('Synergy Conference Mode', function() {
47+
universe.update(run([0, 14], lyre_mapping, 'spot_conf', { dimmer : 50 }));
48+
});
49+
},
50+
reset : function() {
51+
clearInterval(current_timer);
52+
universe.update(run([0, 14], lyre_mapping, 'reset', { tilt : 128 }));
53+
},
54+
soundMode : function() {
55+
Voice('Synergy Party mode', function() {
56+
universe.update(run([0, 14], lyre_mapping, 'sound'));
57+
});
58+
},
59+
publicMode : function() {
60+
Voice('Synergy Public Light Mode', function() {
61+
universe.update(run([0, 14], lyre_mapping, 'public_show'));
62+
});
63+
},
64+
strobe : function() {
65+
universe.update(run([0, 14], lyre_mapping, 'strobe'));
66+
},
67+
welcome : function() {
68+
setTimeout(function() {
69+
universe.update(run([0, 14], lyre_mapping, 'entrance_show'));
70+
}, 2000);
71+
72+
setTimeout(function() {
73+
Voice('Welcome to Keymetrics!');
74+
}, 4000);
75+
setTimeout(function() {
76+
universe.update(run([0, 14], lyre_mapping, 'reset'));
77+
}, 8000);
78+
},
79+
welcomeUser : function(data) {
80+
setTimeout(function() {
81+
universe.update(run([0, 14], lyre_mapping, 'entrance_show'));
82+
}, 2000);
83+
84+
let hour = new Date().getHours()
85+
if (hour < 11 || hour > 17) {
86+
setTimeout(function() {
87+
if (data.indexOf(':') !== -1) {
88+
return Voice(...data.split(':'))
89+
}
90+
Voice(data + ' welcome to Keymetrics');
91+
}, 4000);
92+
}
93+
94+
setTimeout(function() {
95+
universe.update(run([0, 14], lyre_mapping, 'reset'));
96+
}, 8000);
97+
},
98+
alertMode : function() {
99+
Voice('Synergy Alert Mode');
100+
101+
var TIME = 1000;
102+
103+
var anim = new A()
104+
.add(run([0, 14], lyre_mapping, 'alert_mode_s2'), TIME)
105+
.delay(1300)
106+
.add(run([0, 14], lyre_mapping, 'alert_mode_s1'), TIME)
107+
.delay(1300)
108+
.add(run([0, 14], lyre_mapping, 'alert_mode_s2'), TIME)
109+
110+
111+
anim.run(universe);
112+
113+
current_timer = setInterval(function() {
114+
var anim = new A()
115+
.add(run([0, 14], lyre_mapping, 'alert_mode_s2'), TIME)
116+
.delay(1300)
117+
.add(run([0, 14], lyre_mapping, 'alert_mode_s1'), TIME)
118+
119+
120+
anim.run(universe);
121+
}, TIME * 2 + 2800);
122+
}
123+
}
124+
125+
// Expose all Lyres method as PM2 server actions
126+
Object.keys(Lyres).forEach(function(action) {
127+
pmx.action(action, function(reply) {
128+
if (typeof(data) == 'function') {
129+
reply = data;
130+
data = ''
131+
}
132+
133+
Lyres[action](data);
134+
reply({ success : true, action_name : action });
135+
})
136+
});
137+
138+
//universe.update(run([0, 14], lyre_mapping, 'sound2'));
139+
140+
//return false;
141+
142+
Voice('Welcome. Synergy Initialized.');
143+
144+
145+
Lyres.strobe();
146+
setTimeout(function() {
147+
Lyres.reset();
148+
}, 3500);
149+
//Lyres.reset();

lyre-dmx-control/joystick.js

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
var DMX = require('dmx')
2+
var A = DMX.Animation
3+
var dmx = new DMX()
4+
var universe = dmx.addUniverse('demo', 'enttec-usb-dmx-pro', '/dev/ttyUSB0')
5+
var joystick = new (require('joystick'))(0, 2500, 40);
6+
7+
var x = 0
8+
var y = 0
9+
10+
11+
joystick.on('axis', function(data) {
12+
if (data.number == 3) {
13+
var val = Math.floor((data.value / 32767 * 60) + 110);
14+
x = val;
15+
}
16+
else if (data.number == 1) {
17+
var val = Math.floor((data.value / 32767 * 57) + 57);
18+
y = val;
19+
20+
}
21+
else if (data.number == 0) {
22+
var val = Math.floor((data.value / 32767 * 60) + 110);
23+
//var val = Math.floor((data.value / 32767 * 127) + 127);
24+
x = val;
25+
}
26+
27+
universe.update({
28+
0 : x, // rotate y
29+
1 : y
30+
})
31+
});
32+
33+
joystick.on('button', function(data) {
34+
if (data.number == 0 && data.value == 1)
35+
universe.update({
36+
0 : x, // rotate y
37+
1 : y,
38+
2 : 255,
39+
3 : 250,
40+
4 : 250,
41+
5 : 250,
42+
6 : 250,
43+
7: 0
44+
})
45+
if (data.number == 0 && data.value == 0)
46+
universe.update({
47+
0 : x, // rotate y
48+
1 : y,
49+
2 : 0,
50+
3 : 0,
51+
4 : 0,
52+
5 : 0
53+
})
54+
if (data.number == 3 && data.value == 1) {
55+
universe.update({
56+
0 : 100, // rotate y
57+
1 : 0,
58+
2 : 0,
59+
3 : 0,
60+
4 : 0,
61+
5 : 0
62+
})
63+
64+
var MIN = 35;
65+
var MAX = 180;
66+
var anim = new A()
67+
.add({
68+
0 : MIN, // rotate y
69+
1: 0 // rotate z
70+
}, 3000)
71+
.add({
72+
0 : MAX,
73+
1 : 0
74+
}, 300).run(universe);
75+
76+
77+
setInterval(function() {
78+
var anim = new A()
79+
.add({
80+
0 : MIN, // rotate y
81+
1: 0 // rotate z
82+
}, 3000)
83+
.add({
84+
0 : MAX,
85+
1 : 0
86+
}, 300).run(universe);
87+
}, 4000)
88+
89+
}
90+
});

lyre-dmx-control/mappings/lyre.js

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
2+
module.exports = {
3+
'mapping' : [
4+
'pan',
5+
'panf',
6+
'tilt',
7+
'tiltf',
8+
'speed',
9+
'dimmer',
10+
'red',
11+
'green',
12+
'blue',
13+
'white',
14+
'color',
15+
'color_speed',
16+
'mode',
17+
'reset'
18+
],
19+
'reset' : {
20+
pan: 0,
21+
panf: 0,
22+
tilt: 0,
23+
tiltf :0,
24+
speed: 0,
25+
dimmer: 0,
26+
red: 0,
27+
green: 0,
28+
blue: 0,
29+
white: 0,
30+
color : 0,
31+
color_speed: 0,
32+
mode: 0,
33+
reset:0
34+
},
35+
'sound' : {
36+
mode : 148,
37+
dimmer : 130,
38+
},
39+
'sound2' : {
40+
mode : 98,
41+
dimmer : 130,
42+
},
43+
'spot_conf' : {
44+
pan : 75,
45+
tilt : 230,
46+
dimmer : 40,
47+
white : 250
48+
},
49+
'public_show' : {
50+
pan : 125,
51+
tilt : 230,
52+
dimmer : 40,
53+
white : 250
54+
},
55+
'entrance_show' : {
56+
pan : 130,
57+
tilt : 238,
58+
dimmer : 250,
59+
white : 250
60+
},
61+
62+
'alert_mode_s1' : {
63+
pan : 143,
64+
titl : 0,
65+
dimmer : 100,
66+
red : 255
67+
},
68+
'alert_mode_s2' : {
69+
pan : 227,
70+
titl : 0,
71+
dimmer : 100,
72+
red : 255
73+
},
74+
75+
'strobe' : {
76+
tilt : 128,
77+
pan : 255,
78+
dimmer : 238,
79+
white : 255,
80+
green : 255,
81+
blue : 255,
82+
red : 255
83+
}
84+
}

0 commit comments

Comments
 (0)