javascript - NodeJS Event Loops & Listening for Events -
i have door sensor attached raspberry pi. check if door has been opened, below script runs on 2 second interval. if has been opened, post request made external api server.
this works great, goal make post request containing information of how long door opened , when opened. first thought use node events & eventemitter capabilities i'm unsure on implementation of this.
var rest = require('restler'); var gpio = require('pi-gpio'); setinterval(function(){ gpio.read(16, function(err, value) { // sensor attached pin 16 if(err) throw err; if(value === 1){ // if closed, value 0 console.log("door opened"); rest.post('http://192.168.6.109:3000/door/save', { data: { door: 'open' } }).on('complete', function(data, response){ console.log('door status code: ' + response.statuscode); }); } }); },2000);
you need 2 things: timestamp , elapsed time between open , close events. can send information server. work:
var rest = require('restler'); var gpio = require('pi-gpio'); var open; setinterval(function(){ gpio.read(16, function(err, value) { // sensor attached pin if(err) throw err; if(value == '1'){ // if closed, value '0' console.log("door opened"); open = date.now (); }else{ //"0" assumed console.log("door closed"); //check whether door opened if (open){ var elapsed = date.now () - open; rest.post('http://192.168.6.109:3000/door/save', { data: { door: 'open', opentime: open, elapsedtime: elapsed } }).on('complete', function(data, response){ console.log('door status code: ' + response.statuscode); }); open = null; } } }); },2000);
but i'm afraid elapsed time multiple of 2000. try decrease interval time.
Comments
Post a Comment