Skip to main content

Python client for ONVIF Camera

Project description


ONVIF Client Implementation in Python

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


### From source
You should clone this repository and run the

cd python-onvif && python

### From pypi(TODO)

sudo pip install onvif

## Getting Started
To initialize an ONVIFCamera instance:

from onvif import ONVIFCamera
mycam = ONVIFCamera('', 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:
are available.

### Get infomation from your camera

# 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.

params = {'Name': 'NewHostName'}
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.

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

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

### Create other service
ONVIF protocol has defined many services.
You can find all the services and operations [here](
ONVIFCamera has support methods to create new services:

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

Or create unofficial service:

xaddr = ''
yourservice = mycam.create_onvif_service('service.wsdl', xaddr, 'yourservice')
# Be equivalent to


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

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

2. Interactive mode

$ onvif-cli -u 'admin' -a '12345' --host '' --port 80 --wsdl /etc/onvif/wsdl/
ONVIF >>> cmd
analytics devicemgmt events imaging media ptz
ONVIF >>> cmd devicemgmt GetWsdlUrl
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

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

## Reference
[1]. "ONVIF offical website"

[2]. "Operations Index"

[3]. "ONVIF Develop Documents"

[4]. "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.

Source Distribution

onvif-0.1.0.tar.gz (10.7 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page