Skip to main content
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"

Metadata

Release files for onvif 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for onvif 0.1.0
File Size Uploaded
onvif-0.1.0.tar.gz 10.7 kB Details

Release files / onvif-0.1.0.tar.gz

Download URL onvif-0.1.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
bfe5d30cee9b1cbc23f5a27ba81d2c13f01a70fa05a54bd09804adc8d432f940
BLAKE2b-256 checksum
How to use checksums
5583d3ee319c0a63773048016eab23508243363f1566222aacf7a308a977a7a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.2.0

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

This release

0.1.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page