node-red-contrib-dahua-device
Version:
A Node-RED integration of Dahua network devices (NVR, IP-Cameras)
50 lines (41 loc) • 1.43 kB
JavaScript
const ipcamera = require('node-dahua-api');
const nodeStatus = require('./utils').nodeStatus;
module.exports = function (RED) {
/**
* @param config
*/
function DahuaDeviceNode(config) {
RED.nodes.createNode(this, config);
const node = this;
const device = RED.nodes.getNode(config.device);
node.status({});
nodeStatus(node, 'yellow', 'connecting...');
const dahua = new ipcamera.dahua({
host: device.ipaddress,
port: device.port,
user: device.credentials.username,
pass: device.credentials.password,
log: false,
});
dahua.on('connect', function (options) {
nodeStatus(node, 'green', 'connected to ' + options.host);
});
dahua.on('error', function (error) {
nodeStatus(node, 'red', 'error: ' + error);
});
dahua.on('end', function () {
nodeStatus(node, 'yellow', 'disconnected');
});
dahua.on('alarm', function (code, action, index, metadata) {
node.send({
topic: [code, index, action].join('/'),
payload: action,
metadata,
index,
code,
});
nodeStatus(node, 'green', 'processed ' + code + ' event');
});
}
RED.nodes.registerType('dahua-device', DahuaDeviceNode);
};