Fără Descriere

sinchb b50e7b1985 Merge pull request #39 from eLvErDe/SoapHeadersNotPermitted-exception-may-not-exists 7 ani în urmă
examples edff553bb2 add pullpoint access 8 ani în urmă
onvif b50e7b1985 Merge pull request #39 from eLvErDe/SoapHeadersNotPermitted-exception-may-not-exists 7 ani în urmă
tests 0e891506c8 update README 10 ani în urmă
wsdl edff553bb2 add pullpoint access 8 ani în urmă
.gitignore 090c2e107b Initial commit 10 ani în urmă
CHANGES.txt c4f9440271 upload to pypi 10 ani în urmă
LICENSE 090c2e107b Initial commit 10 ani în urmă
MANIFEST.in a0979154dd add logger for onvif 9 ani în urmă
README.rst 6e051b4df9 Timezone available on TimeZone.TZ 8 ani în urmă
setup.cfg 7291e916eb update README 10 ani în urmă
setup.py ebc1344b22 move wsdl inside package instead of /etc/onvif/wsdl 8 ani în urmă

README.rst

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

ONVIF Client Implementation in Python

Dependencies
------------
`suds `_ >= 0.4

`suds-passworddigest `_

Install python-onvif
--------------------
**From Source**

You should clone this repository and run setup.py::

cd python-onvif && python setup.py install

**From PyPI**

::

pip install onvif

Getting Started
---------------

Initialize an ONVIFCamera instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

::

from onvif import ONVIFCamera
mycam = ONVIFCamera('192.168.0.2', 80, 'user', 'passwd', '/etc/onvif/wsdl/')

Now, an ONVIFCamera instance is available. By default, a devicemgmt service is also available if everything is OK.

So, all operations defined in the WSDL document::

/etc/onvif/wsdl/devicemgmt.wsdl

are available.

Get information from your camera
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::

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

# 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, there are two ways to pass parameters to service methods.

**Dict**

This is the simpler way::

params = {'Name': 'NewHostName'}
device_service.SetHostname(params)

**Type Instance**

This is the recommended way. Type instance will raise an
exception if you set an invalid (or non-existent) parameter.

::

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.TZ = '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)

Use other services
~~~~~~~~~~~~~~~~~~
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
mycam.ptz.GetConfiguration()
# Another way
# ptz_service.GetConfiguration()

Or create an unofficial service::

xaddr = 'http://192.168.0.3:8888/onvif/yourservice'
yourservice = mycam.create_onvif_service('service.wsdl', xaddr, 'yourservice')
yourservice.SomeOperation()
# Another way
# mycam.yourservice.SomeOperation()

ONVIF CLI
---------
python-onvif also provides a command line interactive interface: onvif-cli.
onvif-cli is installed automatically.

Single command example
~~~~~~~~~~~~~~~~~~~~~~

::

$ onvif-cli devicemgmt GetHostname --user 'admin' --password '12345' --host '192.168.0.112' --port 80
True: {'FromDHCP': True, 'Name': hision}
$ onvif-cli devicemgmt SetHostname "{'Name': 'NewerHostname'}" --user 'admin' --password '12345' --host '192.168.0.112' --port 80
True: {}

Interactive mode
~~~~~~~~~~~~~~~~

::

$ 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: Tab completion is supported for interactive mode.

Batch mode
~~~~~~~~~~

::

$ vim batchcmds
$ cat batchcmds
cmd devicemgmt GetWsdlUrl
cmd devicemgmt SetHostname {'Name': 'NewHostname', 'FromDHCP': True}
cmd devicemgmt GetHostname
$ onvif-cli --host 192.168.0.112 -u admin -a 12345 -w /etc/onvif/wsdl/ < batchcmds
ONVIF >>> True: http://www.onvif.org/
ONVIF >>> True: {}
ONVIF >>> True: {'FromDHCP': False, 'Name': NewHostname}

References
----------

* `ONVIF Offical Website `_

* `Operations Index `_

* `ONVIF Develop Documents `_

* `Foscam Python Lib `_