Skip to main content

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.

Source Distribution

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

Uploaded Source

File details

Details for the file onvif-0.1.0.tar.gz.

File metadata

  • Download URL: onvif-0.1.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for onvif-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bfe5d30cee9b1cbc23f5a27ba81d2c13f01a70fa05a54bd09804adc8d432f940
MD5 1e983de1b85ee998e0d6637cb925d9fc
BLAKE2b-256 5583d3ee319c0a63773048016eab23508243363f1566222aacf7a308a977a7a4

See more details on using hashes here.

Supported by

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