Skip to main content
Help the Python Software Foundation raise $60,000 USD by December 31st!  Building the PSF Q4 Fundraiser

Python client for ONVIF Camera

Project description

python-onvif
============

ONVIF Client Implementation in Python

## Install onvif
### Dependences
suds >= 0.4

suds-passworddigest

### From source
You should clone this repository and run the setup.py.

```Bash
cd python-onvif && python setup.py
```

### From pypi(TODO)

```Bash
sudo pip install onvif
```

## Getting Started
To initialize an ONVIFCamera instance:

```python
from onvif import ONVIFCamera
mycam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd', '/etc/onvif/wsdl/')
```
Now, we get an ONVIFCamera instance. By default, a devicemgmt service is available if everything is OK.
So, all of the operations defined in the WSDL document:
/etc/onvif/wsdl/devicemgmt.wsdl
are available.

### Get infomation from your camera

```python
# Get Hostname
resp = mycam.devicemgmt.GetHostname()
print 'My camera`s hostname : ' + str(resp.Hostname)

# Get system date and time
dt = mycam.devicemgmt.GetSystemDateAndTime()
tz = dt.TimeZone
year = dt.UTCDateTime.Date.Year
hour = dt.UTCDateTime.Time.Hour
```

### Configure(Control) your camera
To configure your camera, parameters must be passed. There are two ways
to pass parameter to services methods:
1. Dict
This way is very simple.

```python
params = {'Name': 'NewHostName'}
device_service.SetHostname(params)
```
2. Type Instance
This way is simple and also recommended. For type instance will raise an
exception if you set an invalid(or nonexistent) parameter.

```python
params = mycam.devicemgmt.create_type('SetHostname')
params.Hostname = 'NewHostName'
mycam.devicemgmt.SetHostname(params)

time_params = mycam.devicemgmt.create_type('SetSystemDateAndTime')
time_params.DateTimeType = 'Manual'
time_params.DaylightSavings = True
time_params.TimeZone = 'CST-8:00:00'
time_params.UTCDateTime.Date.Year = 2014
time_params.UTCDateTime.Date.Month = 12
time_params.UTCDateTime.Date.Day = 3
time_params.UTCDateTime.Time.Hour = 9
time_params.UTCDateTime.Time.Minute = 36
time_params.UTCDateTime.Time.Second = 11
mycam.devicemgmt.SetSystemDateAndTime(time_params)
```

### Create other service
ONVIF protocol has defined many services.
You can find all the services and operations [here](http://www.onvif.org/onvif/ver20/util/operationIndex.html).
ONVIFCamera has support methods to create new services:

```python
# Create ptz service
ptz_service = mycam.create_ptz_service()
# Get ptz configuration
mycam.ptz.GetConfiguration()
# Another way:
ptz_service.GetConfiguration()
```

Or create unofficial service:

```python
xaddr = 'http://192.168.0.3:8888/onvif/yourservice'
yourservice = mycam.create_onvif_service('service.wsdl', xaddr, 'yourservice')
yourservice.SomeOperation()
# Be equivalent to
mycam.yourservice.SomeOperation()

```

## ONVIF CLI
python-onvif also provide command line interactive interface: onvif-cli.
onvif-cli will be installed automatically.
1. single command example:

```Bash
$ onvif-cli devicemgmt GetHostname --user 'admin' --password '12345' --host '192.168.0.112' --port 80 --wsdl /etc/onvif/wsdl/
Nethostname
$ onvif-cli devicemgmt SetHostname "{'Name': 'NewerHostname'}" --user 'admin' --password '12345' --host '192.168.0.112' --port 80 --wsdl /etc/onvif/wsdl/
```

2. Interactive mode

```Bash
$ onvif-cli -u 'admin' -a '12345' --host '192.168.0.112' --port 80 --wsdl /etc/onvif/wsdl/
ONVIF >>> cmd
analytics devicemgmt events imaging media ptz
ONVIF >>> cmd devicemgmt GetWsdlUrl
True: http://www.onvif.org/
ONVIF >>> cmd devicemgmt SetHostname {'Name': 'NewHostname'}
ONVIF >>> cmd devicemgmt GetHostname
True: {'Name': 'NewHostName'}
ONVIF >>> cmd devicemgmt SomeOperation
False: No Operation: SomeOperation
```
NOTE: Completion are supported for interactive mode.

3. In Batch

```Bash
$ vim batchcmds
$ cat batchcmds
cmd devicemgmt GetWsdlUrl
cmd devicemgmt GetServices {'Include': False}
cmd devicemgmt SetHostname {'Name': 'NewHostname', 'FromDHCP': True}
$ onvif-cli --host 192.168.0.112 --u admin -a 12345 -e -w /etc/onvif/wsdl/ < batchcmds
# result in order...
```

## Reference
[1]. http://www.onvif.com "ONVIF offical website"

[2]. http://www.onvif.org/onvif/ver20/util/operationIndex.html "Operations Index"

[3]. http://www.onvif.org/specs/DocMap-2.4.2.html "ONVIF Develop Documents"

[4]. http://github.com/quatanium/foscam-python-lib "Foscam lib"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for onvif, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size onvif-0.1.0.tar.gz (10.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page