const RELAIS = 16; // GPIO 23
const REED = 11; // GPIO 17
const UNKNOWN = 2;
-const DELAY = 10;
+const DELAY = 300;
var reedState;
var controlCallback = null;
var notificationCallback = null;
log.debug('state unknown');
return UNKNOWN;
} else {
- log.debug('state :', state);
return state;
}
}
--- /dev/null
+const log = require('./logger')(__filename.slice(__dirname.length + 1));
+const http = require('http');
+
+const username = 'view';
+const options = {
+ host: '192.168.3.2',
+ path: '/snapshot.cgi',
+ mthod: 'GET',
+ headers: {
+ 'Authorization': 'Basic ' + new Buffer(username + ':').toString('base64')
+ }
+};
+
+function getImage() {
+ return new Promise((resolve, reject) => {
+ const req = http.request(options, (res) => {
+ var image = [];
+
+ res.on('data', (chunk) => {
+ image.push(chunk);
+ });
+
+ res.on('end', () => {
+ var buffer = Buffer.concat(image);
+ log.debug('Image size:', buffer.length);
+ resolve(buffer);
+ });
+ });
+
+ req.on('error', (err) => {
+ log.error('Webcam error', JSON.stringify(err));
+ reject('Webcam error');
+ });
+
+ req.end();
+ });
+}
+
+module.exports = {
+ getImage
+}
const router = express.Router();
const db = require('./../../lib/db');
const EventEmitter = require('events');
-const fs = require('fs');
const events = new EventEmitter();
var response = null;
'state': state
};
if (image) {
- var file = null;
- switch (state) {
- case 'open':
- file = fs.readFileSync(__dirname + '/../../public/images/open.jpg', 'base64');
- break;
- case 'closed':
- file = fs.readFileSync(__dirname + '/../../public/images/closed.jpg', 'base64');
- break;
- default:
- log.error('Unexpected status from state');
- response.status(500).send();
- return;
- }
- content['image'] = file;
+ webcam.getImage()
+ .then(image => {
+ content['image'] = new Buffer(image).toString('base64');
+ res.json(content);
+ })
+ .catch(err => {
+ log.error('Error on getting webcam image', JSON.stringify(err));
+ res.status(500).send();
+ });
+ } else {
+ res.json(content);
}
- response.json(content);
response = null;
}
});
const qStr = require('query-string');
const router = express.Router();
const db = require('./../../lib/db');
-const fs = require('fs');
const gpio = require('./../../lib/gpio');
+const webcam = require('./../../lib/webcam');
/* Disables caching in client */
function nocache(req, res, next) {
'state': state
};
if (image) {
- var file = null;
- switch (state) {
- case 'open':
- file = fs.readFileSync(__dirname + '/../../public/images/open.jpg', 'base64');
- break;
- case 'closed':
- file = fs.readFileSync(__dirname + '/../../public/images/closed.jpg', 'base64');
- break;
- default:
- log.error('Unexpected status from settings');
- res.status(500).send();
- return;
- }
- content['image'] = file;
+ webcam.getImage()
+ .then(image => {
+ content['image'] = new Buffer(image).toString('base64');
+ res.json(content);
+ })
+ .catch(err => {
+ log.error('Error on getting webcam image', JSON.stringify(err));
+ res.status(500).send();
+ });
+ } else {
+ res.json(content);
}
- res.json(content);
}
});
});