node-red-contrib-amcrest-ad110
Version:
Amcrest AD110 Video Doorbell Tools
52 lines (41 loc) • 1.59 kB
JavaScript
const AmcrestAD110 = require('amcrest-ad110');
module.exports = function (RED) {
function NodeAmcrestAd110Monitor(config) {
RED.nodes.createNode(this, config);
const node = this;
const configNode = (typeof config.config === 'string') ? RED.nodes.getNode(config.config) : config.config;
const ad110 = new AmcrestAD110({
ipAddr: configNode.ipAddr,
password: configNode.password,
rawCodes: config.rawCodes,
debug: config.debug
});
ad110.onError(err => {
node.error(JSON.stringify(err));
});
ad110.isAlive()
.then(alive => {
if (alive) {
node.on('close', done => {
ad110.unlisten();
ad110.stop();
done();
});
ad110.listen(event => {
var payload = {
time: new Date()
};
Object.assign(payload, event);
node.send({ payload: payload });
});
ad110.start();
} else {
node.warn('AD110 Not Found');
}
})
.catch(err => {
node.error(JSON.stringify({ 'Error checking for AD110 status': err }));
});
}
RED.nodes.registerType("node-amcrest-ad110-monitor", NodeAmcrestAd110Monitor);
}