onvif-python 0.0.5__tar.gz → 0.0.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {onvif_python-0.0.5/onvif_python.egg-info → onvif_python-0.0.6}/PKG-INFO +11 -8
- {onvif_python-0.0.5 → onvif_python-0.0.6}/README.md +6 -5
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/client.py +42 -34
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/operator.py +2 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/accesscontrol.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/accessrules.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/actionengine.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/analytics/analytics.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/analytics/ruleengine.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/analyticsdevice.py +4 -3
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/appmgmt.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/authenticationbehavior.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/credential.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/deviceio.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/devicemgmt.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/display.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/doorcontrol.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/events/events.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/events/notification.py +4 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/events/pullpoint.py +4 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/events/subscription.py +4 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/imaging.py +6 -1
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/media.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/media2.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/provisioning.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/ptz.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/receiver.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/recording.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/replay.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/schedule.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/search.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/security/advancedsecurity.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/security/authorizationserver.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/security/dot1x.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/security/jwt.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/security/keystore.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/security/mediasigning.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/security/tlsserver.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/thermal.py +5 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/uplink.py +5 -0
- onvif_python-0.0.6/onvif/utils/__init__.py +5 -0
- onvif_python-0.0.6/onvif/utils/xml_capture.py +110 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/utils/zeep.py +32 -18
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/schema/onvif.xsd +1 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6/onvif_python.egg-info}/PKG-INFO +11 -8
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif_python.egg-info/SOURCES.txt +1 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/pyproject.toml +5 -3
- onvif_python-0.0.5/onvif/utils/__init__.py +0 -4
- {onvif_python-0.0.5 → onvif_python-0.0.6}/LICENSE.md +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/MANIFEST.in +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/__init__.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/services/__init__.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/utils/exceptions.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/utils/wsdl.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/accesscontrol/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/accessrules/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/actionengine.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/analyticsdevice.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/appmgmt/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/credential/wsdl/credential.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/credential/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/deviceio.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/display/display.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/display/wsdl/index.htm +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/display.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/doorcontrol/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/events/wsdl/event.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/events/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/federatedsearch.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/media/wsdl/media.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/pacs/accesscontrol.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/pacs/doorcontrol.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/pacs/types.xsd +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/receiver.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/recording.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/replay.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/schedule/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/schema/common.xsd +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/schema/metadatastream.xsd +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/search.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/thermal/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/topics/topicns.xml +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/uplink/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/analytics/humanbody.xsd +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/analytics/humanface.xsd +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/analytics/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/analytics/radiometry.xsd +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/analytics/rules.xsd +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/analytics/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/media/wsdl/index.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/media/wsdl/media.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/util/federated_search_documentation.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif/wsdl/ver20/util/operationIndex.html +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif_python.egg-info/dependency_links.txt +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif_python.egg-info/requires.txt +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/onvif_python.egg-info/top_level.txt +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/setup.cfg +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/setup.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/tests/test_client.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/tests/test_core.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/tests/test_exceptions.py +0 -0
- {onvif_python-0.0.5 → onvif_python-0.0.6}/tests/test_wsdl_map.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onvif-python
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.6
|
|
4
4
|
Summary: A comprehensive and developer-friendly Python library for working with ONVIF-compliant devices
|
|
5
5
|
Author-email: Nirsimetri Technologies® <open@nirsimetri.com>
|
|
6
6
|
Maintainer: Kaburagi
|
|
@@ -10,8 +10,8 @@ Project-URL: Issues, https://github.com/nirsimetri/onvif-python/issues
|
|
|
10
10
|
Project-URL: Documentation, https://deepwiki.com/nirsimetri/onvif-python
|
|
11
11
|
Project-URL: Repository, https://github.com/nirsimetri/onvif-python.git
|
|
12
12
|
Project-URL: Changelog, https://github.com/nirsimetri/onvif-python/releases
|
|
13
|
-
Keywords:
|
|
14
|
-
Classifier: Development Status ::
|
|
13
|
+
Keywords: onvif,Camera,onvif-python,ip-camera,cctv,soap,surveillance,cctv cameras,soap-client,onvif-client,onvif-library,onvif-specifications
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
15
|
Classifier: Environment :: Console
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.9
|
|
@@ -25,7 +25,9 @@ Classifier: Topic :: Security
|
|
|
25
25
|
Classifier: Topic :: Multimedia :: Video
|
|
26
26
|
Classifier: Topic :: Multimedia :: Sound/Audio
|
|
27
27
|
Classifier: Topic :: Communications
|
|
28
|
+
Classifier: Topic :: Text Processing :: Markup :: XML
|
|
28
29
|
Classifier: Natural Language :: English
|
|
30
|
+
Classifier: Natural Language :: Indonesian
|
|
29
31
|
Requires-Python: >=3.9
|
|
30
32
|
Description-Content-Type: text/markdown
|
|
31
33
|
License-File: LICENSE.md
|
|
@@ -41,9 +43,9 @@ Dynamic: license-file
|
|
|
41
43
|
|
|
42
44
|
[](https://github.com/nirsimetri/onvif-python?tab=MIT-1-ov-file)
|
|
43
45
|
[](https://deepwiki.com/nirsimetri/onvif-python)
|
|
44
|
-
[](https://github.com/nirsimetri/onvif-python/releases)
|
|
45
47
|
<br>
|
|
46
|
-
[](https://pypi.org/project/onvif-python/)
|
|
47
49
|
[](https://clickpy.clickhouse.com/dashboard/onvif-python)
|
|
48
50
|
|
|
49
51
|
Are you having trouble finding a Python ONVIF library that supports your device?
|
|
@@ -358,11 +360,12 @@ Some ONVIF services have multiple bindings in the same WSDL. These typically inc
|
|
|
358
360
|
|
|
359
361
|
## Future Improvements (Stay tuned and star ⭐ this repo)
|
|
360
362
|
|
|
361
|
-
- [
|
|
363
|
+
- [x] Add debugging mode with raw xml on SOAP requests and responses. ([c258162](https://github.com/nirsimetri/onvif-python/commit/c258162))
|
|
364
|
+
- [ ] Add functionality for `ONVIFClient` to accept a custom `wsdl_path` service.
|
|
365
|
+
- [ ] Add asynchronous (async/await) support for non-blocking ONVIF operations and concurrent device communication.
|
|
366
|
+
- [ ] Add `ONVIF CLI` program to interact directly with ONVIF devices via terminal.
|
|
362
367
|
- [ ] Implement structured data models for ONVIF Schemas using [xsdata](https://github.com/tefra/xsdata).
|
|
363
368
|
- [ ] Integrate [xmltodict](https://github.com/martinblech/xmltodict) for simplified XML parsing and conversion.
|
|
364
|
-
- [ ] Add functionality for `ONVIFClient` to accept a custom `wsdl_path` service.
|
|
365
|
-
- [ ] Add debugging mode with raw xml on SOAP requests and responses.
|
|
366
369
|
- [ ] Enhance documentation with API references and diagrams (not from [AI Wiki](https://deepwiki.com/nirsimetri/onvif-python)).
|
|
367
370
|
- [ ] Add more usage examples for advanced features.
|
|
368
371
|
- [ ] Add benchmarking and performance metrics.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/nirsimetri/onvif-python?tab=MIT-1-ov-file)
|
|
4
4
|
[](https://deepwiki.com/nirsimetri/onvif-python)
|
|
5
|
-
[](https://github.com/nirsimetri/onvif-python/releases)
|
|
6
6
|
<br>
|
|
7
|
-
[](https://pypi.org/project/onvif-python/)
|
|
8
8
|
[](https://clickpy.clickhouse.com/dashboard/onvif-python)
|
|
9
9
|
|
|
10
10
|
Are you having trouble finding a Python ONVIF library that supports your device?
|
|
@@ -319,11 +319,12 @@ Some ONVIF services have multiple bindings in the same WSDL. These typically inc
|
|
|
319
319
|
|
|
320
320
|
## Future Improvements (Stay tuned and star ⭐ this repo)
|
|
321
321
|
|
|
322
|
-
- [
|
|
322
|
+
- [x] Add debugging mode with raw xml on SOAP requests and responses. ([c258162](https://github.com/nirsimetri/onvif-python/commit/c258162))
|
|
323
|
+
- [ ] Add functionality for `ONVIFClient` to accept a custom `wsdl_path` service.
|
|
324
|
+
- [ ] Add asynchronous (async/await) support for non-blocking ONVIF operations and concurrent device communication.
|
|
325
|
+
- [ ] Add `ONVIF CLI` program to interact directly with ONVIF devices via terminal.
|
|
323
326
|
- [ ] Implement structured data models for ONVIF Schemas using [xsdata](https://github.com/tefra/xsdata).
|
|
324
327
|
- [ ] Integrate [xmltodict](https://github.com/martinblech/xmltodict) for simplified XML parsing and conversion.
|
|
325
|
-
- [ ] Add functionality for `ONVIFClient` to accept a custom `wsdl_path` service.
|
|
326
|
-
- [ ] Add debugging mode with raw xml on SOAP requests and responses.
|
|
327
328
|
- [ ] Enhance documentation with API references and diagrams (not from [AI Wiki](https://deepwiki.com/nirsimetri/onvif-python)).
|
|
328
329
|
- [ ] Add more usage examples for advanced features.
|
|
329
330
|
- [ ] Add benchmarking and performance metrics.
|
|
@@ -46,6 +46,7 @@ from .utils.zeep import (
|
|
|
46
46
|
remove_patch as _remove_zeep_patch,
|
|
47
47
|
)
|
|
48
48
|
from .utils.wsdl import ONVIFWSDL
|
|
49
|
+
from .utils.xml_capture import XMLCapturePlugin
|
|
49
50
|
|
|
50
51
|
|
|
51
52
|
class ONVIFClient:
|
|
@@ -60,6 +61,7 @@ class ONVIFClient:
|
|
|
60
61
|
use_https=False,
|
|
61
62
|
verify_ssl=True,
|
|
62
63
|
apply_patch=True,
|
|
64
|
+
capture_xml=False,
|
|
63
65
|
):
|
|
64
66
|
self.apply_patch = apply_patch
|
|
65
67
|
|
|
@@ -69,6 +71,12 @@ class ONVIFClient:
|
|
|
69
71
|
else:
|
|
70
72
|
_remove_zeep_patch()
|
|
71
73
|
|
|
74
|
+
# Initialize XML capture plugin if requested
|
|
75
|
+
self.xml_plugin = None
|
|
76
|
+
if capture_xml:
|
|
77
|
+
self.xml_plugin = XMLCapturePlugin()
|
|
78
|
+
|
|
79
|
+
# Pass to ONVIFOperator
|
|
72
80
|
self.common_args = {
|
|
73
81
|
"host": host,
|
|
74
82
|
"port": port,
|
|
@@ -78,7 +86,8 @@ class ONVIFClient:
|
|
|
78
86
|
"cache": cache,
|
|
79
87
|
"use_https": use_https,
|
|
80
88
|
"verify_ssl": verify_ssl,
|
|
81
|
-
"apply_flatten": apply_patch,
|
|
89
|
+
"apply_flatten": apply_patch,
|
|
90
|
+
"plugins": [self.xml_plugin] if self.xml_plugin else None,
|
|
82
91
|
}
|
|
83
92
|
|
|
84
93
|
# Device Management (Core) service is always available
|
|
@@ -161,15 +170,14 @@ class ONVIFClient:
|
|
|
161
170
|
try:
|
|
162
171
|
# Try to get the service definition from WSDL_MAP
|
|
163
172
|
# Most services use ver10, some use ver20
|
|
164
|
-
service_key = service_name.lower()
|
|
165
173
|
wsdl_def = None
|
|
166
174
|
|
|
167
175
|
# Try ver10 first, then ver20
|
|
168
|
-
if
|
|
169
|
-
if "ver10" in ONVIFWSDL.WSDL_MAP[
|
|
170
|
-
wsdl_def = ONVIFWSDL.WSDL_MAP[
|
|
171
|
-
elif "ver20" in ONVIFWSDL.WSDL_MAP[
|
|
172
|
-
wsdl_def = ONVIFWSDL.WSDL_MAP[
|
|
176
|
+
if service_name in ONVIFWSDL.WSDL_MAP:
|
|
177
|
+
if "ver10" in ONVIFWSDL.WSDL_MAP[service_name]:
|
|
178
|
+
wsdl_def = ONVIFWSDL.WSDL_MAP[service_name]["ver10"]
|
|
179
|
+
elif "ver20" in ONVIFWSDL.WSDL_MAP[service_name]:
|
|
180
|
+
wsdl_def = ONVIFWSDL.WSDL_MAP[service_name]["ver20"]
|
|
173
181
|
|
|
174
182
|
if wsdl_def:
|
|
175
183
|
namespace = wsdl_def["namespace"]
|
|
@@ -208,7 +216,7 @@ class ONVIFClient:
|
|
|
208
216
|
def events(self):
|
|
209
217
|
if self._events is None:
|
|
210
218
|
self._events = Events(
|
|
211
|
-
xaddr=self._get_xaddr("
|
|
219
|
+
xaddr=self._get_xaddr("events", "Events"), **self.common_args
|
|
212
220
|
)
|
|
213
221
|
return self._events
|
|
214
222
|
|
|
@@ -235,7 +243,7 @@ class ONVIFClient:
|
|
|
235
243
|
def notification(self):
|
|
236
244
|
if self._notification is None:
|
|
237
245
|
self._notification = Notification(
|
|
238
|
-
xaddr=self._get_xaddr("
|
|
246
|
+
xaddr=self._get_xaddr("notification", "Events"), **self.common_args
|
|
239
247
|
)
|
|
240
248
|
return self._notification
|
|
241
249
|
|
|
@@ -264,7 +272,7 @@ class ONVIFClient:
|
|
|
264
272
|
def imaging(self):
|
|
265
273
|
if self._imaging is None:
|
|
266
274
|
self._imaging = Imaging(
|
|
267
|
-
xaddr=self._get_xaddr("
|
|
275
|
+
xaddr=self._get_xaddr("imaging", "Imaging"), **self.common_args
|
|
268
276
|
)
|
|
269
277
|
return self._imaging
|
|
270
278
|
|
|
@@ -273,14 +281,14 @@ class ONVIFClient:
|
|
|
273
281
|
def media(self):
|
|
274
282
|
if self._media is None:
|
|
275
283
|
self._media = Media(
|
|
276
|
-
xaddr=self._get_xaddr("
|
|
284
|
+
xaddr=self._get_xaddr("media", "Media"), **self.common_args
|
|
277
285
|
)
|
|
278
286
|
return self._media
|
|
279
287
|
|
|
280
288
|
def media2(self):
|
|
281
289
|
if self._media2 is None:
|
|
282
290
|
self._media2 = Media2(
|
|
283
|
-
xaddr=self._get_xaddr("
|
|
291
|
+
xaddr=self._get_xaddr("media2", "Media2"), **self.common_args
|
|
284
292
|
)
|
|
285
293
|
return self._media2
|
|
286
294
|
|
|
@@ -288,7 +296,7 @@ class ONVIFClient:
|
|
|
288
296
|
|
|
289
297
|
def ptz(self):
|
|
290
298
|
if self._ptz is None:
|
|
291
|
-
self._ptz = PTZ(xaddr=self._get_xaddr("
|
|
299
|
+
self._ptz = PTZ(xaddr=self._get_xaddr("ptz", "PTZ"), **self.common_args)
|
|
292
300
|
return self._ptz
|
|
293
301
|
|
|
294
302
|
# DeviceIO
|
|
@@ -296,7 +304,7 @@ class ONVIFClient:
|
|
|
296
304
|
def deviceio(self):
|
|
297
305
|
if self._deviceio is None:
|
|
298
306
|
self._deviceio = DeviceIO(
|
|
299
|
-
xaddr=self._get_xaddr("
|
|
307
|
+
xaddr=self._get_xaddr("deviceio", "DeviceIO"), **self.common_args
|
|
300
308
|
)
|
|
301
309
|
return self._deviceio
|
|
302
310
|
|
|
@@ -305,7 +313,7 @@ class ONVIFClient:
|
|
|
305
313
|
def display(self):
|
|
306
314
|
if self._display is None:
|
|
307
315
|
self._display = Display(
|
|
308
|
-
xaddr=self._get_xaddr("
|
|
316
|
+
xaddr=self._get_xaddr("display", "Display"), **self.common_args
|
|
309
317
|
)
|
|
310
318
|
return self._display
|
|
311
319
|
|
|
@@ -314,21 +322,21 @@ class ONVIFClient:
|
|
|
314
322
|
def analytics(self):
|
|
315
323
|
if self._analytics is None:
|
|
316
324
|
self._analytics = Analytics(
|
|
317
|
-
xaddr=self._get_xaddr("
|
|
325
|
+
xaddr=self._get_xaddr("analytics", "Analytics"), **self.common_args
|
|
318
326
|
)
|
|
319
327
|
return self._analytics
|
|
320
328
|
|
|
321
329
|
def ruleengine(self):
|
|
322
330
|
if self._ruleengine is None:
|
|
323
331
|
self._ruleengine = RuleEngine(
|
|
324
|
-
xaddr=self._get_xaddr("
|
|
332
|
+
xaddr=self._get_xaddr("ruleengine", "Analytics"), **self.common_args
|
|
325
333
|
)
|
|
326
334
|
return self._ruleengine
|
|
327
335
|
|
|
328
336
|
def analyticsdevice(self):
|
|
329
337
|
if self._analyticsdevice is None:
|
|
330
338
|
self._analyticsdevice = AnalyticsDevice(
|
|
331
|
-
xaddr=self._get_xaddr("
|
|
339
|
+
xaddr=self._get_xaddr("analyticsdevice", "AnalyticsDevice"),
|
|
332
340
|
**self.common_args,
|
|
333
341
|
)
|
|
334
342
|
return self._analyticsdevice
|
|
@@ -338,7 +346,7 @@ class ONVIFClient:
|
|
|
338
346
|
def accesscontrol(self):
|
|
339
347
|
if self._accesscontrol is None:
|
|
340
348
|
self._accesscontrol = AccessControl(
|
|
341
|
-
xaddr=self._get_xaddr("
|
|
349
|
+
xaddr=self._get_xaddr("accesscontrol", "AccessControl"),
|
|
342
350
|
**self.common_args,
|
|
343
351
|
)
|
|
344
352
|
return self._accesscontrol
|
|
@@ -346,7 +354,7 @@ class ONVIFClient:
|
|
|
346
354
|
def doorcontrol(self):
|
|
347
355
|
if self._doorcontrol is None:
|
|
348
356
|
self._doorcontrol = DoorControl(
|
|
349
|
-
xaddr=self._get_xaddr("
|
|
357
|
+
xaddr=self._get_xaddr("doorcontrol", "DoorControl"), **self.common_args
|
|
350
358
|
)
|
|
351
359
|
return self._doorcontrol
|
|
352
360
|
|
|
@@ -355,7 +363,7 @@ class ONVIFClient:
|
|
|
355
363
|
def accessrules(self):
|
|
356
364
|
if self._accessrules is None:
|
|
357
365
|
self._accessrules = AccessRules(
|
|
358
|
-
xaddr=self._get_xaddr("
|
|
366
|
+
xaddr=self._get_xaddr("accessrules", "AccessRules"), **self.common_args
|
|
359
367
|
)
|
|
360
368
|
return self._accessrules
|
|
361
369
|
|
|
@@ -364,7 +372,7 @@ class ONVIFClient:
|
|
|
364
372
|
def actionengine(self):
|
|
365
373
|
if self._actionengine is None:
|
|
366
374
|
self._actionengine = ActionEngine(
|
|
367
|
-
xaddr=self._get_xaddr("
|
|
375
|
+
xaddr=self._get_xaddr("actionengine", "ActionEngine"),
|
|
368
376
|
**self.common_args,
|
|
369
377
|
)
|
|
370
378
|
return self._actionengine
|
|
@@ -374,7 +382,7 @@ class ONVIFClient:
|
|
|
374
382
|
def appmanagement(self):
|
|
375
383
|
if self._appmanagement is None:
|
|
376
384
|
self._appmanagement = AppManagement(
|
|
377
|
-
xaddr=self._get_xaddr("
|
|
385
|
+
xaddr=self._get_xaddr("appmgmt", "AppManagement"),
|
|
378
386
|
**self.common_args,
|
|
379
387
|
)
|
|
380
388
|
return self._appmanagement
|
|
@@ -385,7 +393,7 @@ class ONVIFClient:
|
|
|
385
393
|
if self._authenticationbehavior is None:
|
|
386
394
|
self._authenticationbehavior = AuthenticationBehavior(
|
|
387
395
|
xaddr=self._get_xaddr(
|
|
388
|
-
"
|
|
396
|
+
"authenticationbehavior", "AuthenticationBehavior"
|
|
389
397
|
),
|
|
390
398
|
**self.common_args,
|
|
391
399
|
)
|
|
@@ -396,7 +404,7 @@ class ONVIFClient:
|
|
|
396
404
|
def credential(self):
|
|
397
405
|
if self._credential is None:
|
|
398
406
|
self._credential = Credential(
|
|
399
|
-
xaddr=self._get_xaddr("
|
|
407
|
+
xaddr=self._get_xaddr("credential", "Credential"),
|
|
400
408
|
**self.common_args,
|
|
401
409
|
)
|
|
402
410
|
return self._credential
|
|
@@ -406,7 +414,7 @@ class ONVIFClient:
|
|
|
406
414
|
def recording(self):
|
|
407
415
|
if self._recording is None:
|
|
408
416
|
self._recording = Recording(
|
|
409
|
-
xaddr=self._get_xaddr("
|
|
417
|
+
xaddr=self._get_xaddr("recording", "Recording"),
|
|
410
418
|
**self.common_args,
|
|
411
419
|
)
|
|
412
420
|
return self._recording
|
|
@@ -416,7 +424,7 @@ class ONVIFClient:
|
|
|
416
424
|
def replay(self):
|
|
417
425
|
if self._replay is None:
|
|
418
426
|
self._replay = Replay(
|
|
419
|
-
xaddr=self._get_xaddr("
|
|
427
|
+
xaddr=self._get_xaddr("replay", "Replay"),
|
|
420
428
|
**self.common_args,
|
|
421
429
|
)
|
|
422
430
|
return self._replay
|
|
@@ -426,7 +434,7 @@ class ONVIFClient:
|
|
|
426
434
|
def provisioning(self):
|
|
427
435
|
if self._provisioning is None:
|
|
428
436
|
self._provisioning = Provisioning(
|
|
429
|
-
xaddr=self._get_xaddr("
|
|
437
|
+
xaddr=self._get_xaddr("provisioning", "Provisioning"),
|
|
430
438
|
**self.common_args,
|
|
431
439
|
)
|
|
432
440
|
return self._provisioning
|
|
@@ -436,7 +444,7 @@ class ONVIFClient:
|
|
|
436
444
|
def receiver(self):
|
|
437
445
|
if self._receiver is None:
|
|
438
446
|
self._receiver = Receiver(
|
|
439
|
-
xaddr=self._get_xaddr("
|
|
447
|
+
xaddr=self._get_xaddr("receiver", "Receiver"),
|
|
440
448
|
**self.common_args,
|
|
441
449
|
)
|
|
442
450
|
return self._receiver
|
|
@@ -446,7 +454,7 @@ class ONVIFClient:
|
|
|
446
454
|
def schedule(self):
|
|
447
455
|
if self._schedule is None:
|
|
448
456
|
self._schedule = Schedule(
|
|
449
|
-
xaddr=self._get_xaddr("
|
|
457
|
+
xaddr=self._get_xaddr("schedule", "Schedule"),
|
|
450
458
|
**self.common_args,
|
|
451
459
|
)
|
|
452
460
|
return self._schedule
|
|
@@ -456,7 +464,7 @@ class ONVIFClient:
|
|
|
456
464
|
def search(self):
|
|
457
465
|
if self._search is None:
|
|
458
466
|
self._search = Search(
|
|
459
|
-
xaddr=self._get_xaddr("
|
|
467
|
+
xaddr=self._get_xaddr("search", "SearchRecording"),
|
|
460
468
|
**self.common_args,
|
|
461
469
|
)
|
|
462
470
|
return self._search
|
|
@@ -466,7 +474,7 @@ class ONVIFClient:
|
|
|
466
474
|
def thermal(self):
|
|
467
475
|
if self._thermal is None:
|
|
468
476
|
self._thermal = Thermal(
|
|
469
|
-
xaddr=self._get_xaddr("
|
|
477
|
+
xaddr=self._get_xaddr("thermal", "Thermal"),
|
|
470
478
|
**self.common_args,
|
|
471
479
|
)
|
|
472
480
|
return self._thermal
|
|
@@ -476,7 +484,7 @@ class ONVIFClient:
|
|
|
476
484
|
def uplink(self):
|
|
477
485
|
if self._uplink is None:
|
|
478
486
|
self._uplink = Uplink(
|
|
479
|
-
xaddr=self._get_xaddr("
|
|
487
|
+
xaddr=self._get_xaddr("uplink", "Uplink"),
|
|
480
488
|
**self.common_args,
|
|
481
489
|
)
|
|
482
490
|
return self._uplink
|
|
@@ -486,7 +494,7 @@ class ONVIFClient:
|
|
|
486
494
|
def security(self):
|
|
487
495
|
if self._security is None:
|
|
488
496
|
self._security = AdvancedSecurity(
|
|
489
|
-
xaddr=self._get_xaddr("
|
|
497
|
+
xaddr=self._get_xaddr("advancedsecurity", "Security"),
|
|
490
498
|
**self.common_args,
|
|
491
499
|
)
|
|
492
500
|
return self._security
|
|
@@ -53,6 +53,7 @@ class ONVIFOperator:
|
|
|
53
53
|
use_https: bool = False,
|
|
54
54
|
verify_ssl: bool = True,
|
|
55
55
|
apply_flatten: bool = True,
|
|
56
|
+
plugins: list = None,
|
|
56
57
|
):
|
|
57
58
|
self.wsdl_path = wsdl_path
|
|
58
59
|
self.host = host
|
|
@@ -109,6 +110,7 @@ class ONVIFOperator:
|
|
|
109
110
|
transport=transport,
|
|
110
111
|
settings=settings,
|
|
111
112
|
wsse=wsse,
|
|
113
|
+
plugins=plugins,
|
|
112
114
|
)
|
|
113
115
|
|
|
114
116
|
if not binding:
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class AccessControl:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.3 (May 2013) Release Notes
|
|
11
|
+
# - PACSBinding (ver10/pacs/accesscontrol.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/pacs/accesscontrol.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("accesscontrol")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class AccessRules:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.6 (June 2015) Release Notes
|
|
11
|
+
# - AccessRulesBinding (ver10/accessrules/wsdl/accessrules.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/accessrules/wsdl/accessrules.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("accessrules")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class ActionEngine:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.2 (September 2012) Release Notes
|
|
11
|
+
# - ActionEngineBinding (ver10/actionengine.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/actionengine.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("actionengine")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ...utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Analytics:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.41 (December 2013) Release Notes
|
|
11
|
+
# - AnalyticsEngineBinding (ver20/analytics/wsdl/analytics.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver20/analytics/wsdl/analytics.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("analytics", "ver20")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ...utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class RuleEngine:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.41 (December 2013) Release Notes
|
|
11
|
+
# - RuleEngineBinding (ver20/analytics/wsdl/analytics.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver20/analytics/wsdl/analytics.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("ruleengine", "ver20")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -15,11 +15,12 @@ class AnalyticsDevice:
|
|
|
15
15
|
# (pre-2019) that may still expose an AnalyticsDevice XAddr.
|
|
16
16
|
#
|
|
17
17
|
# In modern ONVIF-compliant devices, you should prefer using the Analytics
|
|
18
|
-
# service (`onvif/services/analytics.py`). If the device does not
|
|
19
|
-
#
|
|
20
|
-
# this class will result in SOAP faults.
|
|
18
|
+
# service (`onvif/services/analytics/analytics.py`). If the device does not list
|
|
19
|
+
# AnalyticsDevice in `GetServices` response, then this service is not available
|
|
20
|
+
# on the device and calling this class will result in SOAP faults.
|
|
21
21
|
#
|
|
22
22
|
# References:
|
|
23
|
+
# - Introduce in ONVIF Release 2.1 (June 2011) Split from Core 2.0
|
|
23
24
|
# - ONVIF Release 18.12 (December 2018) Release Notes
|
|
24
25
|
# - AnalyticsDeviceBinding (ver10/analyticsdevice.wsdl)
|
|
25
26
|
# - Successor: Analytics Service (ver20/analytics/wsdl/analytics.wsdl)
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class AppManagement:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 19.12 (December 2019) Release Notes
|
|
11
|
+
# - AppManagementBinding (ver10/appmgmt/wsdl/appmgmt.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("appmgmt")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class AuthenticationBehavior:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 18.06 (June 2018) Release Notes
|
|
11
|
+
# - AuthenticationBehaviorBinding (ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("authenticationbehavior")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Credential:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.6 (June 2015) Release Notes
|
|
11
|
+
# - CredentialBinding (ver10/credential/wsdl/credential.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/credential/wsdl/credential.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("credential")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class DeviceIO:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.1 (June 2011) Split from Core 2.0
|
|
11
|
+
# - DeviceIOBinding (ver10/deviceio.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/deviceio.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("deviceio")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Device:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Core
|
|
11
|
+
# - DeviceBinding (ver10/device/wsdl/devicemgmt.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/device/wsdl/devicemgmt.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("devicemgmt")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Display:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.1 (June 2011) Split from Core 2.0
|
|
11
|
+
# - DisplayBinding (ver10/display.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/display.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("display")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class DoorControl:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.3 (May 2013) Release Notes
|
|
11
|
+
# - DoorControlBinding (ver10/pacs/doorcontrol.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/pacs/doorcontrol.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("doorcontrol")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ...utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Events:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Core
|
|
11
|
+
# - EventBinding (ver10/events/wsdl/event-vs.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("events")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -6,6 +6,10 @@ from ...utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Notification:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - NotificationProducerBinding (ver10/events/wsdl/event-vs.wsdl)
|
|
11
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl
|
|
12
|
+
|
|
9
13
|
definition = ONVIFWSDL.get_definition("notification")
|
|
10
14
|
self.operator = ONVIFOperator(
|
|
11
15
|
definition["path"],
|
|
@@ -6,6 +6,10 @@ from ...utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class PullPoint:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - PullPointSubscriptionBinding (ver10/events/wsdl/event-vs.wsdl)
|
|
11
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl
|
|
12
|
+
|
|
9
13
|
definition = ONVIFWSDL.get_definition("pullpoint")
|
|
10
14
|
self.operator = ONVIFOperator(
|
|
11
15
|
definition["path"],
|
|
@@ -6,6 +6,10 @@ from ...utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Subscription:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - SubscriptionManagerBinding (ver10/events/wsdl/event-vs.wsdl)
|
|
11
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl
|
|
12
|
+
|
|
9
13
|
definition = ONVIFWSDL.get_definition("subscription")
|
|
10
14
|
self.operator = ONVIFOperator(
|
|
11
15
|
definition["path"],
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Imaging:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.1 (June 2011) Split from Core 2.0
|
|
11
|
+
# - ImagingBinding (ver20/imaging/wsdl/imaging.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver20/imaging/wsdl/imaging.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("imaging", "ver20")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|
|
@@ -23,7 +28,7 @@ class Imaging:
|
|
|
23
28
|
"GetImagingSettings", VideoSourceToken=VideoSourceToken
|
|
24
29
|
)
|
|
25
30
|
|
|
26
|
-
def SetImagingSettings(self, VideoSourceToken, ImagingSettings, ForcePersistence):
|
|
31
|
+
def SetImagingSettings(self, VideoSourceToken, ImagingSettings, ForcePersistence=None):
|
|
27
32
|
return self.operator.call(
|
|
28
33
|
"SetImagingSettings",
|
|
29
34
|
VideoSourceToken=VideoSourceToken,
|
|
@@ -6,6 +6,11 @@ from ..utils import ONVIFWSDL
|
|
|
6
6
|
|
|
7
7
|
class Media:
|
|
8
8
|
def __init__(self, xaddr=None, **kwargs):
|
|
9
|
+
# References:
|
|
10
|
+
# - ONVIF Release 2.1 (June 2011) Split from Core 2.0
|
|
11
|
+
# - MediaBinding (ver10/media/wsdl/media.wsdl)
|
|
12
|
+
# - Operations: https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/media/wsdl/media.wsdl
|
|
13
|
+
|
|
9
14
|
definition = ONVIFWSDL.get_definition("media")
|
|
10
15
|
self.operator = ONVIFOperator(
|
|
11
16
|
definition["path"],
|