The client for HIKVISION cameras, DVR
Project description
[![CircleCI](https://circleci.com/gh/MissiaL/hikvision-client.svg?style=svg)](https://circleci.com/gh/MissiaL/hikvision-client)
# Python Library for Hikvision Cameras
Simple and easy to use library for working with video equipment from Hikvision.
## Install
```bash
pip install hikvisionapi
```
## Examples
There are two formats for receiving a response:
```python
from hikvisionapi import Client
cam = Client('http://192.168.0.2', 'admin', 'admin')
# Dict response (default)
response = cam.System.deviceInfo(method='get')
response == {
u'DeviceInfo': {
u'@version': u'2.0',
'...':'...'
}
}
# xml text response
response = cam.System.deviceInfo(method='get', present='text')
response == '''<?xml version="1.0" encoding="UTF-8" ?>
<DeviceInfo version="1.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<deviceName>HIKVISION</deviceName>
</DeviceInfo>'''
```
Hints:
```python
# to get the channel info
motion_detection_info = cam.System.Video.inputs.channels[1].motionDetection(method='get')
# to send data to device:
xml = cam.System.deviceInfo(method='get', present='text')
cam.System.deviceInfo(method='put', data=xml)
# to get events (motion, etc..)
# Increase timeout if you want to wait for the event to be received
cam = Client('http://192.168.0.2', 'admin', 'Password', timeout=30)
cam.count_events = 2 # The number of events we want to retrieve (default = 1)
response = cam.Event.notification.alertStream(method='get', type='stream')
response == [{
u'EventNotificationAlert':{
u'@version': u'2.0',
u'@xmlns': u'http://www.hikvision.com/ver20/XMLSchema',
u'activePostCount': u'0',
u'channelID': u'1',
u'dateTime': u'2018-03-21T15:49:02+08:00',
u'eventDescription': u'videoloss alarm',
u'eventState': u'inactive',
u'eventType': u'videoloss'
}
}]
# Alternative solution to get events
cam = Client('http://192.168.0.2', 'admin', 'Password', timeout=1)
while True:
try:
response = cam.Event.notification.alertStream(method='get', type='stream')
if response:
print response
except Exception:
pass
# to get opaque data type and write to file
response = cam.System.configurationData(method='get', type='opaque_data')
with open('my_file', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
# Get and save picture from camera
response = client.Streaming.channels[102].picture(method='get', type='opaque_data')
with open('screen.jpg', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
```
## How to run the tests
```bash
pipenv install --dev
pipenv run pytest
pipenv run pytest --cov-report html --cov hikvisionapi # to get coverage report in ./htmlcov/
# or you can get into the virtual env with:
pipenv shell
pytest
```
# Python Library for Hikvision Cameras
Simple and easy to use library for working with video equipment from Hikvision.
## Install
```bash
pip install hikvisionapi
```
## Examples
There are two formats for receiving a response:
```python
from hikvisionapi import Client
cam = Client('http://192.168.0.2', 'admin', 'admin')
# Dict response (default)
response = cam.System.deviceInfo(method='get')
response == {
u'DeviceInfo': {
u'@version': u'2.0',
'...':'...'
}
}
# xml text response
response = cam.System.deviceInfo(method='get', present='text')
response == '''<?xml version="1.0" encoding="UTF-8" ?>
<DeviceInfo version="1.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<deviceName>HIKVISION</deviceName>
</DeviceInfo>'''
```
Hints:
```python
# to get the channel info
motion_detection_info = cam.System.Video.inputs.channels[1].motionDetection(method='get')
# to send data to device:
xml = cam.System.deviceInfo(method='get', present='text')
cam.System.deviceInfo(method='put', data=xml)
# to get events (motion, etc..)
# Increase timeout if you want to wait for the event to be received
cam = Client('http://192.168.0.2', 'admin', 'Password', timeout=30)
cam.count_events = 2 # The number of events we want to retrieve (default = 1)
response = cam.Event.notification.alertStream(method='get', type='stream')
response == [{
u'EventNotificationAlert':{
u'@version': u'2.0',
u'@xmlns': u'http://www.hikvision.com/ver20/XMLSchema',
u'activePostCount': u'0',
u'channelID': u'1',
u'dateTime': u'2018-03-21T15:49:02+08:00',
u'eventDescription': u'videoloss alarm',
u'eventState': u'inactive',
u'eventType': u'videoloss'
}
}]
# Alternative solution to get events
cam = Client('http://192.168.0.2', 'admin', 'Password', timeout=1)
while True:
try:
response = cam.Event.notification.alertStream(method='get', type='stream')
if response:
print response
except Exception:
pass
# to get opaque data type and write to file
response = cam.System.configurationData(method='get', type='opaque_data')
with open('my_file', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
# Get and save picture from camera
response = client.Streaming.channels[102].picture(method='get', type='opaque_data')
with open('screen.jpg', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
```
## How to run the tests
```bash
pipenv install --dev
pipenv run pytest
pipenv run pytest --cov-report html --cov hikvisionapi # to get coverage report in ./htmlcov/
# or you can get into the virtual env with:
pipenv shell
pytest
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hikvisionapi-0.2.1.tar.gz
(5.3 kB
view hashes)
Built Distribution
Close
Hashes for hikvisionapi-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17ad4cbf35c15eab5187713fc8e068043da40346338ac4d3e50b83b5b75fc058 |
|
MD5 | ab88a8f0bc2c166bbd2b66def36a0042 |
|
BLAKE2b-256 | 3460717351cc5e6864a26a689c2548a6c582d1015d80de136312f485b202046c |