onvif-python 0.2.3__tar.gz → 0.2.5__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.2.3/onvif_python.egg-info → onvif_python-0.2.5}/PKG-INFO +43 -38
- {onvif_python-0.2.3 → onvif_python-0.2.5}/README.md +42 -37
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/__init__.py +1 -2
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/cli/interactive.py +2 -2
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/cli/main.py +607 -399
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/cli/utils.py +49 -22
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/client.py +28 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/__init__.py +2 -0
- onvif_python-0.2.5/onvif/services/events/pausable_subscription.py +31 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/service.py +4 -2
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/wsdl.py +14 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +11 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +2 -2
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/schema/onvif.xsd +2 -2
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/media/wsdl/media.wsdl +1 -1
- {onvif_python-0.2.3 → onvif_python-0.2.5/onvif_python.egg-info}/PKG-INFO +43 -38
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif_python.egg-info/SOURCES.txt +2 -2
- {onvif_python-0.2.3 → onvif_python-0.2.5}/pyproject.toml +1 -1
- onvif_python-0.2.3/tests/test_wsdl_map.py +0 -47
- {onvif_python-0.2.3 → onvif_python-0.2.5}/LICENSE.md +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/MANIFEST.in +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/cli/__init__.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/cli/__main__.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/db/companies.db +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/db/products.db +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/operator.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/accesscontrol.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/accessrules.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/actionengine.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/analytics/analytics.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/analytics/ruleengine.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/analyticsdevice.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/appmgmt.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/authenticationbehavior.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/credential.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/deviceio.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/devicemgmt.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/display.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/doorcontrol.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/events/events.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/events/notification.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/events/pullpoint.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/events/subscription.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/imaging.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/media.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/media2.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/provisioning.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/ptz.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/receiver.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/recording.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/replay.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/schedule.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/search.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/security/advancedsecurity.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/security/authorizationserver.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/security/dot1x.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/security/jwt.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/security/keystore.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/security/mediasigning.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/security/tlsserver.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/thermal.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/services/uplink.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/__init__.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/discovery.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/error_handlers.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/exceptions.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/parser.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/xml_capture.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/utils/zeep.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/LICENSE.md +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/accesscontrol/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/accessrules/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/actionengine.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/analyticsdevice.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/appmgmt/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/credential/wsdl/credential.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/credential/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/deviceio.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/display/display.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/display/wsdl/index.htm +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/display.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/doorcontrol/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/events/wsdl/event.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/events/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/federatedsearch.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/media/wsdl/media.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/pacs/accesscontrol.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/pacs/doorcontrol.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/pacs/types.xsd +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/receiver.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/recording.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/replay.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/schedule/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/schema/common.xsd +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/schema/metadatastream.xsd +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/search.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/thermal/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/topics/topicns.xml +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/uplink/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/analytics/humanbody.xsd +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/analytics/humanface.xsd +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/analytics/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/analytics/radiometry.xsd +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/analytics/rules.xsd +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/analytics/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/media/wsdl/index.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/util/federated_search_documentation.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif/wsdl/ver20/util/operationIndex.html +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif_python.egg-info/dependency_links.txt +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif_python.egg-info/entry_points.txt +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif_python.egg-info/requires.txt +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/onvif_python.egg-info/top_level.txt +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/setup.cfg +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/setup.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/tests/test_client.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/tests/test_core.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/tests/test_error_handlers.py +0 -0
- {onvif_python-0.2.3 → onvif_python-0.2.5}/tests/test_exceptions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onvif-python
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5
|
|
4
4
|
Summary: A modern Python library for ONVIF-compliant devices
|
|
5
5
|
Author-email: Nirsimetri Technologies® <open@nirsimetri.com>
|
|
6
6
|
Maintainer: Kaburagi
|
|
@@ -44,14 +44,13 @@ Dynamic: license-file
|
|
|
44
44
|
<h1 align="center">ONVIF Python</h1>
|
|
45
45
|
|
|
46
46
|
<div align="center">
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
[](https://clickpy.clickhouse.com/dashboard/onvif-python)
|
|
47
|
+
<a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img alt="Codacy grade" src="https://img.shields.io/codacy/grade/bff08a94e4d447b690cea49c6594826d?label=Code%20Quality&logo=codacy"></a>
|
|
48
|
+
<a href="https://deepwiki.com/nirsimetri/onvif-python"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg"></a>
|
|
49
|
+
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/PyPI-0.2.5-orange?logo=archive&color=yellow"></a>
|
|
50
|
+
<a href="https://pepy.tech/projects/onvif-python"><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/onvif-python?label=Downloads&color=red"></a>
|
|
52
51
|
<br>
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
<a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml"><img alt="Build" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml/badge.svg?branch=main"></a>
|
|
53
|
+
<a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-publish.yml"><img alt="Upload Python Package" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-publish.yml/badge.svg"></a>
|
|
55
54
|
</div>
|
|
56
55
|
|
|
57
56
|
<h1 align="center">
|
|
@@ -65,15 +64,21 @@ Dynamic: license-file
|
|
|
65
64
|
|
|
66
65
|
Behind the scenes, ONVIF communication relies on **[SOAP](https://en.wikipedia.org/wiki/SOAP) (Simple Object Access Protocol)** — an [XML](https://en.wikipedia.org/wiki/XML)-based messaging protocol with strict schema definitions ([WSDL](https://en.wikipedia.org/wiki/Web_Services_Description_Language)/[XSD](https://en.wikipedia.org/wiki/XML_Schema_(W3C))). SOAP ensures interoperability, but when used directly it can be verbose, complex, and error-prone.
|
|
67
66
|
|
|
68
|
-
This library simplifies that process by wrapping SOAP communication into a clean, Pythonic API. You no longer need to handle low-level XML parsing, namespaces, or security tokens manually — the library takes care of it, letting you focus on building functionality.
|
|
67
|
+
This library simplifies that process by wrapping SOAP communication into a clean, Pythonic API. You no longer need to handle low-level XML parsing, namespaces, or security tokens manually — the library takes care of it, letting you focus on building functionality.
|
|
69
68
|
|
|
70
|
-
##
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
-
|
|
69
|
+
## Library Philosophy
|
|
70
|
+
> [!NOTE]
|
|
71
|
+
> This library will be continuously updated as ONVIF versions are updated. It uses a built-in WSDL that will always follow changes to the [ONVIF WSDL Specifications](https://github.com/onvif/specs). You can also use your own ONVIF WSDL file by adding the `wsdl_dir` argument; see [ONVIFClient Parameters](#onvifclient-parameters).
|
|
72
|
+
|
|
73
|
+
- **WYSIWYG (What You See is What You Get)**: Every ONVIF operation in the library mirrors the official ONVIF specification exactly. Method names, parameter structures, and response formats follow ONVIF standards without abstraction layers or renamed interfaces. What you see in the ONVIF documentation is exactly what you get in Python.
|
|
74
|
+
|
|
75
|
+
- **Device Variety Interoperability**: Built to handle the real-world diversity of ONVIF implementations across manufacturers. The library gracefully handles missing features, optional operations, and vendor-specific behaviors through comprehensive error handling and fallback mechanisms. Whether you're working with high-end enterprise cameras or budget IP cameras, the library adapts.
|
|
76
|
+
|
|
77
|
+
- **Official Specifications Accuracy**: All service implementations are generated and validated against official `ONVIF WSDL Specifications`. The library includes comprehensive test suites that verify compliance with ONVIF standards, ensuring that method signatures, parameter types, and behavior match the official specifications precisely.
|
|
78
|
+
|
|
79
|
+
- **Modern Python Approach**: Designed for excellent IDE support with full type hints, auto-completion, and immediate error detection. You'll get `TypeError` exceptions upfront when accessing ONVIF operations with wrong arguments, instead of cryptic `SOAP faults` later. Clean, Pythonic API that feels natural to Python developers while maintaining ONVIF compatibility.
|
|
80
|
+
|
|
81
|
+
- **Minimal Dependencies**: Only depends on essential, well-maintained libraries (`zeep` for SOAP, `requests` for HTTP). No bloated framework dependencies or custom XML parsers. The library stays lightweight while providing full ONVIF functionality, making it easy to integrate into any project without dependency conflicts.
|
|
77
82
|
|
|
78
83
|
## Who Is It For?
|
|
79
84
|
- **Individual developers** exploring ONVIF or building hobby projects
|
|
@@ -352,11 +357,12 @@ This library includes a powerful command-line interface (CLI) for interacting wi
|
|
|
352
357
|
<summary><b>1. Direct CLI</b></summary>
|
|
353
358
|
|
|
354
359
|
```bash
|
|
355
|
-
usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password PASSWORD] [--discover] [--filter FILTER] [--search SEARCH] [--page PAGE]
|
|
356
|
-
[--
|
|
360
|
+
usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password PASSWORD] [--discover] [--filter FILTER] [--search SEARCH] [--page PAGE]
|
|
361
|
+
[--per-page PER_PAGE] [--timeout TIMEOUT] [--https] [--no-verify] [--no-patch] [--interactive] [--debug] [--wsdl WSDL]
|
|
362
|
+
[--cache {all,db,mem,none}] [--health-check-interval HEALTH_CHECK_INTERVAL] [--output OUTPUT] [--version]
|
|
357
363
|
[service] [method] [params ...]
|
|
358
364
|
|
|
359
|
-
ONVIF Terminal Client — v0.2.
|
|
365
|
+
ONVIF Terminal Client — v0.2.5
|
|
360
366
|
https://github.com/nirsimetri/onvif-python
|
|
361
367
|
|
|
362
368
|
positional arguments:
|
|
@@ -390,6 +396,9 @@ options:
|
|
|
390
396
|
Caching mode for ONVIFClient (default: all). 'all': memory+disk, 'db': disk-only, 'mem': memory-only, 'none': disabled.
|
|
391
397
|
--health-check-interval HEALTH_CHECK_INTERVAL, -hci HEALTH_CHECK_INTERVAL
|
|
392
398
|
Health check interval in seconds for interactive mode (default: 10)
|
|
399
|
+
--output OUTPUT, -o OUTPUT
|
|
400
|
+
Save command output to file. Supports .json, .xml extensions for format detection, or plain text. XML format automatically enables
|
|
401
|
+
debug mode for SOAP capture.
|
|
393
402
|
--version, -v Show ONVIF CLI version and exit
|
|
394
403
|
|
|
395
404
|
Examples:
|
|
@@ -410,7 +419,12 @@ Examples:
|
|
|
410
419
|
|
|
411
420
|
# Direct command execution
|
|
412
421
|
onvif devicemgmt GetCapabilities Category=All --host 192.168.1.17 --port 8000 --username admin --password admin123
|
|
413
|
-
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity={
|
|
422
|
+
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity={'PanTilt': {'x': -0.1, 'y': 0}} -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
423
|
+
|
|
424
|
+
# Save output to file
|
|
425
|
+
onvif devicemgmt GetDeviceInformation --host 192.168.1.17 --port 8000 --username admin --password admin123 --output device_info.json
|
|
426
|
+
onvif media GetProfiles --host 192.168.1.17 --port 8000 --username admin --password admin123 --output profiles.xml
|
|
427
|
+
onvif ptz GetConfigurations --host 192.168.1.17 --port 8000 --username admin --password admin123 --output ptz_config.txt --debug
|
|
414
428
|
|
|
415
429
|
# Interactive mode
|
|
416
430
|
onvif --host 192.168.1.17 --port 8000 --username admin --password admin123 --interactive
|
|
@@ -429,7 +443,7 @@ Examples:
|
|
|
429
443
|
<summary><b>2. Interactive Shell</b></summary>
|
|
430
444
|
|
|
431
445
|
```bash
|
|
432
|
-
ONVIF Interactive Shell — v0.2.
|
|
446
|
+
ONVIF Interactive Shell — v0.2.5
|
|
433
447
|
https://github.com/nirsimetri/onvif-python
|
|
434
448
|
|
|
435
449
|
Basic Commands:
|
|
@@ -637,7 +651,11 @@ onvif <service> <method> [parameters...] -H <host> -P <port> -u <user> -p <pass>
|
|
|
637
651
|
onvif devicemgmt GetCapabilities Category=All -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
638
652
|
|
|
639
653
|
# Move a PTZ camera
|
|
640
|
-
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity='{"PanTilt": {"x": 0.1}}' -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
654
|
+
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity='{"PanTilt": {"x": 0.1, "y": 0}}' -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
655
|
+
|
|
656
|
+
# Save output to file
|
|
657
|
+
onvif devicemgmt GetDeviceInformation --host 192.168.1.17 --port 8000 --username admin --password admin123 --output device_info.json
|
|
658
|
+
onvif media GetProfiles -H 192.168.1.17 -P 8000 -u admin -p admin123 -o profiles.xml
|
|
641
659
|
```
|
|
642
660
|
|
|
643
661
|
**4. ONVIF Product Search**
|
|
@@ -1028,7 +1046,7 @@ Below is a list of ONVIF services implemented and supported by this library, alo
|
|
|
1028
1046
|
| Service | Specifications | Service Definitions | Schema Files | Status |
|
|
1029
1047
|
|------------------------|-------------------------------|-----------------------------|-------------------------------------|------------|
|
|
1030
1048
|
| Device Management | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [device.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/device/wsdl/devicemgmt.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) | ✅ Complete |
|
|
1031
|
-
| Events | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [event.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) |
|
|
1049
|
+
| Events | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [event.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) | ✅ Complete |
|
|
1032
1050
|
| Access Control | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/AccessControl.xml) | [accesscontrol.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/pacs/accesscontrol.wsdl) | [types.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/pacs/types.xsd) | ✅ Complete |
|
|
1033
1051
|
| Access Rules | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/AccessRules.xml) | [accessrules.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/accessrules/wsdl/accessrules.wsdl) | - | ✅ Complete |
|
|
1034
1052
|
| Action Engine | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/ActionEngine.xml) | [actionengine.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/actionengine.wsdl) | - | ✅ Complete |
|
|
@@ -1050,12 +1068,10 @@ Below is a list of ONVIF services implemented and supported by this library, alo
|
|
|
1050
1068
|
| Recording Control | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/RecordingControl.xml) | [recording.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/recording.wsdl) | - | ✅ Complete |
|
|
1051
1069
|
| Recording Search | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/RecordingSearch.xml) | [search.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/search.wsdl) | - | ✅ Complete |
|
|
1052
1070
|
| Replay Control | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Replay.xml) | [replay.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/replay.wsdl) | - | ✅ Complete |
|
|
1053
|
-
| Resource Query | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/ResourceQuery.xml) | - | | ❌ Any idea? |
|
|
1054
1071
|
| Schedule | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Schedule.xml) | [schedule.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schedule/wsdl/schedule.wsdl) | - | ✅ Complete |
|
|
1055
1072
|
| Security | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Security.xml) | [advancedsecurity.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl) | - | ✅ Complete |
|
|
1056
1073
|
| Thermal | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Thermal.xml) | [thermal.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/thermal/wsdl/thermal.wsdl) | [radiometry.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver20/analytics/radiometry.xsd) | ✅ Complete |
|
|
1057
1074
|
| Uplink | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Uplink.xml) | [uplink.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/uplink/wsdl/uplink.wsdl) | - | ✅ Complete |
|
|
1058
|
-
| WebRTC | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/WebRTC.xml) | - | - | ❌ Any idea? |
|
|
1059
1075
|
|
|
1060
1076
|
</details>
|
|
1061
1077
|
|
|
@@ -1155,13 +1171,11 @@ Some ONVIF services have multiple bindings in the same WSDL. These typically inc
|
|
|
1155
1171
|
- [ ] Add more usage examples for advanced features.
|
|
1156
1172
|
- [ ] Add benchmarking and performance metrics.
|
|
1157
1173
|
- [ ] Add community-contributed device configuration templates.
|
|
1158
|
-
- [ ] Implement missing or partial ONVIF services.
|
|
1159
|
-
- [ ] Add function to expose ONVIF devices (for debugging purposes by the community).
|
|
1160
1174
|
|
|
1161
1175
|
## Related Projects
|
|
1162
1176
|
|
|
1163
1177
|
- [onvif-products-directory](https://github.com/nirsimetri/onvif-products-directory):
|
|
1164
|
-
This project is a comprehensive ONVIF data aggregation and management suite, designed to help developers explore, analyze, and process ONVIF-compliant product information from hundreds of manufacturers worldwide.
|
|
1178
|
+
This project is a comprehensive ONVIF data aggregation and management suite, designed to help developers explore, analyze, and process ONVIF-compliant product information from hundreds of manufacturers worldwide.
|
|
1165
1179
|
|
|
1166
1180
|
- (soon) [onvif-rest-server](https://github.com/nirsimetri/onvif-rest-server):
|
|
1167
1181
|
A RESTful API server for ONVIF devices, enabling easy integration of ONVIF device management, media streaming, and other capabilities into web applications and services.
|
|
@@ -1169,19 +1183,10 @@ Some ONVIF services have multiple bindings in the same WSDL. These typically inc
|
|
|
1169
1183
|
- (soon) [onvif-mcp](https://github.com/nirsimetri/onvif-mcp):
|
|
1170
1184
|
A Model Context Protocol (MCP) server for ONVIF, providing a unified API and context-based integration for ONVIF devices, clients, and services. It enables advanced automation, orchestration, and interoperability across ONVIF-compliant devices and clients.
|
|
1171
1185
|
|
|
1172
|
-
## Alternatives
|
|
1173
|
-
|
|
1174
|
-
If you are looking for other ONVIF Python libraries, here are some alternatives:
|
|
1175
|
-
|
|
1176
|
-
- [python-onvif-zeep](https://github.com/FalkTannhaeuser/python-onvif-zeep):
|
|
1177
|
-
A synchronous ONVIF client library for Python, using Zeep for SOAP communication. Focuses on compatibility and ease of use for standard ONVIF device operations. Good for scripts and applications where async is not required.
|
|
1178
|
-
|
|
1179
|
-
- [python-onvif-zeep-async](https://github.com/openvideolibs/python-onvif-zeep-async):
|
|
1180
|
-
An asynchronous ONVIF client library for Python, based on Zeep and asyncio. Suitable for applications requiring non-blocking operations and concurrent device communication. Supports many ONVIF services and is actively maintained.
|
|
1181
|
-
|
|
1182
1186
|
## References
|
|
1183
1187
|
- [ONVIF Official Specifications](https://www.onvif.org/profiles/specifications/specification-history/)
|
|
1184
1188
|
- [ONVIF Official Specs Repository](https://github.com/onvif/specs)
|
|
1189
|
+
- [ONVIF Application Programmer's Guide](https://www.onvif.org/wp-content/uploads/2016/12/ONVIF_WG-APG-Application_Programmers_Guide-1.pdf)
|
|
1185
1190
|
- [ONVIF 2.0 Service Operation Index](https://www.onvif.org/onvif/ver20/util/operationIndex.html)
|
|
1186
1191
|
- [Usage Examples](./examples/)
|
|
1187
1192
|
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
<h1 align="center">ONVIF Python</h1>
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[](https://clickpy.clickhouse.com/dashboard/onvif-python)
|
|
4
|
+
<a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img alt="Codacy grade" src="https://img.shields.io/codacy/grade/bff08a94e4d447b690cea49c6594826d?label=Code%20Quality&logo=codacy"></a>
|
|
5
|
+
<a href="https://deepwiki.com/nirsimetri/onvif-python"><img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg"></a>
|
|
6
|
+
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/PyPI-0.2.5-orange?logo=archive&color=yellow"></a>
|
|
7
|
+
<a href="https://pepy.tech/projects/onvif-python"><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/onvif-python?label=Downloads&color=red"></a>
|
|
9
8
|
<br>
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
<a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml"><img alt="Build" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml/badge.svg?branch=main"></a>
|
|
10
|
+
<a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-publish.yml"><img alt="Upload Python Package" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-publish.yml/badge.svg"></a>
|
|
12
11
|
</div>
|
|
13
12
|
|
|
14
13
|
<h1 align="center">
|
|
@@ -22,15 +21,21 @@
|
|
|
22
21
|
|
|
23
22
|
Behind the scenes, ONVIF communication relies on **[SOAP](https://en.wikipedia.org/wiki/SOAP) (Simple Object Access Protocol)** — an [XML](https://en.wikipedia.org/wiki/XML)-based messaging protocol with strict schema definitions ([WSDL](https://en.wikipedia.org/wiki/Web_Services_Description_Language)/[XSD](https://en.wikipedia.org/wiki/XML_Schema_(W3C))). SOAP ensures interoperability, but when used directly it can be verbose, complex, and error-prone.
|
|
24
23
|
|
|
25
|
-
This library simplifies that process by wrapping SOAP communication into a clean, Pythonic API. You no longer need to handle low-level XML parsing, namespaces, or security tokens manually — the library takes care of it, letting you focus on building functionality.
|
|
24
|
+
This library simplifies that process by wrapping SOAP communication into a clean, Pythonic API. You no longer need to handle low-level XML parsing, namespaces, or security tokens manually — the library takes care of it, letting you focus on building functionality.
|
|
26
25
|
|
|
27
|
-
##
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
-
|
|
26
|
+
## Library Philosophy
|
|
27
|
+
> [!NOTE]
|
|
28
|
+
> This library will be continuously updated as ONVIF versions are updated. It uses a built-in WSDL that will always follow changes to the [ONVIF WSDL Specifications](https://github.com/onvif/specs). You can also use your own ONVIF WSDL file by adding the `wsdl_dir` argument; see [ONVIFClient Parameters](#onvifclient-parameters).
|
|
29
|
+
|
|
30
|
+
- **WYSIWYG (What You See is What You Get)**: Every ONVIF operation in the library mirrors the official ONVIF specification exactly. Method names, parameter structures, and response formats follow ONVIF standards without abstraction layers or renamed interfaces. What you see in the ONVIF documentation is exactly what you get in Python.
|
|
31
|
+
|
|
32
|
+
- **Device Variety Interoperability**: Built to handle the real-world diversity of ONVIF implementations across manufacturers. The library gracefully handles missing features, optional operations, and vendor-specific behaviors through comprehensive error handling and fallback mechanisms. Whether you're working with high-end enterprise cameras or budget IP cameras, the library adapts.
|
|
33
|
+
|
|
34
|
+
- **Official Specifications Accuracy**: All service implementations are generated and validated against official `ONVIF WSDL Specifications`. The library includes comprehensive test suites that verify compliance with ONVIF standards, ensuring that method signatures, parameter types, and behavior match the official specifications precisely.
|
|
35
|
+
|
|
36
|
+
- **Modern Python Approach**: Designed for excellent IDE support with full type hints, auto-completion, and immediate error detection. You'll get `TypeError` exceptions upfront when accessing ONVIF operations with wrong arguments, instead of cryptic `SOAP faults` later. Clean, Pythonic API that feels natural to Python developers while maintaining ONVIF compatibility.
|
|
37
|
+
|
|
38
|
+
- **Minimal Dependencies**: Only depends on essential, well-maintained libraries (`zeep` for SOAP, `requests` for HTTP). No bloated framework dependencies or custom XML parsers. The library stays lightweight while providing full ONVIF functionality, making it easy to integrate into any project without dependency conflicts.
|
|
34
39
|
|
|
35
40
|
## Who Is It For?
|
|
36
41
|
- **Individual developers** exploring ONVIF or building hobby projects
|
|
@@ -309,11 +314,12 @@ This library includes a powerful command-line interface (CLI) for interacting wi
|
|
|
309
314
|
<summary><b>1. Direct CLI</b></summary>
|
|
310
315
|
|
|
311
316
|
```bash
|
|
312
|
-
usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password PASSWORD] [--discover] [--filter FILTER] [--search SEARCH] [--page PAGE]
|
|
313
|
-
[--
|
|
317
|
+
usage: onvif [-h] [--host HOST] [--port PORT] [--username USERNAME] [--password PASSWORD] [--discover] [--filter FILTER] [--search SEARCH] [--page PAGE]
|
|
318
|
+
[--per-page PER_PAGE] [--timeout TIMEOUT] [--https] [--no-verify] [--no-patch] [--interactive] [--debug] [--wsdl WSDL]
|
|
319
|
+
[--cache {all,db,mem,none}] [--health-check-interval HEALTH_CHECK_INTERVAL] [--output OUTPUT] [--version]
|
|
314
320
|
[service] [method] [params ...]
|
|
315
321
|
|
|
316
|
-
ONVIF Terminal Client — v0.2.
|
|
322
|
+
ONVIF Terminal Client — v0.2.5
|
|
317
323
|
https://github.com/nirsimetri/onvif-python
|
|
318
324
|
|
|
319
325
|
positional arguments:
|
|
@@ -347,6 +353,9 @@ options:
|
|
|
347
353
|
Caching mode for ONVIFClient (default: all). 'all': memory+disk, 'db': disk-only, 'mem': memory-only, 'none': disabled.
|
|
348
354
|
--health-check-interval HEALTH_CHECK_INTERVAL, -hci HEALTH_CHECK_INTERVAL
|
|
349
355
|
Health check interval in seconds for interactive mode (default: 10)
|
|
356
|
+
--output OUTPUT, -o OUTPUT
|
|
357
|
+
Save command output to file. Supports .json, .xml extensions for format detection, or plain text. XML format automatically enables
|
|
358
|
+
debug mode for SOAP capture.
|
|
350
359
|
--version, -v Show ONVIF CLI version and exit
|
|
351
360
|
|
|
352
361
|
Examples:
|
|
@@ -367,7 +376,12 @@ Examples:
|
|
|
367
376
|
|
|
368
377
|
# Direct command execution
|
|
369
378
|
onvif devicemgmt GetCapabilities Category=All --host 192.168.1.17 --port 8000 --username admin --password admin123
|
|
370
|
-
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity={
|
|
379
|
+
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity={'PanTilt': {'x': -0.1, 'y': 0}} -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
380
|
+
|
|
381
|
+
# Save output to file
|
|
382
|
+
onvif devicemgmt GetDeviceInformation --host 192.168.1.17 --port 8000 --username admin --password admin123 --output device_info.json
|
|
383
|
+
onvif media GetProfiles --host 192.168.1.17 --port 8000 --username admin --password admin123 --output profiles.xml
|
|
384
|
+
onvif ptz GetConfigurations --host 192.168.1.17 --port 8000 --username admin --password admin123 --output ptz_config.txt --debug
|
|
371
385
|
|
|
372
386
|
# Interactive mode
|
|
373
387
|
onvif --host 192.168.1.17 --port 8000 --username admin --password admin123 --interactive
|
|
@@ -386,7 +400,7 @@ Examples:
|
|
|
386
400
|
<summary><b>2. Interactive Shell</b></summary>
|
|
387
401
|
|
|
388
402
|
```bash
|
|
389
|
-
ONVIF Interactive Shell — v0.2.
|
|
403
|
+
ONVIF Interactive Shell — v0.2.5
|
|
390
404
|
https://github.com/nirsimetri/onvif-python
|
|
391
405
|
|
|
392
406
|
Basic Commands:
|
|
@@ -594,7 +608,11 @@ onvif <service> <method> [parameters...] -H <host> -P <port> -u <user> -p <pass>
|
|
|
594
608
|
onvif devicemgmt GetCapabilities Category=All -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
595
609
|
|
|
596
610
|
# Move a PTZ camera
|
|
597
|
-
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity='{"PanTilt": {"x": 0.1}}' -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
611
|
+
onvif ptz ContinuousMove ProfileToken=Profile_1 Velocity='{"PanTilt": {"x": 0.1, "y": 0}}' -H 192.168.1.17 -P 8000 -u admin -p admin123
|
|
612
|
+
|
|
613
|
+
# Save output to file
|
|
614
|
+
onvif devicemgmt GetDeviceInformation --host 192.168.1.17 --port 8000 --username admin --password admin123 --output device_info.json
|
|
615
|
+
onvif media GetProfiles -H 192.168.1.17 -P 8000 -u admin -p admin123 -o profiles.xml
|
|
598
616
|
```
|
|
599
617
|
|
|
600
618
|
**4. ONVIF Product Search**
|
|
@@ -985,7 +1003,7 @@ Below is a list of ONVIF services implemented and supported by this library, alo
|
|
|
985
1003
|
| Service | Specifications | Service Definitions | Schema Files | Status |
|
|
986
1004
|
|------------------------|-------------------------------|-----------------------------|-------------------------------------|------------|
|
|
987
1005
|
| Device Management | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [device.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/device/wsdl/devicemgmt.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) | ✅ Complete |
|
|
988
|
-
| Events | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [event.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) |
|
|
1006
|
+
| Events | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Core.xml) | [event.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/events/wsdl/event.wsdl) | [onvif.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/onvif.xsd) <br> [common.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schema/common.xsd) | ✅ Complete |
|
|
989
1007
|
| Access Control | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/AccessControl.xml) | [accesscontrol.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/pacs/accesscontrol.wsdl) | [types.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/pacs/types.xsd) | ✅ Complete |
|
|
990
1008
|
| Access Rules | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/AccessRules.xml) | [accessrules.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/accessrules/wsdl/accessrules.wsdl) | - | ✅ Complete |
|
|
991
1009
|
| Action Engine | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/ActionEngine.xml) | [actionengine.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/actionengine.wsdl) | - | ✅ Complete |
|
|
@@ -1007,12 +1025,10 @@ Below is a list of ONVIF services implemented and supported by this library, alo
|
|
|
1007
1025
|
| Recording Control | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/RecordingControl.xml) | [recording.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/recording.wsdl) | - | ✅ Complete |
|
|
1008
1026
|
| Recording Search | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/RecordingSearch.xml) | [search.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/search.wsdl) | - | ✅ Complete |
|
|
1009
1027
|
| Replay Control | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Replay.xml) | [replay.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/replay.wsdl) | - | ✅ Complete |
|
|
1010
|
-
| Resource Query | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/ResourceQuery.xml) | - | | ❌ Any idea? |
|
|
1011
1028
|
| Schedule | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Schedule.xml) | [schedule.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/schedule/wsdl/schedule.wsdl) | - | ✅ Complete |
|
|
1012
1029
|
| Security | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Security.xml) | [advancedsecurity.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl) | - | ✅ Complete |
|
|
1013
1030
|
| Thermal | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Thermal.xml) | [thermal.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/thermal/wsdl/thermal.wsdl) | [radiometry.xsd](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver20/analytics/radiometry.xsd) | ✅ Complete |
|
|
1014
1031
|
| Uplink | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/Uplink.xml) | [uplink.wsdl](https://developer.onvif.org/pub/specs/branches/development/wsdl/ver10/uplink/wsdl/uplink.wsdl) | - | ✅ Complete |
|
|
1015
|
-
| WebRTC | [Document](https://developer.onvif.org/pub/specs/branches/development/doc/WebRTC.xml) | - | - | ❌ Any idea? |
|
|
1016
1032
|
|
|
1017
1033
|
</details>
|
|
1018
1034
|
|
|
@@ -1112,13 +1128,11 @@ Some ONVIF services have multiple bindings in the same WSDL. These typically inc
|
|
|
1112
1128
|
- [ ] Add more usage examples for advanced features.
|
|
1113
1129
|
- [ ] Add benchmarking and performance metrics.
|
|
1114
1130
|
- [ ] Add community-contributed device configuration templates.
|
|
1115
|
-
- [ ] Implement missing or partial ONVIF services.
|
|
1116
|
-
- [ ] Add function to expose ONVIF devices (for debugging purposes by the community).
|
|
1117
1131
|
|
|
1118
1132
|
## Related Projects
|
|
1119
1133
|
|
|
1120
1134
|
- [onvif-products-directory](https://github.com/nirsimetri/onvif-products-directory):
|
|
1121
|
-
This project is a comprehensive ONVIF data aggregation and management suite, designed to help developers explore, analyze, and process ONVIF-compliant product information from hundreds of manufacturers worldwide.
|
|
1135
|
+
This project is a comprehensive ONVIF data aggregation and management suite, designed to help developers explore, analyze, and process ONVIF-compliant product information from hundreds of manufacturers worldwide.
|
|
1122
1136
|
|
|
1123
1137
|
- (soon) [onvif-rest-server](https://github.com/nirsimetri/onvif-rest-server):
|
|
1124
1138
|
A RESTful API server for ONVIF devices, enabling easy integration of ONVIF device management, media streaming, and other capabilities into web applications and services.
|
|
@@ -1126,19 +1140,10 @@ Some ONVIF services have multiple bindings in the same WSDL. These typically inc
|
|
|
1126
1140
|
- (soon) [onvif-mcp](https://github.com/nirsimetri/onvif-mcp):
|
|
1127
1141
|
A Model Context Protocol (MCP) server for ONVIF, providing a unified API and context-based integration for ONVIF devices, clients, and services. It enables advanced automation, orchestration, and interoperability across ONVIF-compliant devices and clients.
|
|
1128
1142
|
|
|
1129
|
-
## Alternatives
|
|
1130
|
-
|
|
1131
|
-
If you are looking for other ONVIF Python libraries, here are some alternatives:
|
|
1132
|
-
|
|
1133
|
-
- [python-onvif-zeep](https://github.com/FalkTannhaeuser/python-onvif-zeep):
|
|
1134
|
-
A synchronous ONVIF client library for Python, using Zeep for SOAP communication. Focuses on compatibility and ease of use for standard ONVIF device operations. Good for scripts and applications where async is not required.
|
|
1135
|
-
|
|
1136
|
-
- [python-onvif-zeep-async](https://github.com/openvideolibs/python-onvif-zeep-async):
|
|
1137
|
-
An asynchronous ONVIF client library for Python, based on Zeep and asyncio. Suitable for applications requiring non-blocking operations and concurrent device communication. Supports many ONVIF services and is actively maintained.
|
|
1138
|
-
|
|
1139
1143
|
## References
|
|
1140
1144
|
- [ONVIF Official Specifications](https://www.onvif.org/profiles/specifications/specification-history/)
|
|
1141
1145
|
- [ONVIF Official Specs Repository](https://github.com/onvif/specs)
|
|
1146
|
+
- [ONVIF Application Programmer's Guide](https://www.onvif.org/wp-content/uploads/2016/12/ONVIF_WG-APG-Application_Programmers_Guide-1.pdf)
|
|
1142
1147
|
- [ONVIF 2.0 Service Operation Index](https://www.onvif.org/onvif/ver20/util/operationIndex.html)
|
|
1143
1148
|
- [Usage Examples](./examples/)
|
|
1144
1149
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# onvif/__init__.py
|
|
2
2
|
|
|
3
3
|
from .client import ONVIFClient
|
|
4
|
-
from .operator import
|
|
4
|
+
from .operator import CacheMode
|
|
5
5
|
from .utils import (
|
|
6
6
|
ONVIFWSDL,
|
|
7
7
|
ONVIFOperationException,
|
|
@@ -14,7 +14,6 @@ from .cli import main as ONVIFCLI
|
|
|
14
14
|
|
|
15
15
|
__all__ = [
|
|
16
16
|
"ONVIFClient",
|
|
17
|
-
"ONVIFOperator",
|
|
18
17
|
"CacheMode",
|
|
19
18
|
"ONVIFWSDL",
|
|
20
19
|
"ONVIFOperationException",
|
|
@@ -194,7 +194,7 @@ class InteractiveShell(cmd.Cmd):
|
|
|
194
194
|
" / __ \\/ | / / | / / _/ ____/",
|
|
195
195
|
" / / / / |/ /| | / // // /_ ",
|
|
196
196
|
"/ /_/ / /| / | |/ // // __/ ",
|
|
197
|
-
"\\____/_/ |_/ |___/___/_/ v0.2.
|
|
197
|
+
"\\____/_/ |_/ |___/___/_/ v0.2.5",
|
|
198
198
|
" ",
|
|
199
199
|
]
|
|
200
200
|
|
|
@@ -1400,7 +1400,7 @@ class InteractiveShell(cmd.Cmd):
|
|
|
1400
1400
|
super().do_help(line)
|
|
1401
1401
|
else:
|
|
1402
1402
|
help_text = f"""
|
|
1403
|
-
{colorize('ONVIF Interactive Shell — v0.2.
|
|
1403
|
+
{colorize('ONVIF Interactive Shell — v0.2.5', 'cyan')}\n{colorize('https://github.com/nirsimetri/onvif-python', 'white')}
|
|
1404
1404
|
|
|
1405
1405
|
{colorize('Basic Commands:', 'yellow')}
|
|
1406
1406
|
capabilities, caps - Show device capabilities
|