UNPKG

rpi-pin-events

Version:

Bathroom helper extraordinaire

67 lines (58 loc) 1.2 kB
var Gpio = require('onoff').Gpio; var EventEmitter = require('events'); function exit() { pir.unexport(); process.exit(); } const CHANGE_EVENT = 'change'; class PinInputEvents extends EventEmitter { super({ pin = 15, changeListeners = [], minimumInterval = 0 }) { this.pin = pin; listeners.forEach((changeListeners)=> { this.addChangeListener(changeListener); }); this.deviceIO = new Gpio(pin, 'in', 'both'); this.deviceIO.watch(this.dispatchGPIOEvent); } dispatchGPIOEvent (error, value) { if(error) { console.error('error ->', error); exit(); } this.emitChange(CHANGE_EVENT, value); } /** * adds a listener in the form function(err, value){} */ onChange ( listener ) { this.on(CHANGE_EVENT, listener); } /** * removes specified listener **/ removeChangeListener ( listener ) { this.removeListener(CHANGE_EVENT, listener); }; } let pirSignal = new PinInputEvents( { pin : 15, minimumInterval : 1000, changeListeners : [ (value)=> { console.log('change listener detected value ->', value); } ] }); console.log('pirSignal ->', pirSignal); pirSignal.onChange((value)=>console.log('value')); console.log('watching');