-
Notifications
You must be signed in to change notification settings - Fork 2
/
node_helper.js
71 lines (57 loc) · 1.91 KB
/
node_helper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* Magic Mirror
* Node Helper: Buttons
*
* By Patrice Godard & Joseph Bethge
* MIT Licensed.
*/
const MPR121 = require('adafruit-mpr121');
const mpr121 = new MPR121(0x5A, 1);
const NodeHelper = require("node_helper");
module.exports = NodeHelper.create({
// Subclass start method.
start: function() {
var self = this;
console.log("Starting node helper for: " + self.name);
this.loaded = false;
},
// Subclass socketNotificationReceived received.
socketNotificationReceived: function(notification, payload) {
if (notification === 'BUTTON_CONFIG') {
this.config = payload.config;
this.intializeButtons();
};
},
//init and setup touch event handlers
intializeButtons: function() {
const self = this;
if (self.loaded) {
return;
}
self.buttons = self.config.buttons;
for (var i = 0; i < self.buttons.length; i++) {
console.log("Initialize button " + self.buttons[i].name + " on PIN " + self.buttons[i].pin);
self.buttons[i].pressed = undefined;
}
self.loaded = true;
// listen for touch events
mpr121.on('touch', (index) => {
console.log(`pin ${index} touched`);
this.buttons[index].pressed = new Date().getTime();
this.sendSocketNotification("BUTTON_DOWN", {
index: index
});
});
// listen for release events
mpr121.on('release', (index) => {
console.log(`pin ${index} released`);
var start = self.buttons[index].pressed;
var end = new Date().getTime();
var time = end - start;
self.buttons[index].pressed = undefined;
self.sendSocketNotification("BUTTON_UP", {
index: index,
duration: time
});
});
}
});