marchaos / node-hikvision-api

NodeJS Module for Hikvision IPC HTTP API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

node-hikvision-api

GPL-3.0 npm node

NodeJS Module for communication with Hikvision IP Cameras.

Example:

import Hikvision from 'node-hikvision-api';

// Options:
const options = {
	host: '192.168.1.100',
	port: '80',
	user: 'admin',
	pass: 'password123',
	log: false,
};

const hikvision = new Hikvision(options);

// Switch to Day Profile
hikvision.nightProfile();

// PTZ Go to preset 10
hikvision.ptzPreset(10);

// Monitor Camera Alarms
hikvision.on('alarm', (code, action, index) => {
	if (code === 'VideoMotion' && action === 'Start') {
		console.log('Channel ' + index + ': Video Motion Detected');
	}
	if (code === 'VideoMotion' && action === 'Stop') {
		console.log('Channel ' + index + ': Video Motion Ended');
	}
	if (code === 'LineDetection' && action === 'Start') {
		console.log('Channel ' + index + ': Line Cross Detected');
	}
	if (code === 'LineDetection' && action === 'Stop') {
		console.log('Channel ' + index + ': Line Cross Ended');
	}
	if (code === 'AlarmLocal' && action === 'Start') {
		console.log('Channel ' + index + ': Local Alarm Triggered: ' + index);
	}
	if (code === 'AlarmLocal' && action === 'Stop') {   
		console.log('Channel ' + index + ': Local Alarm Ended: ' + index);
	}
	if (code === 'VideoLoss' && action === 'Start') {
		console.log('Channel ' + index + ': Video Lost!');
	}
	if (code === 'VideoLoss' && action === 'Stop') {
		console.log('Channel ' + index + ': Video Found!');
	}
	if (code === 'VideoBlind' && action === 'Start') { 
		console.log('Channel ' + index + ': Video Blind!');
	}
	if (code === 'VideoBlind' && action === 'Stop') { 
		console.log('Channel ' + index + ': Video Unblind!');
	}
});

Functions:

// Switch Camera to Night Profile
hikvision.dayProfile();

// Switch Camera to Night Profile
hikvision.nightProfile();

// Issue hikvision RAW PTZ Command (See API Manual in GitHub Wiki)
hikvision.ptzCommand(cmd,arg1,arg2,arg3,arg4)

// Go To Preset
hikvision.ptzPreset(int);

// PTZ Zoom, input level: positive = zoom in / negative = zoom out
hikvision.ptzZoom(float);

// PTZ Move
// Directions = Up/Down/Left/Right/LeftUp/RightUp/LeftDown/RightDown
// Actions = start/stop
// Speed = 1-8
hikvision.ptzMove(direction,action,speed);

// Request current PTZ Status
hikvision.ptzStatus();

// Callback for any Alarm (Motion Detection/Video Loss & Blank/Alarm Inputs)
hikvision.on('alarm', (code, action, index) => {  });

// Callback for PTZ Status
hikvision.on('ptzStatus', (data) => {  });

// Callback on connect
hikvision.on('connect', () => {  });

// Callback on error
hikvision.on('error', (error) => {  });

Options

  • host - hostname of your hikvision camera
  • port - port for your hikvision camera (80 by default)
  • user - username for camera
  • pass - password for camera
  • log - boolean to show detailed logs, defaults to false.

More Info:

  • Support & Discussion:

About:

By: Ryan Hunt

About

NodeJS Module for Hikvision IPC HTTP API

License:GNU General Public License v3.0


Languages

Language:JavaScript 100.0%